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

Создать структуру: студент - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа с файлом (Создать структуру студент) http://www.cyberforum.ru/cpp-beginners/thread818114.html
помогите пожалуйста сделать( у меня не получается( Создать структуру студент(Фамилия, возраст, номер группы, средний балл). Считать из файла список студентов и вывести его на экран, отсортировав по фамилии. Отсортировать студентов по группам, а внутри группы по возрастанию среднего балла
C++ [Error] variable-sized object 'stepsInMaze' may not be initialized #include <iostream> #include <windows.h> #include <cstdlib> struct point { int x; int y; }; http://www.cyberforum.ru/cpp-beginners/thread818112.html
Код на основе метода простых итераций выдает ошибки C++
#include<iostream.h> #include<math.h> #include<conio.h> void main () { double Am={8,4,2,3,5,1,3,-2,10},Amm; double bb,r,xpred,xx; int i,j,k,n; double Bm={10, 5, 4},xpred,xx,err, max, temp, t; r = 0;
C++ Перегрузка функций
Помогите написать программу: Перегрузка функций. Написать перегруженные функции и основную программу, которая их вызывает. а) для деления целых чисел; б) для деления комплексных чисел. вот что написал: незнаю как сделать деление комплексных чисел(
C++ Сознатие графического приложения (Создать класс-наследник от FIGURE) http://www.cyberforum.ru/cpp-beginners/thread818066.html
1). Создать класс-наследник от FIGURE, который представляет собой красную сетку с размером ячейки 30 точек на белом фоне. В левом верхнем углу в текстовом виде необходимо отображать текущий размер ячейки. 2) Произвести одификацию класса таким образом, чтобы при нажатии на ‘+’ размер ячейки увеличивался на 10 точек, а при нажатии на ‘-‘, соответственно, уменьшался. ...
C++ Переписать, чтобы значения стали аргументами функции Добрый всем. Вот у меня есть программка но немного не правильный код. Значит вот условие: Написать функцию, находящую корни уравнения методом хорд. Аргументы этой функции: · указатель на функцию, задающую уравнение; · интервал ; · точность ε. Найти корни следующих уравнений: 3*x2-150*sin(x)=0 ex/2-x3+50=0 x3-x2-50=0 3x-x2=0 подробнее

Показать сообщение отдельно
ReasonX7
 Аватар для ReasonX7
47 / 46 / 2
Регистрация: 11.12.2011
Сообщений: 147
25.03.2013, 19:27     Создать структуру: студент
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
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
 
struct Student
{
    char surname[15];
    int age;
    char group[5];
    int mark;
};
 
void main()
{
    const int N = 20;
 
    FILE *f = fopen("file.txt", "r");
    int count_of_students;
    fscanf(f, "%i", &count_of_students);  // Кол-во студентов я вписал в файл, в первую строчку.
    Student students[N];
 
    for (int i = 0; i < count_of_students; i++)
    {
        fscanf(f, "%s", students[i].surname);
        fscanf(f, "%i", &students[i].age);
        fscanf(f, "%s", students[i].group);
        fscanf(f, "%i", &students[i].mark);
    }
 
    fclose(f);
 
    //===========================================================
 
        // Сортировка по группам.
    for (int i = 0; i < count_of_students; i++)
    {
        for (int j = 1; j < count_of_students; j++)
        {
            if (strcmp(students[j - 1].group, students[j].group) < 0)
            {
                Student tmp = students[j];
                students[j] = students[j];
                students[j] = tmp;
            }
        }
    }
 
    int middle_age[N], group_number = 0;  
    middle_age[0] = students[0].age;  // Инициализация среднего возраста для первой группы.
    for (int i = 1, k = 1; i < count_of_students; i++)
    {
        if (strcmp(students[i].group, students[i - 1].group) == 0)  // Если группа одна и та же:
        {
            middle_age[group_number] += students[i].age;   // приплюсовать возраст студента и 
            k++;                                                            // увеличить k.
        }
        else  // Если новая группа:
        {
            middle_age[group_number] /= k;         // Считаем средний возраст.
            k = 1;                                             // Сбиваем счетчик.
            group_number++;                           // Увеличиваем кол-во групп.
            middle_age[group_number] = students[i].age;   // Инициализация среднего возраста для следующей группы.
        }
    }
 
        // Вывод результата.
    printf("Group Age\n");
    for (int i = 0, k = 0; i < count_of_students && k <= group_number; i++)
    {
        if (strcmp(students[i + 1].group, students[i].group) != 0)  
        {
            printf("%s %i\n", students[i].group, middle_age[k]);
            k++;
        }
    }
    _getch();
}
Добавлено через 43 минуты
Нашел у себя пару ошибок. Вот поправленный код:
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
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
 
struct Student
{
    char surname[15];
    int age;
    char group[5];
    int mark;
};
 
void main()
{
    const int N = 20;
 
    FILE *f = fopen("file.txt", "r");
    int count_of_students;
    fscanf(f, "%i", &count_of_students);
    Student students[N];
 
    for (int i = 0; i < count_of_students; i++)
    {
        fscanf(f, "%s", students[i].surname);
        fscanf(f, "%i", &students[i].age);
        fscanf(f, "%s", students[i].group);
        fscanf(f, "%i", &students[i].mark);
    }
 
    fclose(f);
 
    //===========================================================
 
    for (int i = 0; i < count_of_students; i++)
    {
        for (int j = 1; j < count_of_students; j++)
        {
            if (strcmp(students[j - 1].group, students[j].group) < 0)
            {
                Student tmp = students[j];
                students[j] = students[j - 1];
                students[j - 1] = tmp;
            }
        }
    }
 
    int middle_age[N], group_number = 0;
    middle_age[0] = students[0].age;
    for (int i = 1, k = 1; i <= count_of_students; i++)
    {
        if (strcmp(students[i].group, students[i - 1].group) == 0)
        {
            middle_age[group_number] += students[i].age;
            k++;
        }
        else
        {
            middle_age[group_number] /= k;
            k = 1;
            group_number++;
            middle_age[group_number] = students[i].age;
        }
    }
 
    printf("Group Age\n");
    for (int i = 0, k = 0; i < count_of_students && k <= group_number; i++)
    {
        if (strcmp(students[i + 1].group, students[i].group) != 0)
        {
            printf("%s %i\n", students[i].group, middle_age[k]);
            k++;
        }
    }
    _getch();
}
 
Текущее время: 19:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru