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

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

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

Автор: Fakir 30.11.2003 17:56

В файле записаны данные об учениках
ФИО
Дата рождения
домашний адрес
телефон
Требуется:
1 Распечатать список учеников.
2 Определить фамилии самого старшего и самого младшего учеников.
3 Сформировать файл, содержащий фамилии и адреса учеников, родившихся  в заданном месяце.
Примечание:
С данными об учениках работать как с записями.
В программе использовать процедуры и функции.
Пример записи данных в файле об одном ученике
Петров Петр Петрович 3.06.1985 пр.Ветеранов,8;кв34 44444

Автор: GLuk 30.11.2003 21:18

А что конкретно у тебя не получается??
Неужели все??

Автор: Fakir 30.11.2003 21:46

Вообщем щас уже кое че получилось, но ещё вопрос есть '1986' типа string, надо перевести её чтобы можно было сравнивать с другими числами.

Автор: GLuk 30.11.2003 22:34

Может быть VAL тебе поможет??!!
Пости код...

Автор: trminator 30.11.2003 22:46

Посмотри процедуру val

Автор: Fakir 30.11.2003 23:14

program tc;
var infa:array[1..10] of record
name,
adres,
tel,
date:string;
end;
var b,i,j,h,max:integer;
d:array[1..10] of string;
m:array[1..10] of string;
y:array[1..10] of string;
s:string;
begin
assign(input,'D:dok.txt');
assign(output,'D:dok1.txt');
reset(input);
rewrite(output);
while (not EOF) do
begin
b:=b+1;
readln(input,s);
if s='' then
begin
b:=0;
i:=i+1;
end;
if b=1 then infa[i+1].name:=s;
if b=2 then infa[i+1].date:=s;
if b=3 then infa[i+1].adres:=s;
if b=4 then infa[i+1].tel:=s;
end;
for j:=1 to 2 do
begin
d[j]:=copy(infa[j].date,1,2);
m[j]:=copy(infa[j].date,3,2);
if (val(d[j]))/10<1 then y[j]:=copy(infa[j].date,6,4)
else y[j]:=copy(infa[j]/date,7,4);
end;
for j:=1 to 2 do
if y[j]<y[j+1] then h:=j else h:=y[j+1];
write(output,'CaMbIu CTaPLLIuu y4eHuK',infa[h].date);
end.



Файл, из которого считываю
Цитата
Семенов Константин Ярославович
12.01.1986
ул.Парковая,2;кв45
55555

Трутнев Иван Сергеевич
24.05.1988
ул.Студенческая,10;кв66
66666

Петров Петр Петрович
03.06.1985
пр.Ветеранов,8;кв34
44444


if (val(d[j]))/10<1 -- здесь выдает ошибку Error in expression
Ещё вопрос: какая ф-ция используется для распечатывания;
Че в проге можно заменить процедурами и ф-циями

Автор: trminator 30.11.2003 23:39

Я имел ввиду, посмотри справку по val - там есть ее синтаксис. val - процедура, а не функция. Спрашивай, если что.

Автор: Fakir 1.12.2003 0:37

Ну так в чем там фигня то, никто не в курсе? Вроде все правильно var(d[j]), d[j]- строковая переменная, а ошибку выдает.

Автор: trminator 1.12.2003 14:55

var a: integer;
     err_code : integer;
     s : string;
begin
readLn(s);
val(s, a, code); { <--- !!! }
writeLn(a)
end.