Статистики за ученици

Да се въведат брой ученици и оценките им по даден предмет и да се отпечата:

  • средният успех на класа
  • най-високата и най-ниската оценка
  • броят на отличниците в класа
  • номерата на учениците с двойки
  • броят на учениците, които имат дадена оценка, въведена от клавиатурата
Публикувано в 10a с етикети . Постоянна връзка.

4 Responses to Статистики за ученици

  1. Виктория каза:

    С Аля :D

    program Project1;
    var
      Ocenka: array[1..30] of integer;
      Br, i, N, suma, min, max, Br2, Br3, Br4, Br5, Br6: integer;
      sredno: real;
    begin
      suma:=0;
      sredno:=0;
      min:=7;
      max:=1;
      Br2:=0;
      Br3:=0;
      Br4:=0;
      Br5:=0;
      Br6:=0;
    
      Write('Vavedete broi uchenici: ');
      ReadLn(Br);
      WriteLn('Vavedete ocenka po Matematika za vseki uchenik');
      WriteLn;
    
      For i:= 1 to Br do begin
        Write('Uchenik nomer',i,': ');
        ReadLn(ocenka[i]);
        suma:=suma+ocenka[i];
        if ocenka[i]<min then
           min:=ocenka[i];
        if ocenka[i]>max then
           max:=ocenka[i];
        if ocenka[i]=2 then
           Br2:= Br2 +1;
        if ocenka[i]=3 then
           Br3:= Br3 +1;
        if ocenka[i]=4 then
           Br4:= Br4 +1;
        if ocenka[i]=5 then
           Br5:= Br5 +1;
        if ocenka[i]=6 then
           Br6:= Br6 +1;
      end;
    
      Sredno:= suma/br;
      WriteLn;
      WriteLn('Sumata e: ',suma);
      WriteLn;
      Writeln('Sredniqt uspeh na clasa e: ', sredno:1:2);
      WriteLn;
      WriteLn('Nai-niskata ocenka e: ',min);
      WriteLn;
      WriteLn('Nai-visokata ocenka e: ',max);
      WriteLn;
      WriteLn('Broqt na otlichinicite e: ',Br6);
      WriteLn;
    
      For i:= 1 to Br do begin
        if ocenka[i]=2 then
        WriteLn('Ucenik nomer: ',i,' ima 2');
      end;
    
      WriteLn;
      Write('Broqt na uchenicite s koq ocenka tartite: ');
      ReadLn(N);
      Case N of
       2:WriteLn('Broqt uchenici s ', N,' sa: ', Br2);
       3:WriteLn('Broqt uchenici s ', N,' sa: ', Br3);
       4:WriteLn('Broqt uchenici s ', N,' sa: ', Br4);
       5:WriteLn('Broqt uchenici s ', N,' sa: ', Br5);
       6:WriteLn('Broqt uchenici s ', N,' sa: ', Br6);
      end;
      ReadLn;
    end.
    
    • Данаил каза:

      Отлично! Трябваше да обясните в коментар в началото защо имаме min:=7; и max:=1; – за някой може да не е ясно. Ето ви и подобрен вариант на тази задача, обяснете го:

      program Project1;
      var
        Ocenka: array[1..30] of integer;
        Bro: array[2..6] of integer;
        Br, i, N, suma, min, max: integer;
        sredno: real;
      begin
        suma:=0;
        sredno:=0;
        min:=7;
        max:=1;
        for i:= 2 to 6 do Bro[i]:= 0;
       
        Write('Vavedete broi uchenici: ');
        ReadLn(Br);
        WriteLn('Vavedete ocenka po Matematika za vseki uchenik');
        WriteLn;
       
        For i:= 1 to Br do begin
          Write('Uchenik nomer',i,': ');
          ReadLn(ocenka[i]);
          suma:=suma+ocenka[i];
          if ocenka[i]<min then
             min:=ocenka[i];
          if ocenka[i]>max then
             max:=ocenka[i];
          Inc(Bro[ocenka[i]]);
        end;
       
        Sredno:= suma/br;
        WriteLn;
        WriteLn('Sumata e: ',suma);
        WriteLn;
        Writeln('Sredniqt uspeh na clasa e: ', sredno:1:2);
        WriteLn;
        WriteLn('Nai-niskata ocenka e: ',min);
        WriteLn;
        WriteLn('Nai-visokata ocenka e: ',max);
        WriteLn;
        WriteLn('Broqt na otlichinicite e: ',Br6);
        WriteLn;
       
        For i:= 1 to Br do begin
          if ocenka[i]=2 then
          WriteLn('Ucenik nomer: ',i,' ima 2');
        end;
       
        WriteLn;
        Write('Broqt na uchenicite s koq ocenka tartite: ');
        ReadLn(N);
        WriteLn('Broqt uchenici s ', N,' sa: ', Bro[N]);
        ReadLn;
      end.
  2. Lubomira каза:
    program project1;
    var
       a:array [1..23]of integer;
       N, i, SumaO :integer;
       SrUspeh, OtlichenBroi, SlabiBroi, nomerDvoiki:real;
       nomer, ocenka: integer;
    
    begin
         WriteLn('Vuvedete broya na uchenicite');
         ReadLn(N);
         WriteLn ('Vuvedete ocenkite na tezi uchenici');
         SumaO:=0;
          for i:=1 to N do begin
             ReadLn (a[i]) ;
             SumaO:=SumaO + a[i];
         end;
    
         // sreden uspeh
         SrUspeh:=0;
         SrUspeh:=SumaO / N;
         WriteLn('Sredniya uspeh na tezi uchenici e :',SrUspeh:5:2);
    
         // Broi otlichni ocenki
         OtlichenBroi:=0;
         for i:=1 to N do begin
             if a[i] = 6 then
             OtlichenBroi:= OtlichenBroi + 1;
         end;
         WriteLn('Broya na otlichnicite e :',OtlichenBroi:2:0);
    
         //Broi slabi ocenki
         SlabiBroi:=0;
         for i:=1 to N do begin
             if a[i] = 2 then
             begin
                  SlabiBroi:= SlabiBroi + 1;
                  //nomer s dvoiki
                  nomerDvoiki :=i;
                  WriteLn('Nomer s dwoika ', nomerDvoiki:2:0);
             end
         end;
          WriteLn('Broya na slabite ychenici e :',SlabiBroi:2:0);
    
         //ychenik-ocenka
         for i:=1 to N do begin
             nomer := i;
             ocenka := a[i];
             WriteLn('Nomer ', nomer, ' ima ', ocenka);
         end;
     ReadLn;
    end.     
    
    • Данаил каза:

      Браво, Бубе! Само редове 19, 38, 46 и 47 са ти излишни. И можеш да правиш няколко вида сметки в един цикъл, вместо да обхождаш масива пак и пак. Виж примерно решенията на Вики и Аля. И пиши коментарите на кирилица, все пак по-лесно се чете… Другото е супер. :-)

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