Първите трима

Да се напише програма, която позволява да се въведат броят на участниците в някакво състезание и постижението на всеки от тях (реално число). После програмата да извежда първите три най-добри постижения.

Публикувано в 10a с етикети . Постоянна връзка.

6 Responses to Първите трима

  1. Боряна каза:
    program Project1;
    var
      a: array[1..100] of real;
      N, i, j: integer;
      swap: real;
    begin
      //въвеждане на данни в масива
      WriteLn('Be proveden maraton. Kolko hora uchastwaha?');
      ReadLn(N);
      WriteLn('Za wseki zapishete kolko km e probiagal (moje i drobi).');
      for i:=1 to N do begin
        Write('Uchastnik nomer ', i, ': ');
        ReadLn(a[i]);
      end;
    
      //подреждане на данни в масива
      for i:=1 to N do
        for j:=1 to N-i do begin
          if a[j]<a[j+1] then begin
            swap:=a[j];
            a[j]:=a[j+1];
            a[j+1]:=swap;
          end;
        end;
    
      //извеждане на данни от масива
      WriteLn;
      WriteLn('Bronzoviat medalist probiaga ', a[3]:0:3, 'km.');
      WriteLn('Srebarniat medalist probiaga ', a[2]:0:3, 'km.');
      WriteLn('Zlatniat medalist probiaga ', a[1]:0:3, 'km.');
      ReadLn;
    end.
    
  2. procsy каза:
     program Project1;
     Var i,N,j,swap,swap2:integer;
       ocenka,nomer:array[1..100] of integer;
    begin
    WriteLn('Vavedete Broq uchastnici w matematicheskoto sustezanie');
    Readln(N);
    Writeln('Vavedete ocenkite ot sustezanieto');
    for i:=1 to N do begin
      Readln(ocenka[i]);
    end;
    Writeln('Vavedete nomerata na suotwetwashtite ocenki ');
    for i:=1 to N do begin
      Readln(nomer[i]);
      end;
    for i:=1 to N do
      for j:=1 to N-1 do begin
        if ocenka[j] > ocenka[j+1] then begin
        swap:=ocenka[j];
         swap2:=nomer[j];
        ocenka[j]:=ocenka[j+1];
          nomer[j]:=nomer[j+1];
        ocenka[j+1]:=swap;
           nomer[j+1]:=swap2;
        end;
      end;
    WriteLn('Uchenikut s nai-visok uspeh e s No: ',nomer[N],' I ima ocenka: ',ocenka[N]);
    Writeln('2-riq uchenik po uspeh e s No: ',nomer[N-1],' I ima ocenka: ',ocenka[N-1]);
    Writeln('3-tiq uchenik po uspeh e s No: ',nomer[N-2],' I ima ocenka: ',ocenka[N-2]);
    Readln;
    
    end.           
    • Данаил каза:

      Браво, Любо! Много интересно решение! Номерът на ученика обаче няма нужда да се въвежда – той е поредно число. Виж откъде можеш да го вземеш. И добави коментари, за да е ясно и за другите какво правиш.

  3. Svetli каза:
    program Project1;
    var
      swap:real;
      i,j,N:integer;
      a:array[1..30] of Real;
    
    procedure Postijeniq(i,N:integer);
    begin
      Writeln('Vavedete rezultatite na ',N,' choveka');
      for i:= 1 to N do begin
        Readln(a[i]);
      end;
    end;
    
    procedure Sortirane(i,j:integer);
    begin
      for i:= 1 to N do
          for j:= 1 to N-1 do begin
            if a[j] > a[j+1] then begin
              swap:=a[j];
              a[j]:=a[j+1];
              a[j+1]:=swap;
            end;
          end;
    
      Writeln('Resultatite na purviq e: ',a[1]:5:2);
      Writeln('Resultatite na vtoriq e: ',a[2]:5:2);
      Writeln('Resultatite na tretiq e: ',a[3]:5:2);
    end;
    
    begin
      Writeln('Vavedete broq na uchastnicite: ');
      Readln(N);
      Writeln;
    
      Postijeniq(i,N);
      Writeln;
    
      Sortirane(i,j);
    
      Readln;
    end.
    
    • Данаил каза:

      Много добре, Светли! За да е перфектна програмата обаче трябва да помислиш кои са ти основните смислови етапи в задачата – всеки от тях може да стане отделна функция. Помисли и от каква информация ще се нуждаят за да работят – това ще са параметрите на функциите. Например i и j трябва да са ти локални променливи, а не параметри. И добави коментари за по-добра четливост и яснота.

Вашият коментар