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

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

Восстановить пароль Регистрация
 
Линка
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 17
18.04.2011, 09:11     Файлы. Вывести данные о самом высоком спортсмене #1
Используя функции и режим меню, создать файл из 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);
  }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2011, 09:11     Файлы. Вывести данные о самом высоком спортсмене
Посмотрите здесь:

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

Заранее спасибо,
Alina
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 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 минуту
Линка, учитывайте, что если я, например, ввиду отрицательный рост спортсмена, будет серьёзная ошибка. Делайте проверку корректности введённых данных.
Alina_1986
0 / 0 / 0
Регистрация: 04.01.2012
Сообщений: 28
07.01.2012, 23:42     Файлы. Вывести данные о самом высоком спортсмене #4
Спасибо Вам Линка и talis!!!!!!!!!!!
Sanekkk1
0 / 0 / 0
Регистрация: 17.02.2013
Сообщений: 17
07.02.2015, 10:08     Файлы. Вывести данные о самом высоком спортсмене #5
talis подскажите а для чего эта строка:
C
1
2
struct sport temp_buff,
                 max;
Julia1994
0 / 0 / 0
Регистрация: 09.11.2015
Сообщений: 28
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
Yandex
Объявления
03.03.2016, 09:48     Файлы. Вывести данные о самом высоком спортсмене
Ответ Создать тему
Опции темы

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