0 / 0 / 0
Регистрация: 23.12.2022
Сообщений: 2
1

Вывести таблицу студентов, которые имеют только отличные оценки

23.12.2022, 10:26. Показов 356. Ответов 4
Метки #c++ (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Нужна помощь по задачке на c++, не получается выполнить. Нужно вывести таблицу, содержащую номера, фамилии, оценки студентов, которые имеют только отличные оценки.

Данные: Иванчук С.О. (оценки 4 3 3 4) Панченко И.А.(5 4 4 5) Заец О.М. (3 4 4 4) Вельбицький П.О(4 3 3 3) Сидоренко В.Р.(2 3 3 2) Кравченко З.И.(3 5 4 5) Якубов Р.Н.(5 4 4 3) Зоренко П.М.(4 2 3 3) Берестяк Г.С.(4 5 5 5) Дячик Н.С. (5 5 4 4)

Пробовал вручную всё прописывать, пробовал с помощью 2 файлов, но всё никак не получается(

Попытка:

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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
 
using namespace std;
 
int end(int ret = 0){cout << "\nEND\n"; return ret;}
 
template <typename T>
ostream& operator<<(ostream& out, vector<T>& vT)
{
    for(int i = 0; i < vT.size(); i++)
        out << vT[i] << ' ';
    return out;
}
 
class student
{
    string name, sname;
    vector<int> marks;
public:
    student();
    void get_marks(vector<int>&);
    void chng_mark(int, int);
    bool is_good_boy();
    friend ifstream& operator>>(ifstream&, student&);
    friend ostream& operator<<(ostream&, student&);
};
 
student::student(){}
void student::get_marks(vector<int>& in)
{
    marks = in;
}
void student::chng_mark(int wh, int tw)
{
    marks[wh] = tw;
}
bool student::is_good_boy()
{
    for(int i = 0; i < marks.size(); i++)
        if(marks[i] < 4)
            return false;
    return true;
}
ifstream& operator>>(ifstream& fin, student& s)
{
    fin >> s.name;
    fin >> s.sname;
    return fin;
}
ostream& operator<<(ostream& out, student& s)
{
    out << "Student: " << s.name << ' ' << s.sname << endl
        << "Marks[" << s.marks.size() << "]: " << s.marks << endl; 
    return out;
}
 
ostream& operator<<(ostream& out, vector<student>& vec)
{
    for(int i = 0; i < vec.size(); i++)
        out << vec[i] << endl;
    return out;
}
 
int main()
{
    vector<student> data;
    ifstream fin("ffam.txt");
 
    while(fin)
    {
        data.push_back(student());
        fin >> data.back();
    }
    data.pop_back();
    fin.close();
 
    fin.open("fnote.txt");
 
    vector<int> tm;
    int i = 0;
    while(fin)
    {
        tm.clear();
        while(fin && fin.peek() != '\n')
        {
            tm.push_back(int());
            fin >> tm.back();
        }
        fin.get();
        data[i].get_marks(tm);
        i++;
    }
    fin.close();
 
    cout << "All students:\n" << data;
    cout << "Only good boys:\n";
    for(int i = 0; i < data.size(); i++)
        if(data[i].is_good_boy())
            cout << data[i] << endl;
 
    return end();
}
Далее файл с фамилиями студентов:

Код
Иванчук С.О.
Панченко И.А.
Заец О.М.
Вельбицький П.О.
Сидоренко В.Р.
Кравченко З.И.
Якубов Р.Н.
Зоренко П.М.
Берестяк Г.С.
Дячик Н.С.
И файл с оценками:

Код
4 3 3 4
5 4 4 5
3 4 4 4
4 3 3 3
2 3 3 2
3 5 4 5
5 4 4 3
4 2 3 3
4 5 5 5
5 5 4 4
Компилятор же выдает это:

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
All students:
Student: Иванчук С.О.
Marks[41]: 4 3 3 4 5 4 4 5 3 4 4 4 4 3 3 3 2 3 3 2 3 5 4 5 5 4 4 3 4 2 3 3 4 5 5 5 5 5 4 4 0 
 
Student: Панченко И.А.
Marks[0]: 
 
Student: Заец О.М.
Marks[0]: 
 
Student: Вельбицький П.О.
Marks[0]: 
 
Student: Сидоренко В.Р.
Marks[0]: 
 
Student: Кравченко З.И.
Marks[0]: 
 
Student: Якубов Р.Н.
Marks[0]: 
 
Student: Зоренко П.М.
Marks[0]: 
 
Student: Берестяк Г.С.
Marks[0]: 
 
Student: Дячик Н.С.
Marks[0]: 
 
Only good boys:
Student: Панченко И.А.
Marks[0]: 
 
Student: Заец О.М.
Marks[0]: 
 
Student: Вельбицький П.О.
Marks[0]: 
 
Student: Сидоренко В.Р.
Marks[0]: 
 
Student: Кравченко З.И.
Marks[0]: 
 
Student: Якубов Р.Н.
Marks[0]: 
 
Student: Зоренко П.М.
Marks[0]: 
 
Student: Берестяк Г.С.
Marks[0]: 
 
Student: Дячик Н.С.
Marks[0]: 
 
 
END
 
 
** Process exited - Return Code: 0 **`**[/CODE][/CODE]
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2022, 10:26
Ответы с готовыми решениями:

Вывести список студентов, у которых только хорошие и отличные оценки
Задача. Входной файл st.txt содержит сведения о сдаче студентами группы экзаменационной сессии....

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

Текстовый файл. Напечатать таблицу, содержащую студентов, которые имеют хорошие и отличные оценки
Здравствуйте нужна ваша помощь. Вот задание : Напечатать таблицу, содержащую номера, фамилии,...

Вывести список студентов, которые не имеют ни одной оценки 4
Здравствуйте, друзья. Нуждаюсь в помощи: составить программу для вывода структуры по n студентам с...

Напишите подпрограмму чтобы выводился список только тех студентов, у которых только хорошие и отличные оценки.
Задание: Напишите подпрограмму чтобы выводился список только тех студентов, у которых только...

4
Модератор
Эксперт С++
13491 / 10747 / 6405
Регистрация: 18.12.2011
Сообщений: 28,680
23.12.2022, 11:03 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
....
    fin.clear();      //  !!!!!!!!!!!!!!!!!!
    fin.open("fnote.txt");
    
    vector<int> tm;
    int i = 0;
    while(fin)
    {
        tm.clear();
        char c;
        while(fin && fin.get(c) && c != '\n')   //  !!!!!!!!!!!!!!!!!!
        {
            tm.push_back(int());
            fin >> tm.back();
        }
        if(!fin)   //  !!!!!!!!!!!!!!!!!!
            break;
        data[i].get_marks(tm);
        i++;
    }
    fin.close();
1
0 / 0 / 0
Регистрация: 23.12.2022
Сообщений: 2
24.12.2022, 01:14  [ТС] 3
Компилятор выдал ряд ошибок
Код
main.cpp: In function 'int main()':
main.cpp:94:13: error: break statement not within loop or switch
   94 |             break;
      |             ^~~~~
main.cpp: At global scope:
main.cpp:98:5: error: 'fin' does not name a type
   98 |     fin.close();
      |     ^~~
main.cpp:100:5: error: 'cout' does not name a type
  100 |     cout << "All students:\n" << data;
      |     ^~~~
main.cpp:101:5: error: 'cout' does not name a type
  101 |     cout << "Only good boys:\n";
      |     ^~~~
main.cpp:102:5: error: expected unqualified-id before 'for'
  102 |     for(int i = 0; i < data.size(); i++)
      |     ^~~
main.cpp:102:20: error: 'i' does not name a type
  102 |     for(int i = 0; i < data.size(); i++)
      |                    ^
main.cpp:102:37: error: 'i' does not name a type
  102 |     for(int i = 0; i < data.size(); i++)
      |                                     ^
main.cpp:106:5: error: expected unqualified-id before 'return'
  106 |     return end();
      |     ^~~~~~
main.cpp:107:1: error: expected declaration before '}' token
  107 | }
      | ^


** Process exited - Return Code: 1 **
Весь код же вот:

Код
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
 
using namespace std;
 
int end(int ret = 0){cout << "\nEND\n"; return ret;}
 
template <typename T>
ostream& operator<<(ostream& out, vector<T>& vT)
{
    for(int i = 0; i < vT.size(); i++)
        out << vT[i] << ' ';
    return out;
}
 
class student
{
    string name, sname;
    vector<int> marks;
public:
    student();
    void get_marks(vector<int>&);
    void chng_mark(int, int);
    bool is_good_boy();
    friend ifstream& operator>>(ifstream&, student&);
    friend ostream& operator<<(ostream&, student&);
};
 
student::student(){}
void student::get_marks(vector<int>& in)
{
    marks = in;
}
void student::chng_mark(int wh, int tw)
{
    marks[wh] = tw;
}
bool student::is_good_boy()
{
    for(int i = 0; i < marks.size(); i++)
        if(marks[i] < 4)
            return false;
    return true;
}
ifstream& operator>>(ifstream& fin, student& s)
{
    fin >> s.name;
    fin >> s.sname;
    return fin;
}
ostream& operator<<(ostream& out, student& s)
{
    out << "Student: " << s.name << ' ' << s.sname << endl
        << "Marks[" << s.marks.size() << "]: " << s.marks << endl; 
    return out;
}
 
ostream& operator<<(ostream& out, vector<student>& vec)
{
    for(int i = 0; i < vec.size(); i++)
        out << vec[i] << endl;
    return out;
}
 
int main()
{
    vector<student> data;
    ifstream fin("ffam.txt");
 
    while(fin)
    {
        data.push_back(student());
        fin >> data.back();
    }
    data.pop_back();
    fin.close();
 
    fin.clear();      //  !!!!!!!!!!!!!!!!!!
    fin.open("fnote.txt");
    
    vector<int> tm;
    int i = 0;
    while(fin)
    {
        tm.clear();
        char c;
        while(fin && fin.get(c) && c != '\n')
            tm.push_back(int());
            fin >> tm.back();
        }
        if(!fin)   //  !!!!!!!!!!!!!!!!!!
            break;
        data[i].get_marks(tm);
        i++;
    }
    fin.close();
 
    cout << "All students:\n" << data;
    cout << "Only good boys:\n";
    for(int i = 0; i < data.size(); i++)
        if(data[i].is_good_boy())
            cout << data[i] << endl;
 
    return end();
}
0
2793 / 2303 / 701
Регистрация: 29.06.2020
Сообщений: 8,533
24.12.2022, 02:27 4
Sabishii, скобки посчитайте !
1
515 / 407 / 188
Регистрация: 08.04.2013
Сообщений: 1,739
24.12.2022, 06:53 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
#include <sstream>
 
 void get_marks(int);
 
void student::get_marks(int in)
{
    marks.push_back(in);
}
 
int main()
{
    setlocale(LC_ALL,"Rus");
    vector<student> data;
    ifstream fin("ffam.txt");
    student stud;
 
    while(fin >> stud)
    {
        data.push_back(stud);
    }
    fin.close();
    fin.open("fnote.txt");
 
    int i = 0;
    std::string textline;
    int mark;
    while (std::getline(fin, textline))
        {
         // один из способов перевести string to -> int  через поток
          std::istringstream text_stream(textline);
          while( text_stream >> mark )
                data[i].get_marks(mark);
           i++;
    //cout << textline << endl;
 }
    fin.close();
 
    cout << "All students:\n" << data;
    cout << "Only good boys:\n";
    for(int i = 0; i < data.size(); i++)
        if(data[i].is_good_boy())
            cout << data[i] << endl;
 
    return end();
}
1
24.12.2022, 06:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.12.2022, 06:53
Помогаю со студенческими работами здесь

Измените программу, чтобы выводился список только тех студентов, у которых только хорошие и отличные оценки
Измените программу, чтобы выводился список только тех студентов, у которых в) только хорошие и...

Подсчитать число студентов, имеющих все отличные оценки, в группе ЭТ5-94. Вывести фамилии, имена, отчества и величину стипендий этих студентов
Подсчитать число студентов, имеющих все отличные оценки, в группе ЭТ5-94. Вывести фамилии, ...

В файле, содержащем фамилии студентов и их оценки, записать большими буквами фамилии тех студентов, которые имеют средний балл более "4".
В файле, содержащем фамилии студентов и их оценки, записать большими буквами фамилии тех студентов,...

Посчитать среднее общее число студентов, получивших по результатам сессии хорошие и отличные оценки. Вывести средний про
Доброго времени суток, программисты! Столкнулся с такой проблемой. Нужно Посчитать среднее общее...

Найти процент студентов, которые имеют только 4 и 5
Добрый вечер, помогите новичку в VB2006 написать код программы. Дано информацию об оценках...

Файлы. Для студентов, имеющих все отличные оценки, заменить величину стипендии на повышенную и вывести по ним всю информацию, за исключением пола
Не могу понять, что и как делать. Подскажите, пожалуйста. Условия: Составить программу для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru