IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Сортировка результатов участников гонки, Участники лыжной гонки финишируют неодновременно. Известны их стартовы
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 1
Пол: Мужской

Репутация: -  0  +


Участники лыжной гонки финишируют неодновременно. Известны их стартовые номера, фамилии и результат (Мин., Сек.). Составить программу, осуществляющую вывод на табло информацию о лучших 6-ти результатах (с распределением мест) после финиша каждого из участников

Написала код. Начальству не понравилось. Заставило переписать. Переписать не могу. Помогите с самой сортировкой. Скину две программы.


Вот первая работающаяя:


program qq;
uses crt;
const
nn = 5;
type
trow = record
sec, num: integer;
fio: string;
end;
var
res: array [1..nn+2] of trow;
i, j, d, n, min: integer;
ch: char;
begin

ClrScr;
gotoxy(1,5) ;
for j:=1 to 79 do Write('-'); WriteLn;
gotoxy(3,6) ;
Write('Введите интервал раздельного старта(сек.): ');
gotoxy(1,7) ;
for j:=1 to 79 do Write('-'); WriteLn;
ReadLn(d);
begin
ClrScr;
for j:=1 to 79 do Write('-'); WriteLn;
n:=0;
repeat
WriteLn('Результаты');
for j:=1 to 79 do Write('-'); WriteLn;
WriteLn('Место| Номер | Ф.И.О.','':50-5, '| Мин.|Сек.');
for j:=1 to 79 do Write('-'); WriteLn;
for i:=1 to nn do with res[i] do begin
if i<=n then
WriteLn(i:4, ' | ', num:5, ' | ', fio, '':50-length(fio), ' | ',
sec div 60:5, ':', sec mod 60)
else
WriteLn(i:4, ' | ');
end;
for j:=1 to 79 do Write('-'); WriteLn;
WriteLn;
if n<=nn then inc(n);
with res[n] do
repeat
Writeln ('Мин Сек Номер Ф.И.О. (-1 - выход): ');
Read(min); if min<0 then Exit;
ReadLn(sec, num, fio);
sec:=min*60+sec-num*d*(num-1);
if sec<=0 then WriteLn('Ошибка: финиш раньше старта на ', -sec, ' секунд!');
until (sec>0);
for i:=n-1 downto 1 do
if res[i+1].sec < res[i].sec then begin
res[nn+2]:=res[i]; res[i]:=res[i+1]; res[i+1]:=res[nn+2];

end;

until false;

end;
end;
end.



Вот вторая (та, что не работает) при запуске всё будет понятно.

program qq;
uses crt;
type
trow = record
min,
sec,
num: integer;
fio: array [1..100] of string;
end;
var
res: array [1..100] of trow;
i,
n,
line,
interval,
kolichestvostart,
min,
sec,
num: integer;
fio: array [1..100] of string;
ch: char;
{Организация процедуры}


{___________________________Начало основной программы_______________________________}

{___________________________Вывод заставки_______________________________}


{_________________Ввод количества результатов, выводимых таблицей________________}

begin
ClrScr;
gotoxy(1,2) ;
for line:=1 to 79 do Write('='); WriteLn;
gotoxy(22,3) ;
Writeln('Введите количество стартующих спортсменов ');
gotoxy(1,4) ;
for line:=1 to 79 do Write('='); WriteLn;
gotoxy(3,6) ;
Writeln('Количество выводимых результатов дожно быть в промежутке от 2 до 15,');
gotoxy(3,7);
Writeln('Иначе таблица не поместится на экране');
gotoxy(1,8) ;
for line:=1 to 79 do Write('='); WriteLn;
ReadLn(kolichestvostart);



{______________________________Ввод интервала старта_______________________________}
n:=0;
if n<=kolichestvostart then inc(n);
with res[n] do
ClrScr;
gotoxy(1,2) ;
for line:=1 to 79 do Write('='); WriteLn;
gotoxy(20,3) ;
Write('Введите интервал раздельного старта(сек.): ');
gotoxy(1,4) ;
for line:=1 to 79 do Write('='); WriteLn;
ReadLn(interval);


{______________________________Ввод стартового листа_______________________________}
ClrScr;
gotoxy(1,2) ;
for line:=1 to 79 do Write('='); WriteLn;
gotoxy(3,3) ;
Writeln('Сформируйте стартовый лист.');
gotoxy(3,4) ;
Writeln('Введите фамилии спортсменов по номерам.');
gotoxy(1,5) ;
for line:=1 to 79 do Write('='); WriteLn;
Writeln('Номер | Имя');
gotoxy(1,7) ;
for line:=1 to 79 do Write('='); WriteLn;
for num :=1 to kolichestvostart do
Begin
write( ' ',num,' | ');
readln(fio[num]);

end;

{______________________________Стартовый лист_______________________________}
ClrScr;
gotoxy(1,2) ;
for line:=1 to 79 do Write('='); WriteLn;
gotoxy(30,3) ;
Writeln('Ваш стартовый лист');
gotoxy(1,4) ;
for line:=1 to 79 do Write('='); WriteLn;
gotoxy(1,5) ;
Writeln('Номер| Имя | Инт.(сек)');
gotoxy(1,6) ;
for line:=1 to 79 do Write('='); WriteLn;
for num:=1 to kolichestvostart do
writeln(' ',num,' | ',fio[num],'':61-length(fio[num]),'| +',(0-interval)+num*interval);

gotoxy(1,6+kolichestvostart+1) ;
for line:=1 to 79 do Write('='); WriteLn;
gotoxy(1,7+kolichestvostart+2);
Writeln('Нажмите Enter для продолжения');
readln;
end;

{___________________________Ввод результатов_______________________________}
ClrScr;
gotoxy(1,2) ;
for line:=1 to 79 do Write('='); WriteLn;
gotoxy(25,3) ;
Writeln('Введите результаты через пробел');
gotoxy(1,4) ;
for line:=1 to 79 do Write('='); WriteLn;
gotoxy(1,5) ;
Writeln('********************************************************************* Результат');
Writeln('Номер| Имя * Мин:Сек');
gotoxy(1,7) ;
for line:=1 to 79 do Write('='); WriteLn;
for num:=1 to kolichestvostart do

repeat
write(' ',num,' | ',fio[num],'':61-length(fio[num]),'| ');
Read(min); if min<0 then Exit;
ReadLn(sec);
sec:=min*60+sec-num*interval*(num-1);
if sec<=0 then WriteLn('Ошибка: финиш раньше старта на ', -sec, ' секунд!')
until (sec>0);
gotoxy(1,7+kolichestvostart+1) ;
for line:=1 to 79 do Write('-'); WriteLn;
gotoxy(1,7+kolichestvostart+2);
Writeln('Нажмите Enter для продолжения');
readln;


{___________________________Вывод таблицы результатов________________________________}


clrscr;
WriteLn('Результаты');
for line:=1 to 79 do Write('='); WriteLn;
WriteLn('Место| Номер | Ф.И.О.','':50-5, ' | Мин.|Сек.');
for line:=1 to 79 do Write('='); WriteLn;


WriteLn( i:4, ' | ', num:5, ' | ', fio[num], '':52-length(fio[num]), ' | ',
min, ':', sec);


for line:=1 to 79 do Write('='); WriteLn;

end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 4.05.2024 4:23
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name