Форум программистов, компьютерный форум CyberForum.ru

Распечатать анкетные данные студентов, успевающих на 4 и 5 - C++

Восстановить пароль Регистрация
 
Hp
0 / 0 / 0
Регистрация: 24.10.2014
Сообщений: 46
23.11.2014, 20:47     Распечатать анкетные данные студентов, успевающих на 4 и 5 #1
Скажите, пожалуйста, как сделать, чтобы выводились все студенты, у кого 4 и 5.
Не получается, выводится только один по этому коду.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
//Распечатать анкетные данные студентов, успевающих на 4 и 5.
#include "stdafx.h"
#include <stdio.h>
#include <ctype.h>
#include <math.h>
#include <stdlib.h>
#include <iostream>
#include <conio.h>
 
using namespace std;
 
void main()
{
setlocale(LC_ALL, "Russian");
struct Student
{
char name [40];
int group;
int k;
int exam[100];
 
};
 
 
 
Student list[100];
 
int n=0;
 
cout << " введите количество студентов " << endl;
cin >> n;
 
for(int i = 0; i < n; i++) 
{
cout << "имя" << endl;
cin >> list[i].name;
 
cout << "группа" << endl;
cin >> list[i].group;
 
 
cout << " введите количество экзаменов " << endl;
cin >> list[i].k;
 
for(int j = 1; j <= list[i].k; j++) 
{
cout << "введите оценку за " << j << " экзамен " << endl;
cin >> list[i].exam[j];
}
cout << endl;
}
 
cout << "список студентов, имеющих 5 и 4" << endl;
 
for(int i = 0; i < n; i++)
{
for ( int j =0; j < list[i].k; j++)
{
if ((list[i].exam[j] == 4) || (list[i].exam[j] == 5)) 
{
j++;
 
}   
else {i++;}
 
}   cout << "Фамилия " << list[i].name << endl;
cout << "группа " << list[i].group << endl;
break;  
}
_getch();
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2014, 20:47     Распечатать анкетные данные студентов, успевающих на 4 и 5
Посмотрите здесь:

Распечатать анкетные данные студентов, имеющих оценку 4 по физике и оценку 5 по высшей математике. C++
Распечатать анкетные данные студентов интересующей вас группы. Фамилии студентов начинаются с букв I, F и G C++
Распечатать анкетные данные студентов, успевающих на 4 и 5 C++
Распечатать анкетные данные студентов-отличников из интересующей вас группы C++
C++ Распечатать анкетные данные студентов, получивших на последней сессии оценки "2".
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nosey
 Аватар для Nosey
1184 / 351 / 102
Регистрация: 22.10.2014
Сообщений: 786
Завершенные тесты: 2
23.11.2014, 21:37     Распечатать анкетные данные студентов, успевающих на 4 и 5 #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Hp, Используйте теги CODE

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
//Распечатать анкетные данные студентов, успевающих на 4 и 5.
#include "stdafx.h"
#include <stdio.h>
#include <ctype.h>
#include <math.h>
#include <stdlib.h>
#include <iostream>
#include <conio.h>
 
using namespace std;
 
void main()
{
    setlocale(LC_ALL, "Russian");
 
    struct Student
    {
        char name[40];
        int group;
        int k;
        int exam[100];
 
    };
 
 
 
    Student list[100];
 
    int n = 0;
 
    cout << " введите количество студентов " << endl;
    cin >> n;
 
    for (int i = 0; i < n; i++)
    {
        cout << "имя" << endl;
        cin >> list[i].name;
 
        cout << "группа" << endl;
        cin >> list[i].group;
 
 
        cout << " введите количество экзаменов " << endl;
        cin >> list[i].k;
 
        for (int j = 1; j <= list[i].k; j++)
        {
            cout << "введите оценку за " << j << " экзамен " << endl;
            cin >> list[i].exam[j];
        }
        cout << endl;
    }
 
    cout << "список студентов, имеющих 5 и 4" << endl;
 
    for (int i = 0; i < n; i++)
    {
        bool successExam = true;
        for (int j = 1; j < list[i].k; j++)
        {
            if ((list[i].exam[j] != 4) && (list[i].exam[j] != 5))
            {
                successExam = false;
                break;
            }
        }
        if (successExam)
        {
            cout << "Фамилия " << list[i].name << endl;
            cout << "группа " << list[i].group << endl;
        }
    }
    _getch();
}
TyLinka
32 / 32 / 11
Регистрация: 02.02.2012
Сообщений: 177
23.11.2014, 21:44     Распечатать анкетные данные студентов, успевающих на 4 и 5 #3
Мне кажется, что проще сделать так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
for(int i = 0; i < n; i++)
    {
        bool f = true;
        for ( int j =0; j < list[i].k; j++)
        {
            if (list[i].exam[j] < 4)
            {
                f = false;
                cout << list[i].exam[j] << endl;
            }
            
        }
        if (f)
        {
            cout << "Фамилия " << list[i].name << endl;
            cout << "группа " << list[i].group << endl;
        }
    }
Проблема была здесь:
Цитата Сообщение от Hp Посмотреть сообщение
for(int j = 1; j <= list[i].k; j++)
{
cout << "введите оценку за " << j << " экзамен " << endl;
cin >> list[i].exam[j];
}
cout << endl;
}
Сделать так:
C++
1
2
3
4
5
       for(int j = 0; j < list[i].k; j++)
        {
            cout << "введите оценку за " << j+1 << " экзамен " << endl;
            cin >> list[i].exam[j];
        }
Hp
0 / 0 / 0
Регистрация: 24.10.2014
Сообщений: 46
23.11.2014, 22:09  [ТС]     Распечатать анкетные данные студентов, успевающих на 4 и 5 #4
неправильно работает. когда 3 студента, то нормально, когда больше уже путается выводит по 2 варианта подряд иногда и неверные тоже туда же выводит но не все. в общем не то.
Nosey
 Аватар для Nosey
1184 / 351 / 102
Регистрация: 22.10.2014
Сообщений: 786
Завершенные тесты: 2
23.11.2014, 22:20     Распечатать анкетные данные студентов, успевающих на 4 и 5 #5
Hp, Попробуйте ещё раз скопировать код из темы
Yandex
Объявления
23.11.2014, 22:20     Распечатать анкетные данные студентов, успевающих на 4 и 5
Ответ Создать тему
Опции темы

Текущее время: 05:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru