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

Обработка структур данных - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Инициализация std::set http://www.cyberforum.ru/cpp-beginners/thread542783.html
Как наиболее грамотно инициализировать std::set <std::pair <std::string, std::string> > значениями, переданными в программу через аргумент argv (первый элемент std::pair - нечётный элемент argv, второй - чётный)? В случае с std::vector <std::string> всё делается при помощи конструктора: std::vector <std::string> args (argv, argv + argc); А в случае с std::set что лучше сделать?
C++ Чтение и запись чисел в mailslot Здравствуйте! Задание: написать 2 программы. Первая программа отправляет 2 float числа второй программе, вторая программа складывает эти числа и отправляет их первой программе. Использовать почтовые ячейки для обмена данными. Вопрос вот в чем: отлично получается передавать через ячейки строки типа LPTSTR но с числами float проблема. В какой формат преобразовать float, чтобы можно было... http://www.cyberforum.ru/cpp-beginners/thread542770.html
Странности при вводе из файла C++
Программа должна получать данные из файла.... Примечательно, что она их получает корректно только при определенном положении слов в файлике. Подскажите, что я делаю не так. //--------------------------------------------------------------------------- #include <iostream> #include <fstream> #include <stdlib> #include <vcl.h> #pragma hdrstop ...
C++ Печать динамеческого массива через функцию.
Вобшем проблема такая: как передать функции массив, размер которого не известен? #include <iostream> #include <stdlib.h> using namespace std; void print(int n, char mass2){ //Как я должен принять mass и ... for(int i=0;i<n;i++){
C++ Не могу разобраться с указателями http://www.cyberforum.ru/cpp-beginners/thread542738.html
Здравствуйте, никак не могу разобраться с этими указателями, вот есть одна функция: //Вводимо матрицю int **Matrix(int n) {int **matr = new int *; for (int i = 0; i < n; ++i) matr = new int ; for(int i = 0; i < n; i++) {for(int j = 0; j < n; j++) {cout << "\n Vvedit` element ryadka " <<i+1 <<" stovbcya " <<j+1 <<" : "; cin >> matr;}}
C++ Quick sort, не понятно некоторые моменты. здравствуйте нужно реализовать quicksort Есть код с учебника по которому мы учимся, и вот не понятно некоторые моменты кода template <typename T> void quick_sort(vector<T>& v, int low, int high) { // Do not solve recursively when faced with // only 1 or 2 elements подробнее

Показать сообщение отдельно
Chainik_:(
Сообщений: n/a

Обработка структур данных - C++

08.04.2012, 19:05. Просмотров 434. Ответов 0
Метки (Все метки)

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

--------------------------------------------------------------
Ф.И.О. !Группа ! Экзамены
студента! !-----------------------------------------
! ! 1 экз. ! ... ! N экз.
---------------------------------------------
! !наименование!оценка! ... !наименование!оценка
---------------------------------------------------------------
Определить средний балл по каждой дисциплине.

Результат вывести в форме:

----------------------------------
Дисциплина ! Средний балл !
__________________________________!
Замечанеие: наименование дисциплин у различных групп могут не
совпадать.
а это то что у меня получилось:
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
using namespace std;
struct EXAM
{
    char discipline[40];
    unsigned int mark;
    EXAM *Next_exam;
};
 
struct STUDENT
{                
  char Name[60];  
  char group[20];
  unsigned int exam_number;
  EXAM *exam_ptr;
  STUDENT *Next_student;
 };
STUDENT *f_st,*h_st,*p_st; //объявляем указатели типа стркутры студенты и экзамены
EXAM *h_ex,*p_ex; 
//вводим структуру
void enter_struct_student()
{
    
    int number_st, number_ex, i, j;
    cout<<"Enter number of students"<<endl; //количество студентов
    cin>>number_st;
 
    f_st=new STUDENT[number_st]; //выделяем память - динамическим массивом типа студенты
    h_st=f_st;
    for (i=1;i<=number_st;i++) { 
    cout << "Name of the  " << i << "  student: "; 
    cin>>h_st->Name; 
    cout << "Group of the  student: "; 
    cin>>h_st->group;
    cout<<"Enter number of exams"<<endl;
    cin>>number_ex;
    h_st->exam_ptr=new EXAM[number_ex]; //выделяем память под структуру экзамены равную количеству экзаменов (массив записей) 
    h_st->exam_number=number_ex; //присваиваем количество экзамнов в структуре студенты
    h_ex=h_st->exam_ptr; //присваиваем массиву записей структура количество экзаменов, содержащихся в структуре студенты  
for (j=1;j<=number_ex;j++) { 
cout << "\tName of the " << j << "discipline: "; 
cin >> h_ex->discipline; 
cout << "\tMark of the" <<j<<"exam:"; 
cin >> h_ex->mark; 
if (j<number_ex)
{
    h_ex->Next_exam=new EXAM[number_ex];
    h_ex=h_ex->Next_exam;
} 
} 
if (i<number_st) { 
h_st->Next_student=new STUDENT[number_st];; 
h_st=h_st->Next_student;
} else { 
h_st->Next_student=0; 
}
    }
 
    return;
}
//выводим базу
void read_base() { 
int i,se; 
cout << "*****"<<endl; 
cout<<"|______________________________________________________________________________|\n"; 
cout<<"|Name         | Group     |N     | Exams                                       |\n";
cout<<"|             |           |of    | ____________________________________________|\n";
cout<<"|             |           |exams |Discip                 |   Mark              |\n";
cout<<"|______________________________________________________________________________|\n";
h_st=f_st;
while (h_st) { 
se=h_st->exam_number; 
h_ex=h_st->exam_ptr; 
printf("%13s | %9s |  %10d   \n", h_st->Name,h_st->group,se);
cout<<"|______________________________________________________________________________|\n";
for (i=1;i<=se;i++) { 
printf("%33d| %21s | %18d  |\r",i, h_ex->discipline,h_ex->mark);
cout<<"|______________________________________________________________________________|\n";
h_ex=h_ex->Next_exam; 
 
cout<<endl; 
} 
h_st=h_st->Next_student; 
 
} 
 
cout << "*****\n";  
return; 
    }
void main()
{ 
    enter_struct_student();
    read_base();
    system("pause");
}
на данном этапе все застопорилось по сути на основной части - на обработке.

Итак, вопрос таков, поскольку в замечании сказано, что дисциплины у различных групп могут не совпадать.
А это значит мне нужно посчитать количество дисциплин для каждой, затем узнать сумму баллов для каждой дисциплины и разделить на количество таких дисциплин.
проблема в том, что я даже алгоритмически с трудом представляю, как это реализовать, пожалуйста, помогите?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru