Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 55
1

Записи, содержащие данные о студентах-спортсменов института. Найти ошибку в цикле

01.10.2014, 21:18. Просмотров 332. Ответов 0
Метки нет (Все метки)

С клавиатуры ввести последовательность записей, содержащих данные о студентах-спортсменов института: <Фамилия, имя>,
<Год рождения>, <Вид спорта>, <Разряд>. Распечатать введенные данные в форме таблицы, сгруппировав их по видам спорта.
Определить самого молодого спортсмена по каждому виду спорта (если таких несколько, то указать всех)

Вот мой код
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
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
int main() {
    struct sport {
        char name[50];
        int birth[4]; 
        char vudsp[25];
        char rozr[15];
        int numb[5];
    }
    student[30], r, *p1, *p2;
    int i, j, k, x;
    printf("Enter the number of students, which be introduced:\n");
    for ( ; ; ) {
    if (scanf_s("%d", &k)==0)
        { 
            printf ("\nERROR! Try again! \n \n"); 
            fflush(stdin); continue;
        }
    if (k<0) 
        {
            printf("\nNumber of students must be greater than 0! \n \n"); 
            fflush(stdin); 
        }
    else break;
    }
    puts("");
    fflush(stdin);
 
 
    for(i=0; i<k; i++) {
        puts("Surname and name of student: ");
        gets_s(student[i].name);
        fflush(stdin);
 
        puts("Year of birth: ");
            for ( ; ; ) {
                if (scanf_s("%d",student[i].birth)==0)
                    { 
                        printf ("\nERROR! TRY AGAIN! \n \n"); 
                        fflush(stdin); continue;
                    }
                if (*student[i].birth<0 || *student[i].birth>2014) 
                    {
                        printf("\nYear of birth must be greater than 0 and less from 2014! \n \n"); 
                        fflush(stdin); 
                    }
                else break;
            }   
        fflush(stdin);
 
        puts("Sport, which deals with student: ");
        gets_s(student[i].vudsp);
        fflush(stdin);
 
        puts("Category: ");
        gets_s(student[i].rozr);
        fflush(stdin);
 
        puts("");
}
fflush(stdin);
system("cls");
p1=student; p2=student+1;
for(i=0; i<k-1; i++) 
{   
    for(j=i+1; j<k; j++)
        if(student[i].vudsp[0]==student[j].vudsp[0])
        {
            r=*(p1+1);
            *(p1+1)=*p2;
            *p2=r; 
            i++;
            p1++;
            j=i;
            p2=p1+1;
        }
        else 
        p2++;
}   
int min;
char m, n;
p1=student; p2=student+1;
for (i=0; i<k; i++)
{
    while (p1->vudsp == p2->vudsp)
    {
        if (student[i].birth < student[j].birth)
        {
            min=*student[i].birth; m=i;
        }
        else 
        {
            min=*student[j].birth; m=j;
        }
        p2++;j++;
    }
    printf("The most younger sportsman %s - %s, %d year. ", student[m].vudsp, student[m].name, min);
    j++; p1=p2; p2++; 
}
 
 
//...................structure output...................
 puts ("                       List of students: ");
 printf("           Name of student:     Year of birth:     Kind of sport:      Category: \n");
    for(i=0; i<k; i++) printf("     %20s           %d %20s     %10s\n", student[i].name, *student[i].birth, student[i].vudsp, student[i].rozr);
//......................................................
_getch();
return 0;
}
Помогите ошибку исправить, чтоб верно показывало результат.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.10.2014, 21:18
Ответы с готовыми решениями:

Представить данные о студенте института в виде записи со следущей структурой
Представить данные о студенте института в виде записи со следущей структурой: Студент ФИО ...

Представить данные о студентах института в виде массива записей со структурой
Студент Ф.И.О. № группы СреднийБалл за семестр 1) Напишите...

Подготовить данные содержащие информацию о странах мира, данные оформить в виде записи
Исправте ошибки в коде. Програма создания файла не работает. Исправьте пожалуйста ошибки и как...

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

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.10.2014, 21:18

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Записи. Вывести данные о старших по возрасту студентах
1. Дана информация о шести студентах. Запись имеет вид: фамилия, год рождения, место рождения,...

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

Опишите, используя структуру записи, данные о студентах (фамилия, улица, дом, квартира)
Помогите составить программу: Опишите, используя структуру записи, данные о студентах (фамилия,...

Записи. Ввод с клавиатуры массива записей со сведениями о студентах. Вывод данных о студентах двоечниках. Сортировка по алфавиту
Напишите программу :gsorry: :-* Описать запись с именем STUDENT, содержащую следующие поля:...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.