Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ массивы

Автор: ut.scorpion 10.04.2008 7:41

Помогите найти ошибку в программе (программа выводит на дисплей данные только последнего абитуриента).
Вот условие: Программа должна запросить ввод: количества студентов в группе (5<=n>=10), название 4-х дисциплин, по которым сдавались экзамены и обеспечивать ввод данных о каждом студенте: ФИО, результаты сдачи каждого экзамена, определить количество студентов со средним баллом не ниже 3.5, фамилия которых начинается с заданной буквы (от А до Я) и вывести сведения о количестве таких студентов, ФИО студентов и их средний балл.

А так же помогите разобраться как ввести условие, чтобы выводились сведения о студентах фамилия которых начиналась с заданной буквы(от А до Я)

program kurs;

type T=record
fio: string[55];
ocn: array[1..4] of integer
end;
var spisok: t;
kol: integer;
N: integer;
srbal:real;
I,J: integer;
begin kol:=0;
writeln('ВВедите число абитуриентов, сдававших экзамены');
readln (N);
writeln('итоги экзаменов');
for i:=1 to N do
with Spisok do begin
write('введите фио ');
readln(Fio);
write('введите оценки ');
readln(ocn[1], ocn[2], ocn[3], ocn[4]);
for j:=1 to 4 do
srbal:=(ocn[1]+ocn[2]+ocn[3]+ocn[4])/4;
end;
writeln;
writeln('Итоги экзаменов');
writeln('№':2, 'Студент':4, 'Русский язык':12, 'Математика':8, 'Физика':8, 'информатика':12);
with spisok do begin
for i:=1 to n do begin
write(i:2, fio);
for j:=1 to 4 do
write(ocn[j]:8);
writeln;
end;
readln;

end;
end.

М
используй теги




Прикрепленные файлы
Прикрепленный файл  PROBA.PAS ( 849 байт ) Кол-во скачиваний: 200

Автор: klem4 10.04.2008 17:51

у тебя не правильно организована база, тип переменой spisok должен быть array of T, а не T

например:

spisok: array [1..10] of T; // инфа о 10ти студентах
дальше это все надо обрабатывать в цикле от 1 до 10, работая с spisok[i].

Добавлено через 1 мин.
Зачем кстати тему продублировал ? Больше так не делай, старю тему удаляю.

Автор: ut.scorpion 10.04.2008 22:15

Добавлено через 1 мин.
Зачем кстати тему продублировал ? Больше так не делай, старю тему удаляю.
[/quote]
Извиняюсь.
Вот сделал как ты и говорил (spisok: array[1..10] of t)
но ни чего не изменилось

program kurs;

type T=record
fio: string[55];
ocn: array[1..4] of integer
end;
var spisok: array[1..10] of t;
kol: integer;
N: integer;
srbal:real;
I,J: integer;
begin kol:=0;
writeln('ВВедите число абитуриентов, сдававших экзамены');
readln (N);
writeln('итоги экзаменов');
for i:=1 to N do
with Spisok[i] do begin
write('введите фио ');
readln(Fio);
write('введите оценки ');
readln(ocn[1], ocn[2], ocn[3], ocn[4]);
for j:=1 to 4 do
srbal:=(ocn[1]+ocn[2]+ocn[3]+ocn[4])/4;
end;
writeln;
writeln('Итоги экзаменов');
writeln('№':2, 'Студент':4, 'Русский язык':12, 'Математика':8, 'Физика':8, 'информатика':12, 'Средний балл':12);
with spisok[i] do begin
for i:=1 to n do begin
write(i:2, fio);
for j:=1 to 4 do
write(ocn[j]:8);
write(srbal:12:1);
writeln;
end;
readln;

end;
end.


Автор: volvo 11.04.2008 3:53

...
writeln('Итоги экзаменов');
writeln('№':2, 'Студент':4, 'Русский язык':12, 'Математика':8, 'Физика':8, 'информатика':12, 'Средний балл':12);
for i:=1 to n do
with spisok[i] do begin { <--- Сначала узнаем I, потом присоединяем через With }
write(i:2, fio);
for j:=1 to 4 do write(ocn[j]:8);
write(srbal:12:1);
writeln;
end;

Автор: ut.scorpion 11.04.2008 6:33

Спасибо. Еще немножко подкоректировал и все заработало.
Теперь буду разбираться с условием вывода информации об абитуриенте с заданной буквы и набранным средним количеством баллов...