Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2017, 19:49   #1
Halikarnas
Пользователь
 
Регистрация: 19.03.2017
Сообщений: 14
По умолчанию [Pascal] Организуйте данные

Организуйте данные, которые описывают учеников некоторой школы и содержат: фамилию, класс, оценки из любых пяти предметов. Для массива из N учеников определите: а) ученика с максимальной (минимальной) средней оценкой, б) класс, который имеет наибольшее число отличных оценок.
Помогите сделать пункт б)
Код:
const
  n = 5;
 
type
  ychni = record    
    priz: string[20];    
    klas: word;    
    sr: real;  
  end;
 
var
  school: array[1..n] of ychni;  
  ocinku: array[1..5] of integer;  
  i, j, k, s: integer;  
  sr, max, min: real;  
  nmax, nmin, kil, kl: byte;  
  pr, pn: string[20];
 
begin
  randomize;  
  for i := 1 to n do  
  begin
    with school[i] do    
    begin
      write('Введите фамилию ученика: ');      
      readln(priz);      
      repeat
        write('Введите класс(1-11): ');        
        readln(klas);        
      until klas in [1..11];      
      write('Оценки: ');      
      for j := 1 to 5 do      
      begin
        ocinku[j] := random(4) + 2;        
        write(ocinku[j], ' ');        
      end;      
      writeln;      
      s := 0;      
      k := 0;      
      for j := 1 to 5 do      
      begin
        s := s + ocinku[j];        
        inc(k);        
      end;      
      sr := s / k;      
      writeln('Средний балл: ', sr:5:2);      
    end;    
  end;  
  writeln('-----------------------------------------------------------------');  
  max := 1;  
  for i := 1 to n do    
    if max < school[i].sr then begin
      max := school[i].sr;      
      pr := school[i].priz;      
    end;  
  writeln('Ученик с наибольшим средним баллом: ', pr, ' с.б.:', max:5:2);  
  min := 5;  
  for i := 1 to n do    
    if min > school[i].sr then begin
      min := school[i].sr;      
      pn := school[i].priz;      
    end;  
  writeln('Ученик с наименьшим средним баллом: ', pn, ' с.б.:', min:5:2);  
end.
Halikarnas вне форума Ответить с цитированием
Старый 13.06.2017, 00:02   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Код:
 school: array[1..n] of ychni;  
  ocinku: array[1..5] of integer;
Это не верно. Оценки должны войти в запись об ученике:
Код:
type
  ychni = record    
    priz: string[20];    
    klas: word;    
    sr: real;
    ocinku: array[1..5] of integer;  
  end;
Далее готовишь массив (номер элемента - номер класса). В том случае, когда для ученика класса N есть оценка "отлично", то добавляешь в N-ый элемент массива единичку. После этого можно будет поискать максимум и получить ответ.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нетипизированные указатели. Динамические данные (Pascal) prince_joha Помощь студентам 0 18.02.2012 18:39
Задача в Pascal (входные-выходные данные) Remi Помощь студентам 1 22.11.2010 13:55
Задача в Pascal (входные-выходные данные) Remi Помощь студентам 3 20.11.2010 22:13
Задача в Pascal (входные-выходные данные) Remi Помощь студентам 3 20.11.2010 12:08
Задача в Pascal (входные-выходные данные) Remi Помощь студентам 0 19.11.2010 20:38