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

Обработка структур с++ - C++

Восстановить пароль Регистрация
 
Woopulk Naivett
0 / 0 / 0
Регистрация: 07.02.2012
Сообщений: 8
07.02.2012, 14:35     Обработка структур с++ #1
Помогите мне, пожалуйста. Мне нужно разработать программу обработки структур. В программе
использовать структуру, содержащую поля с информацией об учащихся:
- фамилия и инициалы;
- дата рождения;
- номер группы;
- оценки за семестр по предметам: физика, математика, информатика, этика, психология.
Организовать ввод исходных данных, средний балл каждого учащегося рассчитайте по введенным оценкам.
Я не знаю, как организовать вывод анкетных данных учащихся по группам, упорядоченные по среднему баллу.
Вот код.
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
#include <iostream>
#include <conio.h>
#include <iomanip>
using namespace std;
//определяем структуру
struct Spisok
{
char Fam[20];
char Name[15];
char date[10]; 
int numberGr;
int Ball[5];
 
};
 main()
{
 
const int n=2;
Spisok stud[30]; // Создаем массив структур
int mas[n]={0};
for (int i=0; i<n; i++)
{
         cout<< "Фамилия и имя: ";
         cout<<"\t";
         cin>>stud[i].Fam>>stud[i].Name;
         cout<<"Дата рождения: ";
         cin>>stud[i].date;
         cout<<"Номер группы: ";
         cin>>stud[i].numberGr;
         cout<<"Введите оценки: \n";
         cout<< "Введите баллы по предметам: \n";
         cout<<"|математика | физика | Информатика || Этика || Психология |";
for (int j=0; j<5; j++)
{
cout<<"\t";
cin>> stud[i].Ball[j];
}
}
cout<<"\n" ;
cout<<"Имя" << '\t' << "Дата рождения"<<'\t'<<" Номер группы"<<'\t'<<" Средний балл"; 
cout<<"\n" ;
// подсчет среднего балла
for (int i=0; i<n; i++)
{
for (int j=0; j<5; j++)
mas[i]+=stud[i].Ball[j];
}
// вывод результата
for (int i=0; i<n; i++)
{
double sr= (double) mas[i]/5;
cout<<stud[i].Fam<<" "<<stud[i].Name<<"\t"<<stud[i].date<<'\t'<<stud[i].numberGr<<"\t"<<sr;
 
 
cout << "\n=========================================================================="<< endl;
 
cout<<endl;
}
getch();
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2012, 14:35     Обработка структур с++
Посмотрите здесь:

обработка массива структур C++
C++ Обработка массивов, строк и структур в функциях
C++ обработка структур данных.
Обработка динамических структур C++
C++ Формирование, сортировка и обработка динамических структур данных.
C++ Обработка массива структур
Обработка данных железнодорожного расписания. Массив структур C++
Обработка данных в виде массива структур средствами языка С++ C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
07.02.2012, 15:19     Обработка структур с++ #2
Цитата Сообщение от Woopulk Naivett Посмотреть сообщение
Я не знаю, как организовать вывод анкетных данных учащихся по группам, упорядоченные по среднему баллу.
Сортируем по группам, затем каждую группу сортируем по среднему баллу.

Добавлено через 35 минут
Вот
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
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
 
typedef std::string          T_str;
typedef float                T_real;
typedef struct stud
   {
      T_str name;
      T_str group;
      T_real ball;
   }                         T_stud;
typedef std::vector<T_stud>  T_vec;   
 
   
class students
{
private:   
    T_vec v;
public:
   students(const T_vec &_v): v(_v) {};
   friend std::ostream& operator<< (std::ostream& os, T_stud& st);
   void show() const
   {
      std::copy(std::begin(v), std::end(v), std::ostream_iterator<T_stud> (std::cout, "\n"));
   };
   void sort () 
   {
      std::sort(std::begin(v), std::end(v), [] (T_stud a, T_stud b) { return a.group < b.group; });
      
      for ( auto f = std::begin(v), l = std::find_if(f, std::end(v), 
                                   [&] (T_stud i) { return f->group != i.group; });
                 f != std::end(v) ; f = l , l = std::find_if
                              (f, std::end(v), [&] (T_stud i) { return f->group != i.group; }) )
         std::sort (f, l, [] (T_stud a, T_stud b) { return a.ball < b.ball; }); 
    };   
};
 
std::ostream& operator<< (std::ostream& os, const T_stud& st) 
{
        os << "name: "      << st.name;
        os << "\t group: "  << st.group;
        os << "\t ball: "   << st.ball;
        return os;
}  
 
int main()
{
   T_vec v = {{"Ivanov", "012", 4.1}, {"Petrov", "011", 2.1}, {"Sidorov", "012", 4.0}};
   students univer(v);
   
   univer.show();
   
   std::cout << std::endl;
   
   univer.sort();
   univer.show();
   
   std::cout << std::endl;
   
   return 0;   
}
http://liveworkspace.org/code/28113a...2f62d484419cc7

Добавлено через 21 секунду
Код
name: Ivanov	 group: 012	 ball: 4.1
name: Petrov	 group: 011	 ball: 2.1
name: Sidorov	 group: 012	 ball: 4

name: Petrov	 group: 011	 ball: 2.1
name: Sidorov	 group: 012	 ball: 4
name: Ivanov	 group: 012	 ball: 4.1
Yandex
Объявления
07.02.2012, 15:19     Обработка структур с++
Ответ Создать тему
Опции темы

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