Из М участников предыдущих соревнований N спортсменов, которые набрали наибольшую сумму баллов, выходят в финал. По протоколу предыдущих соревнований определить и вывести номера финалистов и набранные ими суммы баллов — Pascal(Паскаль)

Program n1;
uses crt;
var m:array[1..20] of integer; i,k,n:byte;
c:integer; f:boolean;
begin
clrscr;
write('Vvedite kol. sportsmenov - '); read(k);
for i:=1 to k do
begin
m[i]:=random(10);
writeln('Sportsmen',i,'=',m[i]);
end;
repeat
f:=false;
for i:=1 to k+1 do
begin
if m[i]>m[i-1] then
begin
 f:=true;
 c:=m[i]; m[i]:=m[i-1];m[i-1]:=c;
 end;
 end;
 until not f;
 write('Vvedite kolichestvo finalistiv - '); read(n);
 for i:=1 to n do
 writeln('Sportsmen',i,'=',m[i]);
readkey
End.

Вариант 2

uses crt;
var a:array[1..100] of integer;
    n,m,i,j,mx,imx,k:integer;
begin
clrscr;
write('Количество участников n=');
readln(n);
repeat
write('Количество финалистов m<n m=');
readln(m);
until m<n;
writeln('Введите суммы баллов ',n,' спортсменов');
for i:=1 to n do
 begin
  write('Спортсмен ',i,' = ');
  readln(a[i]);
 end;
clrscr;
writeln('Результаты спортсменов:');
for i:=1 to n do
write(a[i],' ');
writeln;
writeln;
writeln('Финалисты:');
for i:=1 to m do //выбираем  М финалистов
 begin
  mx:=a[1];imx:=1; //принимаем макс=первый участник
  for j:=1 to n do//идем по всему массиву
  if a[j]>mx then//ищем кто больше
   begin
    mx:=a[j];//находим значение
    imx:=j;/его номер
   end;
  writeln('# ',imx,'  res=',mx);//выводим на экран
  for k:=imx to n-1 do//сдвигая хвост массива на 1 влево
  a[k]:=a[k+1];
  n:=n-1;//мы удаляем этот элемент из массива, уменьшаем размер массива, повторяем М раз
 end;
readln;
end.

Вариант 3

uses crt;
var a:array[1..2,1..100] of integer;
    n,m,i,j,k,x:integer;
begin
clrscr;
write('Количество участников n=');
readln(n);
repeat
write('Количество финалистов m<n m=');
readln(m);
until m<n;
writeln('Введите номера и суммы баллов ',n,' спортсменов');
for i:=1 to n do
 begin
  write('Спортсмен ',i,' = ');
  readln(a[2,i]);
  a[1,i]:=i;
 end;
clrscr;
writeln('Результаты спортсменов:');
write('Номер: ');
for i:=1 to n do
write(a[1,i]:4);
writeln;
write('Рез. : ');
for i:=1 to n do
write(a[2,i]:4);
writeln;
writeln;
for i:=1 to n-1 do
for j:=i+1 to n do
if a[2,i]<a[2,j] then
for k:=1 to 2 do
 begin
  x:=a[k,i];
  a[k,i]:=a[k,j];
  a[k,j]:=x;
 end;
writeln('Финалисты:');
write('Номер: ');
for i:=1 to m do
write(a[1,i]:4);
writeln;
write('Рез. : ');
for i:=1 to m do
write(a[2,i]:4);
readln
end.

Leave a Comment

7 + 1 =