0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 17
1

Файлы. Вывести данные о самом высоком спортсмене

18.04.2011, 09:11. Показов 4163. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Используя функции и режим меню, создать файл из 10 записей, просмотреть файл, добавить в файл новую информацию и, применяя режим прямого доступа выполнить:
Информация о спортсменах: фамилия, пол, год рождения, рост. (Это все сделала)
Вот только надо вывести данные о самом высоком спортсмене, а не о всех HELP ME!!!!
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
#include <vcl.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#pragma hdrstop
 
 
//---------------------------------------------------------------------------
 
#pragma argsused
 struct sport {char name[10]; char pol[5]; char god[10]; float r;} t1;
void input(FILE *); // создание нового файла
void print(FILE *); //  просмотр файла
void app(FILE *); //  добавление в файл
 
int main(int argc, char* argv[])
{  char c; int i;
   FILE *tf;
    while (i != 0)
      { clrscr();
        puts("  1 - new file");
        puts("  2 - look file ");
        puts("  3 - dobavlenie v file");
        puts("  0 - vihod");
        c=getch();
        switch(c)
         {case '1':input(tf);break;
          case'2':print(tf);break;
          case'3':app(tf);break;
          case '0':return 0;
         default : puts("neverni rezgim" );
         }
       }
   }
 void input(FILE *tf)
{ char ch;
  tf=fopen("file1.dat","wb"); // открытие бинарного файла для записи
  clrscr();
  printf("\n Vvod dannih \n");
  do
  { printf("\n familiya: "); scanf("%s",t1.name);
    printf(" pol: "); scanf("%s",&t1.pol);
    printf(" god rozgdeniya: "); scanf("%s",&t1.god);
    printf(" rost: "); scanf("%f",&t1.r);
    fwrite(&t1,sizeof(t1),1,tf); // запись в файл одной структуры t1
    printf("\n Zakonchit?  y/n  ");
    ch=getch();
  }   while (ch != 'y');
  fclose(tf);  }
void print(FILE *tf)
 { int i;
  clrscr();
  tf=fopen("file1.dat","rb"); // открытие бинарного файла для чтения
  i=1;
  fread(&t1,sizeof(t1),1,tf); // чтение из файла одной структуры t1
  while (!feof(tf))
  {printf("\n  %3d familya %10s pol %5s god %5s rost %6.2f",i,t1.name,t1.pol,t1.god,t1.r);
    fread(&t1,sizeof(t1),1,tf);
    i++;
  }  getch(); }
void app(FILE *tf)
{ char ch;
  tf=fopen("file1.dat","ab"); // открытие бинарного файла для добавления
  clrscr();
  printf("\n  Vvod dannih \n");
  do
  {  printf("\n familiya: "); scanf("%s",t1.name);
    printf(" pol: "); scanf("%s",&t1.pol);
    printf(" god rojdenia: "); scanf("%s",&t1.god);
    printf(" rost: "); scanf("%f",&t1.r);
    fwrite(&t1,sizeof(t1),1,tf);
    printf(" zakonchit  y/n ");
    ch=getch();
  }
  while (ch != 'y');
  fclose(tf);
  }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.04.2011, 09:11
Ответы с готовыми решениями:

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

Вывести данные о самом высоком спортсмене
Запись имеет вид: фамилия, пол, год рождения и рост. Вывести данные о самом высоком спортсмене.

Массивы: вывести данные о самом высоком спортсмене
Всем hello ломаю уже 2 час голову не могу решить, может кто подскажет как? Задание: Запись...

Вывести на экран информацию о самом высоком мосте.
Условие: Сделать структуру в виде функции, Мосты. Название, высота, длинна. Вывести на экран...

6
0 / 0 / 0
Регистрация: 04.01.2012
Сообщений: 28
07.01.2012, 19:53 2
Привет Линка!
Не могла бы мне помочь в решении той же задачи, что была у тебя в прошлом году?
Структура имеет вид: фамилия, пол, год рождения и рост. Вывести данные о самом высоком спортсмене.

Заранее спасибо,
Alina
0
794 / 546 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
07.01.2012, 21:28 3
Линка, вот как-то так:

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
#include <stdio.h>
 
/**********************************
 * У меня нет clrscr. Своя замена *
 **********************************/
void clrscr( )
{
    int i;
    for( i = 0; i < 25; i++ ) putchar( '\n' );
}
 
struct sport
{
    char name[10];
    char pol[5];
    char god[10];
    float r;
} t1;
 
void input( FILE * ); // создание нового файла
void print( FILE * ); //  просмотр файла
void app( FILE * ); //  добавление в файл
void max_height( ); // поиск спортсмена с максимальным ростом
 
int main( int argc, char * argv[] )
{
    char c;
    int i;
    FILE * tf;
 
    while( i != 0 )
    {
        clrscr();
        puts( "  1 - new file\n"
              "  2 - look file\n"
              "  3 - dobavlenie v file\n"
              "  4 - find max height\n"
              "  0 - vihod" );
        c = getch();
 
        switch( c )
        {
        case '1':
            input( tf );
            break;
        case '2':
            print( tf );
            break;
        case '3':
            app( tf );
            break;
        case '4':
            max_height( );
            break;
        case '0':
            return 0;
        default :
            puts( "neverni rezgim" );
        }
    }
}
 
void input( FILE * tf )
{   char ch;
    tf = fopen( "file1.dat", "wb" ); // открытие бинарного файла для записи
    clrscr();
    printf( "\n Vvod dannih \n" );
 
    do
    {   printf( "\n familiya: " );
        scanf( "%s", t1.name );
        printf( " pol: " );
        scanf( "%s", &t1.pol );
        printf( " god rozgdeniya: " );
        scanf( "%s", &t1.god );
        printf( " rost: " );
        scanf( "%f", &t1.r );
        fwrite( &t1, sizeof( t1 ), 1, tf ); // запись в файл одной структуры t1
        printf( "\n Zakonchit?  y/n  " );
        ch = getch();
    }   while( ch != 'y' );
 
    fclose( tf );
}
 
void print( FILE * tf )
{
    int i;
    clrscr();
    tf = fopen( "file1.dat", "rb" ); // открытие бинарного файла для чтения
    i = 1;
    fread( &t1, sizeof( t1 ), 1, tf ); // чтение из файла одной структуры t1
 
    while( !feof( tf ) )
    {
        printf( "\n  %3d familya %10s pol %5s god %5s rost %6.2f", i, t1.name, t1.pol, t1.god, t1.r );
        fread( &t1, sizeof( t1 ), 1, tf );
        i++;
    }
 
    getch();
}
 
void app( FILE * tf )
{   char ch;
    tf = fopen( "file1.dat", "ab" ); // открытие бинарного файла для добавления
    clrscr();
    printf( "\n  Vvod dannih \n" );
 
    do
    {   printf( "\n familiya: " );
        scanf( "%s", t1.name );
        printf( " pol: " );
        scanf( "%s", &t1.pol );
        printf( " god rojdenia: " );
        scanf( "%s", &t1.god );
        printf( " rost: " );
        scanf( "%f", &t1.r );
        fwrite( &t1, sizeof( t1 ), 1, tf );
        printf( " zakonchit  y/n " );
        ch = getch();
    }
    while( ch != 'y' );
 
    fclose( tf );
}
 
void max_height( )
{
    clrscr();
 
    FILE * fd = fopen( "file1.dat", "rb" );
 
    if( !fd )
       return;
 
    struct sport temp_buff,
                 max;
 
    max.r = 0;
 
    while( fread( &temp_buff, sizeof( struct sport ), 1, fd ) )
    {
        if( temp_buff.r > max.r )
           max = temp_buff;
    }
 
    fclose( fd );
 
    printf( "%s %s %s %6.2f\n", max.name, max.pol, max.god, max.r );
    getch();
}
Добавлено через 1 минуту
Линка, учитывайте, что если я, например, ввиду отрицательный рост спортсмена, будет серьёзная ошибка. Делайте проверку корректности введённых данных.
1
0 / 0 / 0
Регистрация: 04.01.2012
Сообщений: 28
07.01.2012, 23:42 4
Спасибо Вам Линка и talis!!!!!!!!!!!
0
1 / 1 / 0
Регистрация: 17.02.2013
Сообщений: 52
07.02.2015, 10:08 5
talis подскажите а для чего эта строка:
C
1
2
struct sport temp_buff,
                 max;
0
0 / 0 / 0
Регистрация: 09.11.2015
Сообщений: 29
03.03.2016, 09:48 6
Цитата Сообщение от talis Посмотреть сообщение
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
#include <stdio.h>
 
/**********************************
 * У меня нет clrscr. Своя замена *
 **********************************/
void clrscr( )
{
    int i;
    for( i = 0; i < 25; i++ ) putchar( '\n' );
}
 
struct sport
{
    char name[10];
    char pol[5];
    char god[10];
    float r;
} t1;
 
void input( FILE * ); // создание нового файла
void print( FILE * ); //  просмотр файла
void app( FILE * ); //  добавление в файл
void max_height( ); // поиск спортсмена с максимальным ростом
 
int main( int argc, char * argv[] )
{
    char c;
    int i;
    FILE * tf;
 
    while( i != 0 )
    {
        clrscr();
        puts( "  1 - new file\n"
              "  2 - look file\n"
              "  3 - dobavlenie v file\n"
              "  4 - find max height\n"
              "  0 - vihod" );
        c = getch();
 
        switch( c )
        {
        case '1':
            input( tf );
            break;
        case '2':
            print( tf );
            break;
        case '3':
            app( tf );
            break;
        case '4':
            max_height( );
            break;
        case '0':
            return 0;
        default :
            puts( "neverni rezgim" );
        }
    }
}
 
void input( FILE * tf )
{   char ch;
    tf = fopen( "file1.dat", "wb" ); // открытие бинарного файла для записи
    clrscr();
    printf( "\n Vvod dannih \n" );
 
    do
    {   printf( "\n familiya: " );
        scanf( "%s", t1.name );
        printf( " pol: " );
        scanf( "%s", &t1.pol );
        printf( " god rozgdeniya: " );
        scanf( "%s", &t1.god );
        printf( " rost: " );
        scanf( "%f", &t1.r );
        fwrite( &t1, sizeof( t1 ), 1, tf ); // запись в файл одной структуры t1
        printf( "\n Zakonchit?  y/n  " );
        ch = getch();
    }   while( ch != 'y' );
 
    fclose( tf );
}
 
void print( FILE * tf )
{
    int i;
    clrscr();
    tf = fopen( "file1.dat", "rb" ); // открытие бинарного файла для чтения
    i = 1;
    fread( &t1, sizeof( t1 ), 1, tf ); // чтение из файла одной структуры t1
 
    while( !feof( tf ) )
    {
        printf( "\n  %3d familya %10s pol %5s god %5s rost %6.2f", i, t1.name, t1.pol, t1.god, t1.r );
        fread( &t1, sizeof( t1 ), 1, tf );
        i++;
    }
 
    getch();
}
 
void app( FILE * tf )
{   char ch;
    tf = fopen( "file1.dat", "ab" ); // открытие бинарного файла для добавления
    clrscr();
    printf( "\n  Vvod dannih \n" );
 
    do
    {   printf( "\n familiya: " );
        scanf( "%s", t1.name );
        printf( " pol: " );
        scanf( "%s", &t1.pol );
        printf( " god rojdenia: " );
        scanf( "%s", &t1.god );
        printf( " rost: " );
        scanf( "%f", &t1.r );
        fwrite( &t1, sizeof( t1 ), 1, tf );
        printf( " zakonchit  y/n " );
        ch = getch();
    }
    while( ch != 'y' );
 
    fclose( tf );
}
 
void max_height( )
{
    clrscr();
 
    FILE * fd = fopen( "file1.dat", "rb" );
 
    if( !fd )
       return;
 
    struct sport temp_buff,
                 max;
 
    max.r = 0;
 
    while( fread( &temp_buff, sizeof( struct sport ), 1, fd ) )
    {
        if( temp_buff.r > max.r )
           max = temp_buff;
    }
 
    fclose( fd );
 
    printf( "%s %s %s %6.2f\n", max.name, max.pol, max.god, max.r );
    getch();
}
А почему мне выдаёт ошибку: [Error] 'getch' was not declared in this scope
0
0 / 0 / 1
Регистрация: 24.04.2016
Сообщений: 37
10.06.2018, 23:43 7
Учитывая, что это C++ а не чистый Си можно исправить getch() на system("pause") и будет тот же эффект. А если хотите getch, то добавьте библиотеку #include <conio.h>.
0
10.06.2018, 23:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.06.2018, 23:43
Помогаю со студенческими работами здесь

Написать friend функцию, которая выведет информацию о самом легком спортсмене в команде
Здравствуйте помогите написать функцию друг которая выводит информацию о самом легком спотсмене...

Вывести данные о самом молодом сотруднике
Помогите пожалуйста с программой Поля записи: Фамилия, Имя, Отчество, Должность, Зарплата, Дата...

Вывести сведения о самом старшем и о самом младшем абитуриенте
Сведения об абитуриентах состоят из фамилии, имени, адреса, года рождения и среднего балла...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru