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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2010, 09:21   #1
Babur4iK
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 55
По умолчанию файл, содержащий сведения о сдачи студентами сессии. Каждая запись содержит поля: номер группы, фамилия

Задача

1. Создать файл, содержащий сведения о сдачи студентами сессии. Каждая запись содержит поля: номер группы, фамилия студента, оценки по пяти экзаменам и по пяти зачётам («з» - зачёт, «н» - незачёт). Количество записей произвольное. Написать программу, выводящую на экран следующую информацию:
- фамилии неуспевающих с указанием группы и числа задолженностей;
- средний балл по группе и по каждому студенту группы.



Помогите пожалуйста,у меня выводится фамилия человека больше раз,чем надо,и выводится почему- то последний человек,а надо чтоб все фамилии выводились

помогите чем можете

type baza=record
surname: string[10];
name: string[10];
ocenka: integer;
zachet: char;

end;

var

f:file of baza; friends: array [1..100] of baza;

I,k, j, c, n: integer;
S, l:real;


begin

assign(F,'D:\baza.dat');
rewrite(f);


writeln('Введите количество людей');
readln(n);
for I:=1 to n do
begin

writeln ('введите фамилию человека');
readln (friends[i].surname);
writeln ('введите группу человека');
readln (friends[i].name);
write(F,friends[i]);
end;
for j:=1 to 5 do begin

writeln ('Введите оценку за экзамен человека');
readln( friends[j].ocenka);
writeln ('Введите зачет или незачет(з или н) человека');
readln(friends[j].zachet);
write(F,friends[j]);
writeln('---------------');
end;
close(f);
writeln;
writeln;

writeln('Файл успешно создан');
writeln;
reset(F);

while not Eof(F) do begin


for I:=1 to n do begin
read(f,friends[i]);

read(f,friends[j]); end;



for I:=1 to n do
for j:=1 to n do

if (( friends[j].ocenka)<26) or ((friends[j].zachet)='н') then Writeln('Фамилия и Имя не сдавшего экзамен или зачет,человека:',' ',friends[i].surname,' ',friends[i].name); end;


writeln;
{
k:=0;
c:=0;

for i:=1 to n do

if ((friends[i].ocenka)<26) or((friends[i].zachet)='н')then

begin inc(c);inc(k);

writeln('Количество не сдавших экзамен:', k) ;
writeln('Количество не сдавших зачет:', c);

end; }



Close(F);

end.
Babur4iK вне форума Ответить с цитированием
Старый 18.05.2010, 11:16   #2
Ol'ga_new
Форумчанин
 
Регистрация: 12.05.2010
Сообщений: 125
По умолчанию

type baza=record
surname: string[10];
name: string[10];
ocenka: integer;
zachet: char;

в описании типа не ясно, что оценка одна или вводим сразу сумму!
тогда здесь что 5 оценок?
for j:=1 to 5 do begin

writeln ('Введите оценку за экзамен человека');
readln( friends[j].ocenka);
writeln ('Введите зачет или незачет(з или н) человека');
readln(friends[j].zachet);
Ol'ga_new вне форума Ответить с цитированием
Старый 18.05.2010, 19:37   #3
Babur4iK
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 55
По умолчанию

оценок и зачетов должно быть пять!!
Babur4iK вне форума Ответить с цитированием
Старый 18.05.2010, 23:11   #4
Babur4iK
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 55
По умолчанию

вот понаделал,но весравно не рабоает,как надо:

считает средний балл только одного студента,и выводит двоешников только последнего человека,который идет самым последним((

type baza=record
surname: string[10];
name: string[10];
zach: string[50];
ozenka: integer;

home: string[50];
end;

var

f:file of baza; friends: array [1..100] of baza;
a:array[1..100] of string;
I,j,k,c,n,m,u,nomer: integer; L,s:real;
q,w:char;
begin
assign(F,'baza.dat');
rewrite(f);
q:='з';w:='н';
writeln('Введите количество людей');
readln(n);
writeln('введите номер группы');
readln(nomer);
for I:=1 to n do
begin

writeln ('введите фамилию ',' ',i,'-го студент');
readln (friends[i].surname);

for m:=1 to 5 do
begin
writeln ('Получил ли студент: ',m,'-зачет если да нажмите <з> если нет, то <н>');
readln( friends[i].zach);
while (friends[i].zach<>q) and (friends[i].zach<>w) do
begin
writeln('введите <з> или<н>'); readln( friends[i].zach);
end; end;
for m:=1 to 5 do
begin
writeln ('Введите оценки:',' ',m,'-экзамен');
readln(friends[i].ozenka);

u:=u+friends[i].ozenka ;

end;
write(F,friends[i]); end;


writeln('---------------');

close(f);
writeln;
writeln;

writeln('Файл успешно создан');
writeln;
reset(F);

while not Eof(F) do

for i:=1 to n do
read(f,friends[i]);


S:=0;
L:=0;
for i:=1 to n do
S:=U/5;
writeln('Средний балл студента ',friends[i].surname,'(а,ой): ',S);
for i:=1 to n do
if (nomer=nomer) then
L:=(U)/nomer;
writeln('Средний группы ',friends[i].name,': ',L);
for i:=1 to n do
if ((friends[i].ozenka)<52) or ((friends[i].zach)=w) then Writeln('Фамилия студета не сдавшего экзамен или зачет:',' ',friends[i].surname);
writeln;

Close(F);
end.
Babur4iK вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
справка о междугороднем тел. разговоре содержит: номер телефона абонента(6 цифр),дату(год, месяц, число) @RH@nhel Помощь студентам 2 21.06.2009 10:12
<фамилия>,<номер группы>,<оценка1>,<оценка2>,<оценка 3> kinza Помощь студентам 4 09.06.2009 15:08