Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2017, 16:43   #1
alina999
 
Регистрация: 14.04.2017
Сообщений: 4
По умолчанию проверьте код, пожалуйста: Список студентов, который включает ФИО студента, группу, средний балл, доход на члена семьи. Вывести список очередности предоставления мест в общежитии

Написала код, но работает не так

вот условие:
Для получения места в общежитии формируется список студентов, ко-торый включает ФИО студента, группу, средний балл, доход на члена семьи. Общежитие в первую очередь предоставляется тем, у кого доход на члена се-мьи меньше двух минимальных зарплат, затем остальным в порядке уменьше-ния среднего балла. Вывести список очередности предоставления мест в обще-житии.


Помогите исправить

Код:
#include <iostream>
#include <iomanip>
#include <math.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>

using namespace std;

int main ()
{
    setlocale(LC_ALL,"Russian");

    struct strc
    {
        string name;
        double srbal;
        float dohod;

    }ob[2000];
float dohod1[10];
int stud, i,j,a,c;
float zp;
string b;
    cout << "Введите количество студентов" << endl;
    cin >> stud;
    cout << "Введите минимальную ЗП" << endl;
    cin >> zp;
        for (i=0;i<stud;i++)
        {

            cout<<"Студент: "<<endl;
            cin>>ob[i].name;
            cout<<"Средний балл "<<endl;
            cin>>ob[i].srbal;
            cout<<"Доход (руб)"<<endl;
            cin>>ob[i].dohod;
            cout<<endl;

        }
cout<<endl;

cout<<endl;
cout<<endl;
    for (j=0;j<stud;j++)
    {
      for (i=0;i<stud;i++)
        {
            if (ob[i].dohod>ob[i+1].dohod)
                {
                  a=ob[i+1].dohod;
                  ob[i+1].dohod=ob[i].dohod;
                  ob[i].dohod=a;

                  b=ob[i+1].name;
                  ob[i+1].name=ob[i].name;
                  ob[i].name=b;

                  c=ob[i+1].srbal;
                  ob[i+1].srbal=ob[i].srbal;
                  ob[i].srbal=c;
                }
        }
    }

ob[0].name='D';
ob[0].srbal=1;
ob[0].dohod=1;
ob[stud+1].name='D';
ob[stud+1].srbal=1;
ob[stud+1].dohod=1;



cout<<endl;
cout<<"Преобразование "<<endl;

    for (i=0;i<stud;i++)
    {
        for (j=0;j<stud;j++)
        {
            if (ob[i].dohod<ob[i+1].dohod)
            {
                if (ob[i].srbal>ob[i+1].srbal)
                {
                    a=ob[i].dohod;
                    ob[i].dohod=ob[i+1].dohod;
                    ob[i+1].dohod=a;

                    b=ob[i].name;
                    ob[i].name=ob[i+1].name;
                    ob[i+1].name=b;

                    c=ob[i].srbal;
                    ob[i].srbal=ob[i+1].srbal;
                    ob[i+1].srbal=c;
                }
            }

            if (ob[i].dohod>(zp*2))
            {
                if (ob[i].srbal<ob[i+1].srbal)
                {
                    a=ob[i].dohod;
                    ob[i].dohod=ob[i+1].dohod;
                    ob[i+1].dohod=a;

                    b=ob[i].name;
                    ob[i].name=ob[i+1].name;
                    ob[i+1].name=b;

                    c=ob[i].srbal;
                    ob[i].srbal=ob[i+1].srbal;
                    ob[i+1].srbal=c;
                }
            }

          if (ob[i].dohod<(zp*2))
            {
                if (ob[i].srbal<ob[i+1].srbal)
                {
                    a=ob[i].dohod;
                    ob[i].dohod=ob[i+1].dohod;
                    ob[i+1].dohod=a;

                    b=ob[i].name;
                    ob[i].name=ob[i+1].name;
                    ob[i+1].name=b;

                    c=ob[i].srbal;
                    ob[i].srbal=ob[i+1].srbal;
                    ob[i+1].srbal=c;
                }
            }
        }
    }

cout<<endl;
ob[0].name='D';
ob[0].srbal=1;
ob[0].dohod=1;
ob[stud+1].name='D';
ob[stud+1].srbal=1;
ob[stud+1].dohod=1;


    for (i=0;i<=stud;i++)
        {
            cout<<"Студент "<<ob[i].name<<endl;
            cout<<"Средний балл "<<ob[i].srbal<<endl;
            cout<<"Доход: "<<ob[i].dohod<<" руб"<<endl;

            cout<<endl;
        }

getch ();
}
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 14.04.2017 в 16:54.
alina999 вне форума Ответить с цитированием
Старый 14.04.2017, 16:50   #2
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Так а что исправить-то? Ну программа, ну что-то наверно делает..
...и добавьте в нее комментариев чуток, поясните, что каждый блок должен делать.
alexzk вне форума Ответить с цитированием
Старый 14.04.2017, 17:02   #3
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Код:
#include <iostream>
#include <iomanip>
#include <math.h>
#include <conio.h>
#include <string> // тут
#include <ctype.h>
#include <algorithm>

using namespace std;
struct Student
    {
        string name;
        double srbal;
        float dohod;

};
int main()
{
    setlocale(LC_ALL, "Russian");

    Student ob[2000];
    float dohod1[10];
    int stud, i, j, a, c;
    float zp;
    string b;
    cout << "Введите количество студентов" << endl;
    cin >> stud;
    cout << "Введите минимальную ЗП" << endl;
    cin >> zp;
    for (i = 0;i<stud;i++)
    {

        cout << "Студент: " << endl;
        cin>>ob[i].name;
        cout << "Средний балл " << endl;
        cin >> ob[i].srbal;
        cout << "Доход (руб)" << endl;
        cin >> ob[i].dohod;
        cout << endl;

    }
    cout << endl;

    cout << endl;
    cout << endl;
    /* Не понимаю, что тут происходит */
/*
    for (j = 0;j<stud;j++)
    {
        for (i = 0;i<stud;i++)
        {
            if (ob[i].dohod>ob[i + 1].dohod)
            {
                a = ob[i + 1].dohod;
                ob[i + 1].dohod = ob[i].dohod;
                ob[i].dohod = a;

                b = ob[i + 1].name;
                ob[i + 1].name = ob[i].name;
                ob[i].name = b;

                c = ob[i + 1].srbal;
                ob[i + 1].srbal = ob[i].srbal;
                ob[i].srbal = c;
            }
        }
    }

    ob[0].name = 'D';
    ob[0].srbal = 1;
    ob[0].dohod = 1;
    ob[stud + 1].name = 'D';
    ob[stud + 1].srbal = 1;
    ob[stud + 1].dohod = 1;



    cout << endl;
    cout << "Преобразование " << endl;

    for (i = 0;i<stud;i++)
    {
        for (j = 0;j<stud;j++)
        {
            if (ob[i].dohod<ob[i + 1].dohod)
            {
                if (ob[i].srbal>ob[i + 1].srbal)
                {
                    a = ob[i].dohod;
                    ob[i].dohod = ob[i + 1].dohod;
                    ob[i + 1].dohod = a;

                    b = ob[i].name;
                    ob[i].name = ob[i + 1].name;
                    ob[i + 1].name = b;

                    c = ob[i].srbal;
                    ob[i].srbal = ob[i + 1].srbal;
                    ob[i + 1].srbal = c;
                }
            }

            if (ob[i].dohod>(zp * 2))
            {
                if (ob[i].srbal<ob[i + 1].srbal)
                {
                    a = ob[i].dohod;
                    ob[i].dohod = ob[i + 1].dohod;
                    ob[i + 1].dohod = a;

                    b = ob[i].name;
                    ob[i].name = ob[i + 1].name;
                    ob[i + 1].name = b;

                    c = ob[i].srbal;
                    ob[i].srbal = ob[i + 1].srbal;
                    ob[i + 1].srbal = c;
                }
            }

            if (ob[i].dohod<(zp * 2))
            {
                if (ob[i].srbal<ob[i + 1].srbal)
                {
                    a = ob[i].dohod;
                    ob[i].dohod = ob[i + 1].dohod;
                    ob[i + 1].dohod = a;

                    b = ob[i].name;
                    ob[i].name = ob[i + 1].name;
                    ob[i + 1].name = b;

                    c = ob[i].srbal;
                    ob[i].srbal = ob[i + 1].srbal;
                    ob[i + 1].srbal = c;
                }
            }
        }
    }

    cout << endl;
    ob[0].name = 'D';
    ob[0].srbal = 1;
    ob[0].dohod = 1;
    ob[stud + 1].name = 'D';
    ob[stud + 1].srbal = 1;
    ob[stud + 1].dohod = 1;
*/

    std::sort(ob, ob + stud, [&zp](const Student& a, const Student& b)
    {
        if (a.dohod < zp + zp && b.dohod >= zp + zp)
            return true;
        if ((a.dohod >= zp + zp && b.dohod < zp + zp))
            return false;
        return a.srbal > b.srbal;
    }
    );
    

    for (i = 0;i < stud;i++)
    {
        cout << "Студент " << ob[i].name << endl;
        cout << "Средний балл " << ob[i].srbal << endl;
        cout << "Доход: " << ob[i].dohod << " руб" << endl;

        cout << endl;
    }

    getch();
}
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывести список студентов Pascal Program Паскаль, Turbo Pascal, PascalABC.NET 1 22.11.2015 18:03
Парни на вас надежда Pascal.Распечатать самый высокий средний балл группы и фамилии студентов, их имеющих Аня_Аня Помощь студентам 1 23.05.2012 17:49
Необходимо выяснить сколько студентов группы имеют средний балл, наименее всего отклоняющийся по абсолютному значению от среднего natik3 Помощь студентам 2 05.04.2012 23:24
Текстовый файл.Средний балл студентов Wild Angel Паскаль, Turbo Pascal, PascalABC.NET 1 22.03.2012 16:41
определить средний балл каждого студента Zzoyberg Помощь студентам 1 15.12.2011 20:21