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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2011, 16:17   #1
privetik
Новичок
Джуниор
 
Регистрация: 17.01.2011
Сообщений: 4
По умолчанию ЗАписи, застреваю на половине

Группа учеников (не более 25) сдавали экзамены по 3м предметам. Ученик, получивший на одном из экзаменов " 2 " исключается. Вывести список учеников, сдавших экзамен, и их среднюю оценку, упорядочив список по их средней оценке.

ВОт кое какие соображения по этому поводу....


Код:
program zapic;
uses crt;
const
d=25;
c=5;
type
students=record
name:string[15];
res:array[1..4] of integer;
end;
var
cmpt:array [1..d] of students;
b:array [1..d] of real;
n,i,j,l,imax:integer;
s,smax:real;
Begin
writeln ('vvedite kolichestvo studentov');
readln (n);
writeln ('vvedite familiju i rezultati studentov');
for i:=1 to n do
begin
readln(cmpt[i].name);

readln (cmpt[i].res[1],cmpt[i].res[2],cmpt[i].res[3],cmpt[i].res[4]);
end;
writeln('ishodniy protocol ');
  for i:=1 to n do
 writeln(i:4,' ',cmpt[i].name,' ',cmpt[i].res[1],' ',cmpt[i].res[2],' ',cmpt[i].res[3],' ',cmpt[i].res[4]);

i:=1;
while i<=n do
BEGIN
if (cmpt[i].res[1]=2) or (cmpt[i].res[2]=2) or (cmpt[i].res[3]=2) or (cmpt[i].res[4]=2)
 then
begin
n:=n-1;
    for l:=i to n do
      cmpt[l]:=cmpt[l+1];
 end;
 i:=I+1;
 END;
  for i:=1 to n do
 writeln(i:4,' ',cmpt[i].name,' ',cmpt[i].res[1],' ',cmpt[i].res[2],' ',cmpt[i].res[3],' ',cmpt[i].res[4]);


for i:=1 to n do
begin
s:=0;
for j:=1 to 3 do
s:=s+cmpt[i].res[j];
s:=s/3;
b[i]:=s;
end;
for i:=1 to n-1 do
begin
smax:=b[i];imax:=1;
b[i]:=b[imax];
end;
for i:=1 to n do
writeln (cmpt[i].name,b[i]:5:2);
end.

Последний раз редактировалось Stilet; 17.01.2011 в 16:32.
privetik вне форума Ответить с цитированием
Старый 17.01.2011, 16:37   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Мда... Жестоко.
Я бы делал так.
Описал бы функцию, возвращающую эту самую среднюю оценку
Код:
function avg(s:students):real;
var i:integer;
begin
 for i:=1 to 4 do avg:=avg_s.res[i];
 avg:=avg/4;
end;
А потом обычной пузырьковой сортировкой, в которой прописать условие
Код:
if avg(cmpt[i])<avg(cmpt[j]) then меняем записи местами
Где i,j - счетчики в циклах сортировки отсортировл бы записи.
А дальше еше один цикл, где вывод уже отсортированного списка, но без двоишников.

Идея понятна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.01.2011, 17:44   #3
privetik
Новичок
Джуниор
 
Регистрация: 17.01.2011
Сообщений: 4
По умолчанию

идея то понятно...
но мне необходимо сделать это з записями.. сортировку и средн значение я сделаю..
я не могу разобраться с задание условия
privetik вне форума Ответить с цитированием
Старый 17.01.2011, 17:45   #4
privetik
Новичок
Джуниор
 
Регистрация: 17.01.2011
Сообщений: 4
По умолчанию

идея то понятно...
но мне необходимо сделать это з записями.. сортировку и средн значение я сделаю..
я не могу разобраться с задание условия
privetik вне форума Ответить с цитированием
Старый 17.01.2011, 17:49   #5
privetik
Новичок
Джуниор
 
Регистрация: 17.01.2011
Сообщений: 4
По умолчанию

он исключает студента если только у него первая оценка 2...
privetik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Записи triasoft Паскаль, Turbo Pascal, PascalABC.NET 0 10.04.2009 19:00
Записи Kirra Помощь студентам 1 23.02.2009 10:12
записи paladinn Помощь студентам 1 14.01.2009 20:23
Записи RECREATOR Помощь студентам 3 25.12.2007 10:58