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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Myaukolovo
0 / 0 / 0
Регистрация: 30.12.2011
Сообщений: 5
#1

Вывести список студентов с их оценками за разные предметы, со средним баллом студента - C++

30.12.2011, 15:24. Просмотров 1166. Ответов 7
Метки нет (Все метки)

ПОМОГИТЕ!! СРОЧНО!
нужно написать список студентов с их оценками за разные предметы, со средним баллом студента!
используя map и прочее..
я не понимаю, как это сделать..
кто-нибудь, можете ли вы помочь?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.12.2011, 15:24     Вывести список студентов с их оценками за разные предметы, со средним баллом студента
Посмотрите здесь:
C++ Распечатать список студентов со средним баллом выше общего среднего балла
C++ Структура "Студент". Вычислить средний балл группы и распечатать список студентов с низким средним баллом
C++ В группе студентов определи средний балл каждого за последнюю сессию, распечатать Ф.И.О. студентов со средним баллом не меньше 4, остальных рассор
C++ Удаление элементов списка со средним баллом студента, меньше заданного числа
Определить двух студентов с наивысшим средним баллом. C++
C++ Структуры в С++ и вывод студентов со средним баллом больше 7. Исправить код
Структуры и файлы (посчитать средний балл каждого студента и вывести фамилию студента с наибольшим баллом) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dimcoder
Полярный
453 / 426 / 66
Регистрация: 11.09.2011
Сообщений: 1,128
30.12.2011, 16:11     Вывести список студентов с их оценками за разные предметы, со средним баллом студента #2
Вам нужно структуру написать? Наработки есть? Список должен представлять из себя просто массив?
Myaukolovo
0 / 0 / 0
Регистрация: 30.12.2011
Сообщений: 5
30.12.2011, 16:15  [ТС]     Вывести список студентов с их оценками за разные предметы, со средним баллом студента #3
это должно выглядеть приблизительно так.. но тут не так немного ведь..
просто некоторые вещи я не понимаю поэтому не знаю, что исправить, чтобы было как нужно.

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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
#include <vector>
#include <iostream>
#include <cmath>
#include <map>
#include <fstream>
#include <string>
using namespace std;
 
int main(int argc, char* argv[]){
if (argc!=2) {
cout << "Введите 1 аргумент после названия команды!" << endl;
}
else {
 
map <string, string> m;
map <string, string>::iterator i=m.begin();
 
string s;
string v;
string w;
int j;
int o;
int b;
string menu;
ifstream f(argv[1]);
if(f.is_open()){
 
while (getline(f,s)) {
j=0;
while (j<s.size()) {
if (s[j]=='\t') {
for (o=0; o<j; o++) {
v=v+s[o];
}
for (o=j+1; o<s.size(); o++) {
w=w+s[o];
}
j=s.size();
}
j++;
}
m[v]=w;
cout << "familia: " << v << " ostalnoe: " << m[v] << endl;
v="";
w="";
}
cout << endl;
}
 
/Roma Komarov (i!=m.end()) {
cout << i->first << " " << i->second << endl;
i++;
}*/
 
if(f.eof()){
f.close();
};
 
cout << "Введите Просмотр, если хотите просмотреть данные обо всех пациентах." << endl << "Введите Ввести, если хотите ввести данные о пациентах." << endl << "Введите Найти, если хотите найти информацию о пациенте по фамилии." << endl << "Введите Сохранить, если хотите сохранить внесенные данные." << endl << "Введите Выход, если хотите выйти без сохранения." << endl;
cin >> menu;
while (menu!="Выход"){
if (menu=="Просмотр") {
cout << endl;
cout << "Пациенты: (" << m.size() << " человек)" << endl;
 
map <string, string>::iterator i=m.begin();
while (m.end()!=i) {
cout << i->first << " " << i->second << endl;
i++;
}
cout << endl;
}
 
string surn;
string firstn;
string father;
string date1;
string date2;
string diagnoz;
 
if (menu=="Ввести") {
 
cout << "Введите фамилию" << endl;
cin >> surn;
if (m.find(surn)!=m.end()) {
cout << "Фамилия " << surn << " уже есть" << endl;
}
else {
m[surn]="kustik";
 
cout << "Введите имя" << endl;cin >> firstn;
firstn=firstn+" ";
m[surn]=firstn;
 
cout << "Введите отчество" << endl;
cin >> father;
father=father+" ";
m[surn]=m[surn]+father;
 
cout << "Введите дату поступления" << endl;
cin >> date1;
date1=date1+" ";
m[surn]=m[surn]+date1;
 
cout << "Введите дату выписки" << endl;
cin >> date2;
date2=date2+" ";
m[surn]=m[surn]+date2;
 
cout << "Введите диагноз" << endl;
cin >> diagnoz;
m[surn]=m[surn]+diagnoz;
 
cout << endl << surn << " " << m[surn] << endl << endl;
 
}
}
 
int z;
string c;
if (menu=="Найти"){
cout << "Введите фамилию" << endl;
cin >> c;
 
z=0;
map <string, string>::iterator i=m.begin();
while (m.end()!=i) {
if (i->first==c) {
cout << endl << c << " " << m[c] << endl << endl;
i++;
}
else{
z++;
i++;
}
}
 
if (z>=m.size()) {
cout<<"Нет пациентов с такой фамилией" << endl;
}
}
 
if (menu=="Сохранить") {
ofstream of(argv[1]);
f.open(argv[1]);
if (of.is_open()) {
i=m.begin();
while (i!=m.end()) {
of << i->first << '\t' << i->second << endl;
i++;
}
}
of.close();
}
 
cout << "Введите Просмотр, если хотите просмотреть данные обо всех пациентах." << endl << "Введите Ввести, если хотите ввести данные о пациентах." << endl << "Введите Найти, если хотите найти информацию о пациенте по фамилии." << endl << "Введите Сохранить, если хотите сохранить внесенные данные." << endl << "Введите Выход, если хотите выйти без сохранения." << endl;
cin >> menu;
 
;}//while выход
 
}//скобюка, закрывающая else от if (argc!=2)
 
}//скобюка, закрывающая int main
dimcoder
Полярный
453 / 426 / 66
Регистрация: 11.09.2011
Сообщений: 1,128
30.12.2011, 16:26     Вывести список студентов с их оценками за разные предметы, со средним баллом студента #4
1) Пожалуйста отформатируйте код. Нечитабелен.
Цитата Сообщение от Myaukolovo Посмотреть сообщение
просто некоторые вещи я не понимаю
Так вы спрашивайте.
Myaukolovo
0 / 0 / 0
Регистрация: 30.12.2011
Сообщений: 5
30.12.2011, 16:44  [ТС]     Вывести список студентов с их оценками за разные предметы, со средним баллом студента #5
да я вообще ничего не понимаю, что к чему и где связь..
мне просто нужна программа, выводящая список студентов, их оценки за определенные предметы и средний балл.
как я понимаю, тут еще должен быть сам файл, к которому обращается программа, который она изменяет..
dimcoder
Полярный
453 / 426 / 66
Регистрация: 11.09.2011
Сообщений: 1,128
30.12.2011, 16:52     Вывести список студентов с их оценками за разные предметы, со средним баллом студента #6
Цитата Сообщение от Myaukolovo Посмотреть сообщение
как я понимаю, тут еще должен быть сам файл, к которому обращается программа, который она изменяет..
По моему про изменение файла ничего не говорилось. Могу написать прогу. Вид будет следующий:
Описываю структуру студент.
Делаю массив студентов.
Ввод с консоли, но если надо будет, переделать будет не трудно.
Ну ясен пень, можно будет редактировать, выводить.
Вам написать?
Myaukolovo
0 / 0 / 0
Регистрация: 30.12.2011
Сообщений: 5
30.12.2011, 17:06  [ТС]     Вывести список студентов с их оценками за разные предметы, со средним баллом студента #7
Буду очень благодарна, если напишите..

Добавлено через 4 минуты
Только нужно, чтобы пользователь сам мог изменять, вводить новую информацию, не обращаясь к коду. А только через консоль.

Добавлено через 46 секунд
Только нужно, чтобы пользователь сам мог изменять, вводить новую информацию, не обращаясь к коду. А только через консоль.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.12.2011, 20:21     Вывести список студентов с их оценками за разные предметы, со средним баллом студента
Еще ссылки по теме:
C++ Классы. Найти студентов академической группы со средним баллом более 75 баллов
Класс "Студент", найти студентов со средним баллом больше заданного C++
C++ Создать список студентов с оценками по нескольким дисциплинам. Отсортировать список по убыванию среднего балла. Имеющих двойки удалить из списка.
Вывести абитуриентов, проживающих в г.Минске и сдавших экзамены со средним баллом не ниже 8. C++
C++ Задание: Считать и вывести информацию об учениках со средним баллом выше данного значения

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

Или воспользуйтесь поиском по форуму:
dimcoder
Полярный
453 / 426 / 66
Регистрация: 11.09.2011
Сообщений: 1,128
30.12.2011, 20:21     Вывести список студентов с их оценками за разные предметы, со средним баллом студента #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Myaukolovo, написал, вроде всё правильно, но где то ошибка, не могу её найти. Программа вылетает, на одном и том же месте, я не понимаю почему. Код:
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#include <iostream.h>
#include <conio.h>
 
const int subjCount = 3;  //Сколько предметов у каждого студента
 
struct Student
{
   Student();
 
   float getAverage();
 
   void setFamily(const char *);
   void setName(const char *);
 
   const char * getFamily() {return family;}
   const char * getName() {return name;}
 
   void print();
 
   char family[30];
   char name[30];
 
   int subjCount;
   int marks[30];
};
 
Student::Student()
{
   for (int i = 0; i < 30; i++)
      marks[i] = 0;
}
 
void Student::print()
   {
      cout << "Family = " << getFamily() << "\nName = " << getName() << endl;
      cout << "Marks = ";
      for (int i = 0; i < subjCount; i++)
     cout << marks[i] << " ";
      cout << "Average mark = " << getAverage() << endl;
   };
 
float Student::getAverage()             //Count - number of subjects
{
   float sum = 0;
 
   for (int i = 0; i < subjCount; i++)
      sum += marks[i];
 
   return ((float)(sum/subjCount));
}
 
void editStudentInfo(Student &st)
{
   char buf[30];
   cout << "Family = ";
   cin >> buf;
   for (int i = 0; buf[i]; i++)
      st.family[i] = buf[i];
   st.family[i] = '\0';
 
   char buf2[30];
 
   cout << "Name = ";
   cin >> buf2;
 
 
   for (i = 0; buf2[i]; i++)
      st.name[i] = buf2[i];
   st.name[i] = '\0';
 
   cout << "Marks(" << subjCount << ") = ";
   for (i = 0; i < subjCount; i++)
      cin >> st.marks[i];
}
 
int main ()
{
   clrscr();
 
   Student st[30];
 
   cout << "Enter option:" << endl;
   cout << "Add student 1" << endl;
   cout << "Print student's info 2" << endl;
   cout << "Print all students info 3" << endl;
   cout << "Go out (0)" << endl;
 
   int n;
   int quantity = 0;
 
   cout << "Enter the number of the operation: ";
   cin >> n;
 
   while(n > 0)
   {
 
      switch(n)
      {
     case 1:
     {
        editStudentInfo(st[quantity]);
        quantity++;
     }
     break;
     case 2:
     {
        int x;
        cout << "Enter the number of the student you want to get info about: ";
        cin >> x;
        if ((x-1) < quantity)
           st[x-1].print();
        else
           cout << "This student doesnt exist!" << endl << endl;
     }
     break;
     case 3:
     for (int i = 0; i < quantity; i++)
     {
        cout << "Info about student No_" << i << ":" << endl;
        st[i].print();
        cout << endl;
     }
     break;
     default:
        cout << "End." << endl;
 
      }
      if(n > 3 || n <= 0)
       n = 0;
      else
      {
     cout << "Enter the number of the operation: ";
     cin >> n;
     cout << endl;
      }
   }
 
 
 
 
   getch();
 
   clrscr();
 
   return 0;
}
Yandex
Объявления
30.12.2011, 20:21     Вывести список студентов с их оценками за разные предметы, со средним баллом студента
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru