Цитата:
Сообщение от SProkhorenkov
Помогите написать алгоритм решения и Паскаль программу к задаче.Желательно с пояснениями.
|
Алгоритмами в смысле блок-схемами и прочим не занимаюсь, а программу - пожалуйста, легче легкого:
Код:
{Объявляем переменные:}
Var
TF13:Array[1..22,1..5] of Byte;
i,j,Max,Sum:Byte;
b:boolean;
{Начинаем программу:}
Begin
{Запускаем генератор случайных чисел:}
Randomize;
{Генерируем таблицу оценок в диапазоне от 2 до 5:}
for i:=1 to 22 do
for j:=1 to 5 do
TF13[i,j]:=Random(4)+2;
{Выводим таблицу на экран в две колонки. Столбцы слева - порядковые номера студентов}
for i:=1 to 11 do
begin
write(i:2,' ');
for j:=1 to 5 do write(TF13[i,j]:2);
write((i+11):10,' ');
for j:=1 to 5 do write(TF13[i+11,j]:2);
writeln;
end;
writeln;
{Ищем максимальную по студентам сумму баллов:}
Max:=0;
for i:=1 to 22 do
begin
Sum:=0;
for j:=1 to 5 do Inc(Sum,TF13[i,j]);
if Sum>Max then Max:=Sum;
end;
{Выводим номера студентов, имеющих максимальную сумму баллов:}
writeln('Students having maximal average mark (',Max/5:5:3,'):');
for i:=1 to 22 do
begin
Sum:=0;
for j:=1 to 5 do Inc(Sum,TF13[i,j]);
if Sum=Max then write(i:3);
end;
writeln;
{Ищем студентов без двоек, и при нахождении выводим их номера на экран:}
writeln('Students having no unsatisfactory marks:');
for i:=1 to 22 do
begin
b:=true;
for j:=1 to 5 do if TF13[i,j]=2 then b:=false;
if b then write(i:3);
end;
{Останавливаем программу:}
readln
{Завершаем программу:}
End.