Технический форум

Технический форум (http://www.tehnari.ru/)
-   C/C++/С# (http://www.tehnari.ru/f42/)
-   -   Список студентов (http://www.tehnari.ru/f42/t105479/)

Ank2503 26.11.2015 21:25

Список студентов
 
Распечатать анкетные данные студентов, получивших за все время обучения одну оценку 3, а все остальные оценки — 4 и 5. C++.Не знаю почему, но в моем коде выводит всех студентов.

Код:

#include <iostream>
using namespace std;
void main()
{
        int o4=0, o3=0, o5=0;
        typedef struct{
                char f[20];
                int date;
                char k;
                int o[6];
        } Student;
        Student m[5];
        for (int i = 0; i < 5; i++)
        {
                cout << "Insert surname - ";
                cin >> m[i].f;
                cout << "Insert date - ";
                cin >> m[i].date;
                cout << "Insert kurs - ";
                cin >> m[i].k;
                        for (int j = 0; j < 6; j++)
                        {
                                cout << "Insert mark  " ;
                                cin >> m[i].o[j];
                        }
        }
        for (int i = 0; i < 5; i++)
        {
                for (int j = 0; j < 6; j++)
                {

                        if (m[i].o[j] == 3)
                                o3 = o3 + 1;
                        if (m[i].o[j] == 4)
                                o4 = o4 + 1;
                        if (m[i].o[j] == 5)
                                o5 = o5 + 1;
                }
        }                       
                for (int i = 0; i < 5; i++)
                {
                                                if (o3 = 1) if (o4 = 1) if (o5=1)
                        {
                                cout << "1." << m[i].f << endl;
                                cout << "2." << m[i].date << endl;
                                cout << "3." << m[i].k << endl;
                                cout << "4.";

                                for (int j = 0; j < 6; j++)
                                {

                                        cout << m[i].o[j]<<" ";

                                }
                                cout << endl;
                        }
                }
       
        system("pause");
}


MagentaTiger 27.11.2015 12:16

Ну во первых непонятно , что вы делаете во втором цикле, вы подсчитываете количество тех или иных оценок ВСЕХ студентов, что по условиям задачи совсем не нужно, вам нужно по каждому студенту отдельно
Во вторых в третьем цикле условия if не совпадают с постановкой задачи
Исправил бы так
Код:

#include <iostream>
using namespace std;
void main()
{
        int ox =0, o4=0, o3=0, o5=0;
        typedef struct{
                char f[20];
                int date;
                char k;
                int o[6];
                int condition; // признак попадания в условия задачи
        } Student;
        Student m[5];
        for (int i = 0; i < 5; i++)
        {
                cout << "Insert surname - ";
                cin >> m[i].f;
                cout << "Insert date - ";
                cin >> m[i].date;
                cout << "Insert kurs - ";
                cin >> m[i].k;
                        for (int j = 0; j < 6; j++)
                        {
                                cout << "Insert mark  " ;
                                cin >> m[i].o[j];
                        }
        }
        for (int i = 0; i < 5; i++)
        {
              ox = o3 = o4 = o5 = 0;
                for (int j = 0; j < 6; j++)
                {
// оценки меньше 3
                        if (m[i].o[j] < 3)
                          ox++;
                       
                        if (m[i].o[j] == 3)
                                o3++;
// проверять сколько 5 и 4 нет смысла
/*                        if (m[i].o[j] == 4)
                                o4++;
                        if (m[i].o[j] == 5)
                                o5++;
*/
                }
                m[i].condition = 0;
                if (ox==0 && o3==1) m[i].condition = 1;
        }                       
                for (int i = 0; i < 5; i++)
                {
                if (m[i].condition==1)
                        {
                                cout << "1." << m[i].f << endl;
                                cout << "2." << m[i].date << endl;
                                cout << "3." << m[i].k << endl;
                                cout << "4.";

                                for (int j = 0; j < 6; j++)
                                {

                                        cout << m[i].o[j]<<" ";

                                }
                                cout << endl;
                        }
                }
       
        system("pause");
}



Часовой пояс GMT +4, время: 05:20.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.