Другие языки программирования и технологии
плизз! поомогите написать программу на паскале!
В журнале записаны аценки n студентов, сдавших m экзаменов. Если студент не сдавал экзамен, то его оценка нуль. написать программу. указывающую студентов, получивших наиболььшее количество двоек!
Доброго времени суток.
Вот программка, определяющая экзамен, по которому получен максимальный средний балл.
program Examen;
uses Crt;
const
NumStudent = 4;
NumExam = 4;
ExamName : array [1..NumExam] of String = ('Литература','Физика','Математика','Информатика');
type
RStudent = record
Name : String;
Ball : array [1..NumExam] of Integer;
end;
var
j, k, e, MaxExam, Sum : Integer;
Mid, MaxMid : Real;
Students : array[1..NumStudent] of RStudent;
S : RStudent;
begin
ClrScr;
{так можно ввести данные с клавиатуры}
for j:=1 to NumStudent do begin
WriteLn('Введите данные по ', j, ' ученику');
Write('Имя: '); ReadLn(Students[j].Name);
for k:=1 to NumExam do begin
Write('введите оценку по предмету: ', ExamName[k], ' - ');
ReadLn(Students[j].Ball[k]);
end;
end;
{ А так задать в программе
Students[1].Name := 'Иванов';
Students[1].Ball[1] := 5;
Students[1].Ball[2] := 4;
Students[1].Ball[3] := 5;
Students[1].Ball[4] := 4;
Students[2].Name := 'Петров';
Students[2].Ball[1] := 3;
Students[2].Ball[2] := 3;
Students[2].Ball[3] := 4;
Students[2].Ball[4] := 3;
Students[3].Name := 'Сидоров';
Students[3].Ball[1] := 5;
Students[3].Ball[2] := 4;
Students[3].Ball[3] := 3;
Students[3].Ball[4] := 5;
Students[4].Name := 'Пупкин';
Students[4].Ball[1] := 4;
Students[4].Ball[2] :=5;
Students[4].Ball[3] := 5;
Students[4].Ball[4] := 5;
}
{найдем максимальный средний балл}
MaxMid := -MaxInt;
for e:=1 to NumExam do begin
Sum := 0;
for j:=1 to NumStudent do Sum := Sum + Students[j].Ball[e];
Mid := Sum/NumExam;
if MaxMid < Mid then begin
MaxMid := Mid;
MaxExam := e;
end;
end;
{отсортируем список учеников}
for j:=1 to NumStudent do
for k:=1 to NumStudent-j do
if Students[k].Ball[MaxExam] < Students[k+1].Ball[MaxExam] then begin
S := Students[k];
Students[k] := Students[k+1];
Students[k+1] := S;
end;
{выводим результат}
WriteLn('Экзамен с максимальным средним баллом',MaxMid:5:2, ' - ', ExamName[MaxExam] );
for j:=1 to NumStudent do WriteLn(Students[j].Name,' ',Students[j].Ball[MaxExam]);
ReadLn; {чтобы увидеть результат}
end.
Переделать под ваши условия, что два байта переслать. Нужно всего лишь подсчитать количество двоек для сданных экзаменов.
Удачи!
Вот программка, определяющая экзамен, по которому получен максимальный средний балл.
program Examen;
uses Crt;
const
NumStudent = 4;
NumExam = 4;
ExamName : array [1..NumExam] of String = ('Литература','Физика','Математика','Информатика');
type
RStudent = record
Name : String;
Ball : array [1..NumExam] of Integer;
end;
var
j, k, e, MaxExam, Sum : Integer;
Mid, MaxMid : Real;
Students : array[1..NumStudent] of RStudent;
S : RStudent;
begin
ClrScr;
{так можно ввести данные с клавиатуры}
for j:=1 to NumStudent do begin
WriteLn('Введите данные по ', j, ' ученику');
Write('Имя: '); ReadLn(Students[j].Name);
for k:=1 to NumExam do begin
Write('введите оценку по предмету: ', ExamName[k], ' - ');
ReadLn(Students[j].Ball[k]);
end;
end;
{ А так задать в программе
Students[1].Name := 'Иванов';
Students[1].Ball[1] := 5;
Students[1].Ball[2] := 4;
Students[1].Ball[3] := 5;
Students[1].Ball[4] := 4;
Students[2].Name := 'Петров';
Students[2].Ball[1] := 3;
Students[2].Ball[2] := 3;
Students[2].Ball[3] := 4;
Students[2].Ball[4] := 3;
Students[3].Name := 'Сидоров';
Students[3].Ball[1] := 5;
Students[3].Ball[2] := 4;
Students[3].Ball[3] := 3;
Students[3].Ball[4] := 5;
Students[4].Name := 'Пупкин';
Students[4].Ball[1] := 4;
Students[4].Ball[2] :=5;
Students[4].Ball[3] := 5;
Students[4].Ball[4] := 5;
}
{найдем максимальный средний балл}
MaxMid := -MaxInt;
for e:=1 to NumExam do begin
Sum := 0;
for j:=1 to NumStudent do Sum := Sum + Students[j].Ball[e];
Mid := Sum/NumExam;
if MaxMid < Mid then begin
MaxMid := Mid;
MaxExam := e;
end;
end;
{отсортируем список учеников}
for j:=1 to NumStudent do
for k:=1 to NumStudent-j do
if Students[k].Ball[MaxExam] < Students[k+1].Ball[MaxExam] then begin
S := Students[k];
Students[k] := Students[k+1];
Students[k+1] := S;
end;
{выводим результат}
WriteLn('Экзамен с максимальным средним баллом',MaxMid:5:2, ' - ', ExamName[MaxExam] );
for j:=1 to NumStudent do WriteLn(Students[j].Name,' ',Students[j].Ball[MaxExam]);
ReadLn; {чтобы увидеть результат}
end.
Переделать под ваши условия, что два байта переслать. Нужно всего лишь подсчитать количество двоек для сданных экзаменов.
Удачи!
bez ponyatia
Похожие вопросы
- Нужно написать программы в Паскале! Массивы! Срочно! Помогите!
- Нужно написать программу на паскале
- Написать программу в Паскале для построения графика функций. К программе желательно составить алгоритм.
- Как написать программу в паскале
- Помогите написать программу на паскале
- Помогите пожалуйста написать программу в Паскале )) Написать программу для вычисления суммы в массиве из 10 элементов
- Помогите, пожалуйста, написать программу на Паскале хотя бы примерно
- Написать программу для паскаль
- люди добрые помогите мне написать программу в паскале, метод Рунге Кутта. Математическое решение есть у меня
- Программирование на Паскале Помогите, пожалуйста , написать программу на паскале