Консультация № 154375
14.12.2008, 22:34
0.00 руб.
0 2 1
Сложите список группы с № спортсменов.Для каждего спортсмена укажите фамилию,имя,школу,класс,результаты во следующих видах: вольные упражнения,прыжки,прыжки через коня.Информацию про каждего спортсмена оформить в виде записи.все записи объеденить у файл.Сложите програму ,которая обеспечивает введение
полученой информации ,распечатку ее в виде таблици, а также распечатку данных спортсменов,которые не одержали победы.
Пожалуйста,помогите!Очень надо!СПС!

Обсуждение

давно
Профессор
401888
1232
15.12.2008, 09:30
общий
Что-то мне немного не нравится условие. Посмотрите, оно точно такое, возможно при переводе на русский что-то исказилось. Сейчас по этому условию, мы создав список и файл выводим на зкран сначала таблицу всех спортсменов, а потом таблицу спортсменов, которые нигде не победили. Это будет практически та же таблица, максимум без трех победителей. В чем сдесь смысл. Может наоборот вывести на экран победителей, или еще что-то. Мне то все равно что написать, хочется чтоб это было правильно.
давно
Профессор
401888
1232
15.12.2008, 10:16
общий
это ответ
Здравствуйте, Vadimka1991!
Привожу вариант решения так, как я его понял из условия, если что не так, пишите в мини-форум, поправим. Решение в приложении. Попробую прикрепить сам файл.

Приложение:
uses crt;
const n=5;{количество спортсменов, это для тестирования, надо взять больше}
type Tsport=record {тип запись с полями по условию}
fam:string[15]; {фамилия}
shk:word; {школа}
kls:string[3]; {класс}
rez:record {результаты}
vol:real; {вольные упражнения}
prz:real;{прыжки}
kon:real;{конь}
end;
end;
var sp:array[1..n] of Tsport;{массив записей}
f:file of Tsport; {типизированный файл для хранения записей}
i:integer;
maxv,maxp,maxk:real;{максимальные результаты}
begin
clrscr;
assign(f,'sport.dat'); {связываем переменную с файлом на диске}
rewrite(f); {открываем его для записи}
writeln('Vvedite dannye o ',n,' sportsmenah:');{заполняем список данными}
for i:=1 to n do
begin
writeln('Sportsmen ',i);
write('Familia: ');readln(sp[i].fam);{фамилия- строка до 15 символов}
write('Shkola: ');readln(sp[i].shk);{школа- натуральное число}
write('Klass: ');readln(sp[i].kls); {класс типа 11а}
writeln('Rezultaty:');
write(' Volnye: ');readln(sp[i].rez.vol);{результаты типа 10,25, 9,32}
write(' Pryzki: ');readln(sp[i].rez.prz);
write(' Kon: ');readln(sp[i].rez.kon);
write(f,sp[i]); {заносим запись в файл]
end;
reset(f); {открываем файл для чтения}
clrscr; {очищаем экран}
writeln(' Spisok sportsmenov:'); {выводим весь список}
writeln('----------------------------------------------------------');
writeln('| Familia | Shkola | Klass | Rezultaty |');
writeln('| | | |-------------------------');
writeln('| | | | Volnye | Pryzki | Kon |');
writeln('----------------------------------------------------------');
for i:=1 to n do
begin
read(f,sp[i]);
writeln(sp[i].fam:11,sp[i].shk:9,sp[i].kls:9,sp[i].rez.vol:11:2,
sp[i].rez.prz:8:2,sp[i].rez.kon:8:2);
end;
readln; {читаем}
close(f); {закрываем файл}
reset(f); {снова открываем для чтения, поскольку он уже один раз прочитан}
maxv:=0;maxp:=0;maxk:=0;
for i:=1 to n do {ищем максимальные результаты по видам, т.е. результаты победителей}
begin
if sp[i].rez.vol>maxv then maxv:=sp[i].rez.vol;
if sp[i].rez.prz>maxp then maxp:=sp[i].rez.prz;
if sp[i].rez.kon>maxk then maxk:=sp[i].rez.kon;
end;
clrscr;
writeln(' Sportsmeny, ne oderzavshie pobed:');
writeln('----------------------------------------------------------');
writeln('| Familia | Shkola | Klass | Rezultaty |');
writeln('| | | |-------------------------');
writeln('| | | | Volnye | Pryzki | Kon |');
writeln('----------------------------------------------------------');
for i:=1 to n do
begin
read(f,sp[i]); {читаем файл}
if {если у спортсмена нет ни одного максимального результата, выводим его на экран}
sp[i].rez.vol<>maxv)and(sp[i].rez.prz<>maxp)and(sp[i].rez.kon<>maxk)then
writeln(sp[i].fam:11,sp[i].shk:9,sp[i].kls:9,sp[i].rez.vol:11:2,
sp[i].rez.prz:8:2,sp[i].rez.kon:8:2);
end;
readln
end.

Форма ответа