• Программирование алгоритмов с использованием типа данных  «запись» в Pascal

Текст задания

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

Решение

Решение программы оформлено в виде отчета в Word, данный отчет содержит следующие пункты:

  • описания варианта задания;
  • постановки задачи;
  • описания переменных и констант;
  • структуры программы и спецификации: общая структурная схема должна отражать взаимосвязи основной программы и всех ее модулей и подпрограмм. Спецификация программы должна включать: имя программы; входные данные с указанием типа данных; входные данные с указанием типа данных. Спецификация подпрограммы должна включать: имя подпрограммы; назначение подпрограммы; входные данные с указанием типа данных; выходные данные с указанием типа данных; вид подпрограммы; заголовок подпрограммы;
  • распечатки текста программы с комментариями;
  • результата ручной обработки данных;
  • результата электронной обработки данных.

Исходный код программы с комментариями Вы можете найти ниже. Для получения доступа к отчету необходимо добавить работу в корзину и оплатить её. Доступ к отчету у Вас появится сразу после оплаты.

Исходный код программы

Program Best_Ucheniki_Shkoli;
uses crt; {Подключение модуля очистки экрана} 
Type Anketa = record {Объявление типа}
     Family: string[25]; {Фамилия ученика}
     Name: string[15];   {Имя ученика}
     ocenki: array [1..10] of integer; {Оценки ученика}
     klass: record {Класс ученика - запись}
     god: integer; {Год обучения}
     bukva: string[1];{Буква}
     end;
end;
var {объявление переменных}
Uchenik: array[1..55] of anketa;  {Массив для хранения исходных данных об учениках}
BestUchenik: array[1..55] of anketa; {Массив для хранения данных о лучших учениках}
i,j,s,n,m,k,l,max:integer; {Счетчики и переменные для хранения результатов вычислений}
best:boolean;{Переменная - сигнализатор о том, что все оценки ученика не меньше 4}
begin
ClrScr;{Очищаем экран}
Write('Vvedite kol-vo uchenikov: ');
Readln(n);{Запрашиваем количество учеников}
Write('Vvedite kol-vo ocenok: ');
Readln(m);{Запрашиваем количество оценок}

{Вводим исходные данные об учениках}
For i:=1 to n do 
  begin
   Writeln('Dannie ',i,'-go uchenika:');
   Write('   Family: ');
   Readln(Uchenik[i].Family);
   Write('   Name: ');
   Readln(Uchenik[i].name);
   Write('   Klass (god): ');
   Readln(Uchenik[i].klass.god);
   Write('   Klass (bukva): ');
   Readln(Uchenik[i].klass.bukva);
   For j:=1 to m do
    begin
     Write('     Vvedite ',j,' ocenku:');
     Readln(Uchenik[i].ocenki[j]);
    end;
  end;

{Ищем лучших учеников}
For k:=1 to 11 do {Цикл нужен для прохода по все ученикам от первого класса до 11-го (всего 11 итераций)}
 begin
 max:=0;{Обнуляем максимальное значение суммы оценок учеников}
  For i:=1 to n do {Цикл для перебора всех учеников в исходном массиве}
   begin
    s:=0;{Обнуляем переменную для хранения значения суммы оценок определенного ученика}
    if Uchenik[i].klass.god=k then {Если ученик учится в k-ом классе, то }
     begin
       For j:=1 to m do s:=s+Uchenik[i].ocenki[j]; {Считаем сумму оценок ученика}
       if s>max then max:=s; {Если эта сумма больше хранимого максимального значения, то обновляем максимальное значение}
     end;
   end;
  For i:=1 to n do {Снова запускаем перебор всех учеников}
   begin
    s:=0;{Обнуляем переменную для хранения значения суммы оценок опредленного ученика}
    if Uchenik[i].klass.god=k then {Если ученик учится в k-ом классе, то}
     begin
     best:=true;{переменную сигнализатор переводим в значение true}
       For j:=1 to m do
         begin
          s:=s+Uchenik[i].ocenki[j]; {считаем сумму всех оценок ученика}
          if Uchenik[i].ocenki[j]<4 then best:=false; {Если оценка меньше 4, то переменная-сигнализатор становится false}
         end;
       if (s=max) AND Best then {проверяем выполнение двух условий: сумма оценок равна максимальной для данного класса и все оценки больше 4}
         begin
          l:=l+1;
          bestUchenik[l]:=Uchenik[i];{Передаем данные в выходной массив}
         end;
     end;
   end;
 end;

{Выводим на экран данные о лучших учениках школы, упорядоченные в порядке возрастания класса}
Writeln('Luchshie ucheniki shkoli:');
For i:=1 to l do
  begin
   Writeln('   Family: ', BestUchenik[i].Family);
   Writeln('   Name: ',BestUchenik[i].name);
   Writeln('   Klass (god): ',BestUchenik[i].klass.god);
   Writeln('   Klass (bukva): ', BestUchenik[i].klass.bukva);
   For j:=1 to m do
    begin
     Writeln('      ',j,' ocenka:',BestUchenik[i].ocenki[j]);
    end;
  end;
if l=0 then Writeln ('Zadanim usloviyam ne sootvetstvuet ni odin uchenik');
Readln;
end.

Результат работы программы


Написать отзыв

Внимание: HTML не поддерживается! Используйте обычный текст!
    Плохо           Хорошо

Программирование алгоритмов с использованием типа данных «запись» в Pascal

  • 200.00 р.



Теги: Pascal

Не подошла работа?

Узнайте стоимость написания работы по Вашему заданию

(это быстро и бесплатно)

Узнать стоимость

Спасибо, не надо