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

Описать структуру с именем STUDENT - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Объясните план изучения C++ http://www.cyberforum.ru/cpp-beginners/thread560535.html
мне один человек посоветовал такой план изучение С++(для самоучек) 1. Основа C++, с понятием об ООП. 2. Win32 API и параллельно подучить C++. 3. Изучение C++ глубже. 4. C++ .NET или начну изучать C# .NET Единственно что мне здесь не понятно это 2. Win32 API и параллельно подучить C++. Это мне надо учить и WinApi и С++ вмести я так понимаю?
C++ Быстрый алгоритм перестановки элементов одномерного массива Ищу быстрый алгоритм перестановки элементов одномерного массива. В массиве int, надо менять местами элементы для получения "популяции" на вход генетики. Должен работать быстро, несколько десятков раз подряд(если на выходе один массив) или давать менее m! массивов(m-количество элементов), т.е. с возможностью остановки алгоритма до генерации m! массивов. Можно только название алгоритма, если он... http://www.cyberforum.ru/cpp-beginners/thread560534.html
C++ Структура: Исключив из заданного массива данных типа data несуществующие даты, остальные напечатать, считая наименьшую дату началом года
typedef struct {int d, m;} data; Исключив из заданного массива данных типа data несуществующие даты, остальные напечатать, считая наименьшую дату началом года. (в году 365 дней)
Решение куб. уравнения. C++
решение кубического уравнения. Программа работает слишком медленно. (Не знаю в каком месте медленно, как по мне - так нормально) Есть кубическое уравнение вида A*X3 + B*X2 + C*X + D = 0. все корни уравнений – целые числа и находятся на отрезке . написать программу, которая поможет ему найти корни кубических уравнений! Я пишу так. Как известно, целочисленные корни уравнения являются...
C++ Файл: В текстовом файле подсчитать количество непустых строк. http://www.cyberforum.ru/cpp-beginners/thread560506.html
В текстовом файле подсчитать количество непустых строк.
C++ Вычислить по формуле помогите, очень надо решить..... подробнее

Показать сообщение отдельно
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
07.05.2012, 18:51     Описать структуру с именем STUDENT
KOPC1886 . Вот сортировка для двух студентов (скрин) как
видите все работает . Посмотрите на номера групп

код

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
164
165
166
167
168
169
170
171
172
173
174
175
176
/*
-------------   ОПИСАНИЕ РАБОТЫ  ---------
 
    1) СЧИТАЛИ С  ФАЙЛА --  ВЫВОД НА ЭКРАН 
 
    2) ОТСОРТИРОВАЛИ  --  ВЫВОД НА ЭКРАН 
 
    3) ВЫВОД НА ЭКРАН  СТУДЕНТОВ СО СР. БАЛЛОМ  БОЛЬШЕ 4.0
      ЕСЛИ НЕТ ВЫВОД СООБЩЕНИЯ,  ЧТО ТАКИХ НЕТ 
 
      ххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххх
      
      Файл должен содержать 10 строк :
      фамилия студента ,  номер группы и 5 оценок :
      Например :
 
      Ivanov 4 5 7 1.5 1 1
      Petrov 2 8 2 2 3 4
      Sidorov 3 3 3 3.1 3 1
 
              и т.д.
 
 
*/
#include <iostream>
#include <string.h>
#include <fstream>
#define SIZE 10  // кол-во структур 
#define ESIZE 5   // кол-во оценок 
 
   struct Student 
{ 
     char *family;   //  ФАМИЛИЯ 
     int numgroup;  // НОМЕР ГРУППЫ  
     float *eval;     // ОЦЕНКИ 
     float  avgrade;// average grade  СРЕДНИЙ БАЛ 
    Student()
     { 
         avgrade = 0.0;//  НАЧАЛЬНАЯ ИНИЦИАЛИЗАЦИЯ  
         numgroup = 0;
         family = new char[100];
         eval = new float[ESIZE];
         
     }
     ~Student(){
         delete[]family;
         delete[]eval;} 
 
 };
 
   void readFile(Student*,const char*);// ЧТЕНИЕ ИЗ ФАЙЛА и ВЫВОД НА ЭКРАН 
   void sortData(Student*);   // СОРТИРОВКА ПО НОМЕРУ ГРУППЫ 
   void outData(Student*);   // ВЫВОД НА ЭКРАН 
   void average_grade(Student*);     // СРЕДНИЙ БАЛЛ
   void outDataAvGrade(Student* ); // ВЫВОД  ПО  СРЕДНЕМУ БАЛЛУ
 
int main()
{ 
    Student stud[SIZE];
    char filename[70] = "file.txt";
    readFile(stud, filename);
    sortData(stud );
    outData(stud );
    average_grade(stud);
    outDataAvGrade(stud);
    return 0;
}
/////////////////////////////////////////////////////////
/////   ЧТЕНИЕ ИЗ ФАЙЛА и ВЫВОД НА ЭКРАН 
void readFile(Student* stud,const char* fname)
{    
   std::ifstream infile(fname);
    for(size_t i = 0; i < SIZE; i++)
    {
    std::cout << "\nStudent's family : ";
    infile >> stud[i].family ;
    std::cout << stud[i].family ;
    std::cout << "\nGroup's number : ";
    infile >> stud[i].numgroup ;
    std::cout << stud[i].numgroup ;
    std::cout << "\nA 5 evaluations : ";
    for(size_t j = 0; j < ESIZE; j++)
    {
    infile >> stud[i].eval[j] ;
    std::cout << stud[i].eval[j] << ' ';
    }
    std::cout  << std::endl;
    }
};
 
/////////////////////////////////////////////////////////
/////    СОРТИРОВКА ПО НОМЕРУ ГРУППЫ 
/////    фамилия , оценки и номер группы 
void sortData(Student* stud)
    {
    float evalbuf[ESIZE] = {{0.0}};
    size_t numbuf = 0, i, j;
    char familybuffer[100];
    bool flag = true;
     while(flag){
 
         flag = false;
for( i = 0; i < SIZE - 1; ++i)
    {
        if (stud[i + 1].numgroup < stud[i].numgroup) {
 
        numbuf = stud[i].numgroup;
        for( j = 0; j < ESIZE; j++)
        evalbuf[j] = stud[i].eval[j] ;
        strcpy(familybuffer,stud[i].family); 
 
        stud[i].numgroup = stud[i + 1].numgroup;
        for( j = 0; j < ESIZE; j++)
        stud[i].eval[j] = stud[i + 1].eval[j] ;
        strcpy(stud[i].family,stud[i + 1].family);
 
 
        stud[i + 1].numgroup = numbuf;
        for( j = 0; j < ESIZE; j++)
        stud[i + 1].eval[j] = evalbuf[j] ;
        strcpy(stud[i + 1].family, familybuffer); 
 
        flag = true;
        }
    }
     }
    }
///////////////////////////////////////////////////////////
    //   ВЫВОД ФАМИЛИИ, НОМЕРА ГРУППЫ И ОЦЕНОК  
        //      ПОСЛЕ СОРТИРОВКИ  
void outData(Student* stud)
{     std::cout << "\nAfter sort :\n";
     for(size_t i = 0; i < SIZE; i++)
     {
         
    std::cout << "\nStudent's family : " << stud[i].family ;
    std::cout << "\nGroup's number : " << stud[i].numgroup ;
    std::cout << "\nA 5 evaluations :\n";
    for(size_t j = 0; j < ESIZE; j++)
    std::cout <<  stud[i].eval[j] << ' ';
    std::cout  << std::endl;
    }
}
 
////////////////////////////////////////////////////
    // СРЕДНИЙ БАЛЛ КАЖДОГО СТУДЕНТА  
void average_grade(Student* stud)
{
     for(size_t i = 0; i < SIZE; i++)
     {
        for(size_t j = 0; j < ESIZE; j++)
        {
        stud[i].avgrade += stud[i].eval[j];
        }
     stud[i].avgrade /=  ESIZE;
     }
}
 
///////////////////////////////////////////////////////////
    //   ВЫВОД ФАМИЛИИ  СТУДЕНТОВ СО СР. БАЛЛОМ  БОЛЬШЕ 4.0
    // ЕСЛИ НЕТ -  ВЫВОД СООБЩЕНИЯ,  ЧТО ТАКИХ НЕТ 
void outDataAvGrade(Student* stud)
{    
    bool fl = false;
    std::cout << "\nStudents with average grade > 4.0  :\n";
     for(size_t i = 0; i < SIZE; i++)
     {
        if(stud[i].avgrade > 4.0) 
        {
            fl = true;
    std::cout  << " Family  "<< stud[i].family <<  " average grade " << stud[i].avgrade;
    std::cout  << std::endl;
        }
    }
     if(!fl) std::cout << " \tnot found .";
}
Миниатюры
Описать структуру с именем STUDENT  
 
Текущее время: 03:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru