Помощь - Поиск - Пользователи - Календарь
Полная версия: Записи
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
emyly
Составить список учебной группы, включающей 5 человек. Для каждого учащегося указать дату рождения, год поступления в ВУЗ, курс, группу, успеваемость по общеобразовательным предметам (математика, физика, информатика, история, ин. язык. Информацию о каждом учащемся оформить в программе в виде записи. Совокупность записей объединить в массив. Распечатать список студентов, фамилии которых начинаются с буквы А, и их оценки.

В FAQ была,читала. Программка вот:

Код
program grupa;
type student=record
fio : string[10];
godr:1986..1988;
godpostup:2003..2005;
ocenky:record
matem,history,inform,inglish,fizika:1..5
end
end;
var grupa: array [1..5] of student;
s1: student; i,j: integer;
begin
with s1, ocenky   do
begin
for i:=1 to 5 do
begin
write('Vvedite danie=>');
for j:= 1 to 5  do
read(fio[j]);
readln(godr,godpostup,matem,history,inform,inglish,fizika); {при запуске в этой строке выдаётся ошибка 201:Ошибка при проверке границ.}
grupa[i]:=s1
end
end;
writeln ('Spisok studentov na bukvu A:');
for i:= 1 to 5  do with grupa[i] do
if fio[1] in [‘A’] then
writeln  (fio,'godr',godr:4,'godpostup=', godpostup:4, ocenky);
end.



Что посоветуете для устранения ошибки и по программе вообщем? И ещё, совершенно дурацкий вопрос: как вводить данные после запуска программы? В какой последовательности? Помогите пожалуйста. unsure.gif
volvo
Цитата(emyly @ 4.05.2006 13:20)
Что посоветуете для устранения ошибки и по программе вообщем?

Цитата(emyly @ 4.05.2006 13:20)
И ещё, совершенно дурацкий вопрос: как вводить данные после запуска программы? В какой последовательности?

Вот... А теперь совет: если бы ты эти вопросы задала в обратном порядке (сначала - что вводить), то второго вопроса просто не было бы...

Что такое "Ошибка 201: Range Check Error"? Это значит, что вводимые тобой данные выходят за границы своих типов, например переменная типа Byte (может принимать значения 0 .. 255), а ты пытаешься туда запихнуть -1, к примеру...

Смотрим на строку, ожидающую ввода данных:
readln(godr,godpostup,matem,history,inform,inglish,fizika);

Если ты это перепишешь вот так:

Write('Год рождения [1986 .. 1988] : '); readln(godr);
Write('Год поступления [2003 .. 2005] : '); readln(godpostup);
Writeln('Оценки [1 .. 5] :');
Write('математика: '); readln(matem);
Write('история: '); readln(history);
Write('информатика: '); readln(inform);
Write('английский: '); readln(inglish);
Write('физика: '); readln(fizika);


кому-то будет хуже? Нет, но ты же сама уже никогда не ошибешься при вводе значений...
emyly
Кстати, С днем Рожденья! Желаю, чтобы всё было и ни фига за это не было good.gif

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

Код
writeln ('Spisok studentov na bukvu A:');
for i:= 1 to 5  do with grupa[i] do
if fio[1] in [‘A’] then
writeln  (fio,'godr',godr:4,'godpostup=', godpostup:4, ocenky);    -{здесь проверьте,пожалуйста}
emyly
прошу прощения, не успела вовремя отредактировать сообщение wink.gif
volvo
Вот так попробуй:
writeln ('Spisok studentov na bukvu A:');
for i:= 1 to 5 do with grupa[i] do
if fio[1] in ['A'] then
with ocenky do
writeln(fio,'godr: ',godr:4,'godpostup=', godpostup:4,
matem:3, history:3, inform:3, inglish:3, fizika:3);
emyly
не реагирует. Последняя фраза, что он выводит, это: "список студентов на букву А"
Код
writeln ('Spisok studentov na bukvu A:');-----после двоеточия ведь не указано, что он должен вывести, может в этом ошибка?

Что-то я уже совсем запуталась.
volvo
ПРИСОЕДИНИ программу полностью, как ты ее запускаешь. Именно присоедини, а не копируй сюда.

И данные, которые вводишь. Я больше повторять не буду. Не хочешь, чтобы тебе помогали - не надо!
emyly
воть задача(кол-во студентов сократила до 3).
Ввожу(подряд,как запрашивает):

Иванов
1988
2005
5
3
4
5
4

Сидоров
1987
2003
3
4
2
5
4

Алиева
1988
2005
4
4
5
5
5


Нажмите для просмотра прикрепленного файла
volvo
В строчке
if fio[1] in ['A'] then
у тебя буква 'A' латинская... Исправь на русскую...

А лучше - сделай 2 буквы во множестве - одна латинская, другая русская...
emyly
Вообщем,спасибо за всё! Кстати,всё равно не работает. Ну,значит, не судьба smile.gif Спасибо!
volvo
А если вот так попробовать:
program gruppa;
uses crt;
type
student = record
fio: string[20];
godr: 1986..1988;
godpostup:2003..2005;
ocenky:record
matem,fizika,inform,history,english:1..5
end;
end;

var
grupa: array [1..3] of student;
s1: student; i,j: integer;

begin
clrscr;
with s1, ocenky do begin
for i:=1 to 3 do begin
writeln ('vvedi dannie');
write ('fio '); readln (fio);
write ('godr [1986..1988]:'); readln (godr);
write ('godpostup [2003..2005]:');readln (godpostup);
writeln ('ocenky [1..5]:');
write ('matem:'); readln (matem);
write ('fizika:'); readln (fizika);
write ('inform:'); readln (inform);
write ('history:'); readln (history);
write ('english:'); readln (english);
grupa [i]:=s1
end
end;

writeln ('spisok studentov na bukvu A:');
for i:=1 to 3 do with grupa[i] do begin
if fio[1] in ['A'] then { <--- Добавь еще русскую A}
with ocenky do
writeln (fio, ' godr=',godr:4, ' godpostup=', godpostup,
matem:3,history:3,inform:3, english:3,fizika:3);
end;
readln;
end.

?
emyly
как ни смешно это звучит,но всё без изменений. lol.gif
volvo
А вот этому я просто не верю... Понимаешь? НЕ ВЕРЮ!!! Я гонял эту программу во всех доступных мне компиляторах, и во всех все прекрасно работает. У ТЕБЯ же - почему-то (спрашивается, почему ТОЛЬКО у тебя???) не работает?

НЕ ВЕРЮ!
emyly
lol.gif lol.gif lol.gif lol.gif lol.gif
А я правду говорила. Именно у Меня эта программа не работала. А вот в универе-всё пучком,с первого раза!
Спасибочки! good.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.