Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

ПОМОГИТЕ!! СРОЧНО!
нужно написать список студентов с их оценками за разные предметы, со средним баллом студента!
используя map и прочее..
я не понимаю, как это сделать..
кто-нибудь, можете ли вы помочь?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.12.2011, 15:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести список студентов с их оценками за разные предметы, со средним баллом студента (C++):

Распечатать список студентов со средним баллом выше общего среднего балла - C++
Вычислить общий средний балл всех студентов и распечатать список студентов со средним баллом выше общего среднего балла.

Структура "Студент". Вычислить средний балл группы и распечатать список студентов с низким средним баллом - C++
Ввести сведения о 8 студентах:фамилия, год рождения, рейтинг по предметам:алгоритмизация, история, дискретный анализ. Вычислить средний...

В группе студентов определи средний балл каждого за последнюю сессию, распечатать Ф.И.О. студентов со средним баллом не меньше 4, остальных рассор - C++
Пожалуйста помогите с программой ,очень необходима! С обязательным применением функций, исходные данные или результат или и то и другое...

Удаление элементов списка со средним баллом студента, меньше заданного числа - C++
Реализовать односвязный список для хранения данных вида: ФИО, группа, средний балл. Обеспечить выполнение операций: добавление...

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

Структуры в С++ и вывод студентов со средним баллом больше 7. Исправить код - C++
Помогите с заданием, кто понимает. Составить программу формирования файла, содержащего Ведомость студентов, сдававших сессию, содержит...

7
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,138
30.12.2011, 16:11 #2
Вам нужно структуру написать? Наработки есть? Список должен представлять из себя просто массив?
0
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
0
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,138
30.12.2011, 16:26 #4
1) Пожалуйста отформатируйте код. Нечитабелен.
Цитата Сообщение от Myaukolovo Посмотреть сообщение
просто некоторые вещи я не понимаю
Так вы спрашивайте.
0
Myaukolovo
0 / 0 / 0
Регистрация: 30.12.2011
Сообщений: 5
30.12.2011, 16:44  [ТС] #5
да я вообще ничего не понимаю, что к чему и где связь..
мне просто нужна программа, выводящая список студентов, их оценки за определенные предметы и средний балл.
как я понимаю, тут еще должен быть сам файл, к которому обращается программа, который она изменяет..
0
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,138
30.12.2011, 16:52 #6
Цитата Сообщение от Myaukolovo Посмотреть сообщение
как я понимаю, тут еще должен быть сам файл, к которому обращается программа, который она изменяет..
По моему про изменение файла ничего не говорилось. Могу написать прогу. Вид будет следующий:
Описываю структуру студент.
Делаю массив студентов.
Ввод с консоли, но если надо будет, переделать будет не трудно.
Ну ясен пень, можно будет редактировать, выводить.
Вам написать?
0
Myaukolovo
0 / 0 / 0
Регистрация: 30.12.2011
Сообщений: 5
30.12.2011, 17:06  [ТС] #7
Буду очень благодарна, если напишите..

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

Добавлено через 46 секунд
Только нужно, чтобы пользователь сам мог изменять, вводить новую информацию, не обращаясь к коду. А только через консоль.
0
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,138
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;
}
0
30.12.2011, 20:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.12.2011, 20:21
Привет! Вот еще темы с ответами:

Структуры и файлы (посчитать средний балл каждого студента и вывести фамилию студента с наибольшим баллом) - C++
У меня есть структура и файл, в котором находятся фамилии и оценки учащихся, как мне посчитать средний балл каждого студента и вывести...

Классы. Найти студентов академической группы со средним баллом более 75 баллов - C++
Всем привет! Маю вот такую задачу. Создать класс TStudent в котором предусмотреть: атрибуты имя , фамилия , группа , массив оценок за...

Класс "Студент", найти студентов со средним баллом больше заданного - C++
Вводится база из 7 студентов(Ф И О, средний бал аттестата) – выводится на экран ср. бал больше 4. помогите с решением, все, на что...

Создать список студентов с оценками по нескольким дисциплинам. Отсортировать список по убыванию среднего балла. Имеющих двойки удалить из списка. - C++
Помогите сделать лабу задание:Создать список студентов с оценками по нескольким дисциплинам. Отсортировать список по убыванию среднего...


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

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

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