Консультация № 161069
21.02.2009, 14:59
0.00 руб.
0 4 1
Помогите составить программу! Осталась одна, нужна срочно. Вывести на экран список студентов в виде:
№п/п; фамилия; средний бал; средний бал для тех студентов, которые получили больше одной двойки; фамилии, которые состоят из 5 букв

Обсуждение

давно
Профессор
401888
1232
21.02.2009, 17:50
общий
1.Средний балл(кстати с двумя л пишется) по скольки оценкам считать.
2.Выводить вот так прямо все в одну строку, как у Вас написано, или все же сначала общий список, потом отдельно средний балл двоешников, затем уже отдельный список фамилий из 5 букв?
Вы написать условие нормально видимо считаете ниже своего достоинства. Мол пусть там дяди помучаются и поодгадывают, что мне надо. А то не думаете, что с таким условием Вы никогда ответ не получите и будут считать Ваш средний "бал"во второй группе?
Неизвестный
21.02.2009, 19:11
общий
Простите пожалуйста, я просто сам россиянин, а получилось так, что живу и учусь в Харькове. Задания переводил с украинского текста, а оно было именно так сформулированно. Предыдущую задачу я решил, там было про список студентов, их оценки по трем дисциплинам. Так, что наверное тоже по трем дисциплинам. Было бы просто замечательно, если бы сначала шел общий список, а потом уже все остальное. Прошу прощения еще раз, просто я как раз проболел в больнице по этой теме, а это последняя из 17 программ, остальные я сделал.
давно
Профессор
401888
1232
21.02.2009, 20:22
общий
это ответ
Здравствуйте, Стас Хайчин!
Решение задачи в приложении.Удачи, земляк! Не болей.
Сделал 5 оценок, а то по 2 двойки из трех оценок это черезчур круто.

Приложение:
uses crt;
const nmax=50; {максимальный размер списка}
type Tstud=record {тип запись с полями по условию}
fam:string[15];{фамилия}
ocn:array[1..5]of byte;{массив оценок}
srb:real;{ср.балл}
end;
var sp:array[1..nmax] of Tstud;{массив записей, список со всеми данными}
n,i,k,j,t:byte;{количество, разные счетчики}
sr2:real;{средний у кого больше 1 двойки}
begin
clrscr;
repeat
write('Kolichestvo studentov n=');
readln(n);
until (n>0)and(n<=nmax);{проверяем правильность ввода}
writeln('Vvedite dannye o ',n,' studentah:');
for i:=1 to n do
begin {заполняем массив данными}
writeln('Student ',i);
write('Familia: ');readln(sp[i].fam);
writeln(' Ocenki:');
sp[i].srb:=0;
for j:=1 to 5 do
begin
write(j:7,'=');
readln(sp[i].ocn[j]);
sp[i].srb:=sp[i].srb+sp[i].ocn[j]/5;{считаем средний у каждого}
end;
end;
clrscr;
writeln('Obshij spisok studentov(familia i sred.ball):');
writeln;
for i:=1 to n do
writeln(sp[i].fam,' ',sp[i].srb:0:2);{выводим фамилию и ср.балл}
writeln;
sr2:=0;t:=0; {начинаем считать средний среди всех двоешников}
for i:=1 to n do
begin
k:=0;
for j:=1 to 5 do
if sp[i].ocn[j]=2 then k:=k+1;{если оценка 2, считаем}
if k>1 then {если больше 1 двойки}
begin
sr2:=sr2+sp[i].srb;{складываем ср.баллы}
t:=t+1;{считаем двоешников}
end;
end;
sr2:=sr2/t;{вычисляем средний из средних у двоешников}
if sr2=0 then writeln('Studentov? u kotoryh > 1 dvojki net!'){если таких нет}
else writeln('Srednij ball poluchivshih > 1 dvojki=',sr2:0:2);{если есть}
readln;{задержка}
writeln('Spisok studentov s familiej iz 5 bukx:');
k:=0;
for i:=1 to n do
if length(sp[i].fam)=5 then{если фамилия из 5 букв}
begin
writeln(sp[i].fam);{выводим}
k:=1; {фиксируем что есть}
end;
if k=0 then write('Takih familij net!');{если нет таких}
readln
end.

Неизвестный
21.02.2009, 20:48
общий
Супер!!! Огромное спасибо!!!
Форма ответа