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

Массив структур "Студенты". Исправить код - C++

Восстановить пароль Регистрация
 
Dionisius
0 / 0 / 0
Регистрация: 19.10.2013
Сообщений: 110
16.03.2014, 18:23     Массив структур "Студенты". Исправить код #1
Массив структур содержит информацию о студентах группы: в первом поле стоит фамилия, во втором - возраст, в третьем - рост, в четвертом - средний балл за сессию и т.д. (i-ый элемент массива описывает i-го студента).
Студент называется среднестатистическим по k-му параметру, если на нём достигается минимум модуля разности среднего арифметического чисел k-го столбца и значения k-го параметра этого студента. Аналогично определяется уникальный по k-му параметру студент (на нём достигается максимум).
Студент называется самым средним если он является среднестатистическим по самому большому количеству параметров. Аналогично определяется самый уникальный студент.
Выяснить, кто является в группе самым средним и самым уникальным.

Вот программа:
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
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <math.h>
#define n 5
struct pupil
{
       char name[10];
       int age;
       int height;
       int score;
       };
       static float sr_a, sr_h, sr_s;
       int main()
       {
           int i;
           struct pupil class1[5]=
           {
                  "Ivanov", 17, 176, 5,
                  "Petrov", 18, 167, 4,
                  "Sidorov", 18, 171, 5,
                  "Nikolaev", 17, 180, 4,
                  "Kozlov", 17, 170, 4};
                  for (i=0; i<n; i++)
                  {print(class1[i]);
              }
                      sred (class1);
                      srednestat(class1);
                      }
       void print (struct pupil a)
       {
            printf("\n%s \t%d \t%d \t%d \n", a.name, a.age, a.height, a.score);
            }
            void sred (struct pupil a)
            {
                 int i;
                 for (i=0; i<n; i++)
                 {
                     sr_a=sr_a+a[i].age;
                     sr_h=sr_h+a[i].height;
                     sr_s=sr_s+a[i].score;
                     }
                     sr_a=sr_a/n;
                     sr_h=sr_h/n;
                     sr_s=sr_s/n;
                     printf("\n%f, %f, %f", sr_a, sr_h, sr_s);
            }
            void srednestat (struct pupil *a)
            {
                struct pupil sr;
                static int sred[n][3], sum [n], i, max;
                float min;
                for(i=0; min=100; i++){
                    if(fabs(sr_a-a[i].age)<min)
                    min=fabs(sr_a-a[i].age);};
                    for (i=0; i<n; i++)
                    {if(fabs(sr_a-a[i].age)==min)
                    {sred [i][0]=1;}
                }
                for (i=0, min=100; i<n; i++)
                {if (fabs(sr_h-a[i].height)<min)
                min=fabs(sr_h-a[i].height);
                }
                for(i=0; i<n; i++)
                {if(fabs(sr_h-a[i].height)==0)
                sred[i][1]=1;
            }
            for (i=0; i<n; i++)
            {if (fabs(sr_h-a[i].score)<min)
                min=fabs(sr_h-a[i].score);}
                for (i=0; i<n; i++)
                {if (fabs(sr_s-a[i].score)==0)
                sred[i][2]=1;}
                for(i=0; i<n; i++)
                {sum[i]=sred[i][0]+sred[i][1]+sred[i][2];
                }
                for (i=0, max=0; i<n; i++)
                {if (sum[i]>max)
                {max=sum[i];
                //sr=a[i];
                strcpy(sr.name,a[i].name);
                sr.age=a[i].age;
                sr.height=a[i].height;
                sr.score=a[i].score;
                }
                }
                printf("srednestat, %s %d %d %d", sr.name, sr.age, sr.height, sr.score);
                getch();
        }
Найдите ошибки в программе и исправьте их.

Добавлено через 20 минут
если увидите ошибки не забудьте пояснить
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.03.2014, 03:49     Массив структур "Студенты". Исправить код #2
Цитата Сообщение от Dionisius Посмотреть сообщение
Найдите ошибки в программе
А компилятор не находит?
1>main.cpp(25): error C3861: print: идентификатор не найден
1>main.cpp(27): error C3861: sred: идентификатор не найден
1>main.cpp(28): error C3861: srednestat: идентификатор не найден
1>main.cpp(39): error C2676: бинарный "[": "pupil" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору
1>main.cpp(39): error C2228: выражение слева от ".age" должно представлять класс, структуру или объединение
1>main.cpp(40): error C2676: бинарный "[": "pupil" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору
1>main.cpp(40): error C2228: выражение слева от ".height" должно представлять класс, структуру или объединение
1>main.cpp(41): error C2676: бинарный "[": "pupil" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору
1>main.cpp(41): error C2228: выражение слева от ".score" должно представлять класс, структуру или объединение
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Dionisius
0 / 0 / 0
Регистрация: 19.10.2013
Сообщений: 110
17.03.2014, 09:33  [ТС]     Массив структур "Студенты". Исправить код #3
находит, но я просто не могу исправить эти ошибки
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
17.03.2014, 10:25     Массив структур "Студенты". Исправить код #4
Перенеси функцию main в конец файла.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.03.2014, 10:29     Массив структур "Студенты". Исправить код #5
Вот так компилируется:
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
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <math.h>
 
#define n 5
 
struct pupil
{
    char name[10];
    int age;
    int height;
    int score;
};
 
static float sr_a, sr_h, sr_s;
 
void print (struct pupil a);
void sred (struct pupil* a);
void srednestat (struct pupil *a);
 
int main()
{
    int i;
    struct pupil class1[5]=
    {
        "Ivanov", 17, 176, 5,
        "Petrov", 18, 167, 4,
        "Sidorov", 18, 171, 5,
        "Nikolaev", 17, 180, 4,
        "Kozlov", 17, 170, 4};
        for (i=0; i<n; i++)
        {
            print(class1[i]);
        }
        sred (class1);
        srednestat(class1);
}
 
void print (struct pupil a)
{
    printf("\n%s \t%d \t%d \t%d \n", a.name, a.age, a.height, a.score);
}
 
void sred (struct pupil* a)
{
    int i;
    for (i=0; i<n; i++)
    {
        sr_a=sr_a+a[i].age;
        sr_h=sr_h+a[i].height;
        sr_s=sr_s+a[i].score;
    }
    sr_a=sr_a/n;
    sr_h=sr_h/n;
    sr_s=sr_s/n;
    printf("\n%f, %f, %f", sr_a, sr_h, sr_s);
}
 
void srednestat (struct pupil *a)
{
    struct pupil sr;
    static int sred[n][3], sum [n], i, max;
    float min;
    for(i=0; min=100; i++)
    {
        if(fabs(sr_a-a[i].age)<min)
            min=fabs(sr_a-a[i].age);
    }
    for (i=0; i<n; i++)
    {
        if(fabs(sr_a-a[i].age)==min)
            {sred [i][0]=1;}
    }
    for (i=0, min=100; i<n; i++)
    {
        if (fabs(sr_h-a[i].height)<min)
            min=fabs(sr_h-a[i].height);
    }
    for(i=0; i<n; i++)
    {
        if(fabs(sr_h-a[i].height)==0)
            sred[i][1]=1;
    }
    for (i=0; i<n; i++)
    {
        if (fabs(sr_h-a[i].score)<min)
            min=fabs(sr_h-a[i].score);
    }
    for (i=0; i<n; i++)
    {
        if (fabs(sr_s-a[i].score)==0)
            sred[i][2]=1;
    }
    for(i=0; i<n; i++)
    {
        sum[i]=sred[i][0]+sred[i][1]+sred[i][2];
    }
    for (i=0, max=0; i<n; i++)
    {
        if (sum[i]>max)
        {
            max=sum[i];
            //sr=a[i];
            strcpy(sr.name,a[i].name);
            sr.age=a[i].age;
            sr.height=a[i].height;
            sr.score=a[i].score;
        }
    }
    printf("srednestat, %s %d %d %d", sr.name, sr.age, sr.height, sr.score);
    getch();
}
Dionisius
0 / 0 / 0
Регистрация: 19.10.2013
Сообщений: 110
17.03.2014, 16:05  [ТС]     Массив структур "Студенты". Исправить код #6
благодарю, конечно, но надо бы узнать, кто из студентов самый средний и самый уникальный
Yandex
Объявления
17.03.2014, 16:05     Массив структур "Студенты". Исправить код
Ответ Создать тему
Опции темы

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