Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача на запись
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Spaun
Зравствуйте, есть проблема не могу добиться результата в программе, точнее не могу понять как вывести максимальный и минимальный результат в таблице.
вот сам код:

{Составьте список группы спортсменов, участвовавших в соревнованиях по спортивной гимнастике,
включающей N человек. Для каждого гимнаста укажите фамилию, имя,
номер школы, класс, результаты по соревнованию. Осуществите поиск информации
о спортсменах, показавших лучший и худший результаты.}
program nomer4;
uses crt;
type
sport=record
sur:string;
name:string;
nomber:integer;
ass:byte;
res:integer;
end;
var
mas:array[1..100] of sport;
x,y:real;
n,i,max,min:integer;
procedure spisok(x:real);
begin
writeln('Самый лучший результат:');
writeln;
writeln;
writeln('-------------------------------------------');
writeln('Фамилия|',' Имя |','Номер школы|','Класс|','Результат|');
writeln('-------------------------------------------');
max:=0;
min:=0;
for i:=1 to n do
if mas[i].res > max then
max:=mas[i].res;
writeln(max);
begin
writeln(mas[i].sur:7,'|',mas[i].name:7,'|',mas[i].nomber:11,'|',mas[i].ass:5,'|',mas[i].res:9,'|');
end;
writeln('--------------------------------------------');
end;
BEGIN
clrscr;
writeln('Введите количество спортсменов');
readln(n);
for i:=1 to n do
begin
writeln('Введите фамилию');readln(mas[i].sur);
writeln('Введите имя');readln(mas[i].name);
writeln('Введите номер школы');readln(mas[i].nomber);
writeln('Введите класс');readln(mas[i].ass);
writeln('Введите результат');readln(mas[i].res);
writeln('___________________________________________________________________');
end;
clrscr;
writeln('-------------------------------------------');
writeln('Фамилия|',' Имя |','Номер школы|','Класс|','Результат|');
writeln('-------------------------------------------');
for i:=1 to n do
begin
writeln(mas[i].sur:7,'|',mas[i].name:7,'|',mas[i].nomber:11,'|',mas[i].ass:5,'|',mas[i].res:9,'|');
end;
writeln('-------------------------------------------');
writeln;
writeln;
writeln;
spisok(x);
end.


... ну надеюсь кто-нибудь поможет.
Alex J'Root
program nomer4;
uses crt;
type
sport=record
sur:string;
name:string;
nomber:integer;
ass:byte;
res:integer;
end;
var
mas:array[1..100] of sport;
x,y:real;
maxI,minI,n,i,max,min:integer;
procedure spisok(x:real);
begin
writeln('Самый лучший результат:');
writeln;
writeln('-------------------------------------------');
writeln('Фамилия|',' Имя |','Номер школы|','Класс|','Результат|');
writeln('-------------------------------------------');
max:=0;
min:=mas[1].res;
for i:=1 to n do
begin
if mas[i].res > max then
begin
max:=mas[i].res;
maxI:=i;
end;
if mas[i].res < min then
begin
min:=mas[i].res;
minI:=i;
end;
end;
writeln(mas[maxI].sur:7,'|',mas[maxI].name:7,'|',mas[maxI].nomber:11,'|',mas[maxI].ass:5,'|',mas[maxI].res:9,'|');

writeln('--------------------------------------------');
writeln;
writeln('Самый худший результат:');
writeln;
writeln('-------------------------------------------');
writeln('Фамилия|',' Имя |','Номер школы|','Класс|','Результат|');
writeln('-------------------------------------------');

writeln(mas[minI].sur:7,'|',mas[minI].name:7,'|',mas[minI].nomber:11,'|',mas[minI].ass:5,'|',mas[minI].res:9,'|');

end;
BEGIN
clrscr;
writeln('Введите количество спортсменов');
readln(n);
for i:=1 to n do
begin
writeln('Введите фамилию');readln(mas[i].sur);
writeln('Введите имя');readln(mas[i].name);
writeln('Введите номер школы');readln(mas[i].nomber);
writeln('Введите класс');readln(mas[i].ass);
writeln('Введите результат');readln(mas[i].res);
writeln('___________________________________________________________________');
end;
clrscr;
writeln('-------------------------------------------');
writeln('Фамилия|',' Имя |','Номер школы|','Класс|','Результат|');
writeln('-------------------------------------------');
for i:=1 to n do
begin
writeln(mas[i].sur:7,'|',mas[i].name:7,'|',mas[i].nomber:11,'|',mas[i].ass:5,'|',mas[i].res:9,'|');
end;
writeln('-------------------------------------------');
writeln;
spisok(x);
readln;
end.


Нужно было запоминать номер (i) самого лучшего (maxI) и самого худшего (minI) результата.
volvo
Alex J'Root, и зачем делать двойную работу?

Вот этого:
maxI := 1; minI := 1;
for i:=2 to n do begin
if mas[i].res > mas[maxI] then maxI:=i;
if mas[i].res < mas[minI] then minI:=i;
end;
не достаточно?
Alex J'Root
blink.gif

я думаю, что программа не надорвёться и при моем коде. yes2.gif
volvo
Цитата
я думаю, что программа не надорвёться и при моем коде.
С тобой все ясно... dry.gif Вариант "Сдать и забыть". Когда тебе понадобится помощь, не сомневайся, ты получишь именно код, который "не надорвется", даже если можно сделать ГОРАЗДО проще...
Alex J'Root
Что ты привязался до одного цикла??? И если я тебя один раз попросил помочь сделать задачу - это не значит что можно кидаться такими фразами!!!

Тебе 34 года, мне намного меньше. Я изучаю Паскаль 1 год, я думаю ты намного больше.

Честно говоря, смотрел твой сайт на народе... и форум на юкозе. Думал предложить тебе всё это перенести на платный хостинг и купить домен, т.к. с бесплатного могут в любое время удалить. Но сейчас желание прапало mad.gif
Alеx J'Root
Извини, ошибся на 3 года.
andriano
Цитата(Alex J'Root @ 8.06.2008 23:13) *

Что ты привязался до одного цикла??? И если я тебя один раз попросил помочь сделать задачу - это не значит что можно кидаться такими фразами!!!

Тебе 34 года, мне намного меньше. Я изучаю Паскаль 1 год, я думаю ты намного больше.
Странный ты какой-то...
С одной стороны жалуешься на недостаток опыта, а с другой - неадекватно реагируешь на советы, которые помогают тебе этого опыта набраться.
Alеx J'Root
Не тот случай, чтобы набираться опыта!!!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.