|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.05.2010, 09:21 | #1 |
Пользователь
Регистрация: 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. |
18.05.2010, 11:16 | #2 |
Форумчанин
Регистрация: 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); |
18.05.2010, 19:37 | #3 |
Пользователь
Регистрация: 06.10.2009
Сообщений: 55
|
оценок и зачетов должно быть пять!!
|
18.05.2010, 23:11 | #4 |
Пользователь
Регистрация: 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. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
справка о междугороднем тел. разговоре содержит: номер телефона абонента(6 цифр),дату(год, месяц, число) | @RH@nhel | Помощь студентам | 2 | 21.06.2009 10:12 |
<фамилия>,<номер группы>,<оценка1>,<оценка2>,<оценка 3> | kinza | Помощь студентам | 4 | 09.06.2009 15:08 |