Страница 1 из 2
Задача на Паскале.
Добавлено: 19 ноя 2010, 12:37
papalamer
Создать файл, содержащий записи о дате: день (1..31), месяц (1..12), год (00..99). Переписать этот файл в два текстовых файла, дату представить в форме дд.мм.гг. В одну строку включить одну дату. В один текстовый файл включить даты для летних месяцев, в другой – для зимних.
Код: Выделить всё
program Lr3;
uses crt;
var
date,summer,winter : text;
d,s,w : integer;
begin
assign(d, 'date.txt');
rewrite(s, 'summer.txt');
rewrite(w, 'winter.txt');
assign(s, 'summer.txt');
assign(w, 'winter.txt');
reset(d);
while not EOF do readln(date)
begin
if pos(.1. or .2. or .12.) then append(w)
if pos(.6. or .7. or .8.) then append(s)
end;
readln(s);
readln;
close(d);
close(s);
close(w);
end.
Что не так?
Re: Задача на Паскале.
Добавлено: 19 ноя 2010, 14:10
dr.Jekill
В первую очередь занеси чтение данных в цикл и посмотри какие параметры у функции pos.
И ты ничего не пишешь в файлы summer.txt и winter.txt - только открываешь для добавления в конец.
Re: Задача на Паскале.
Добавлено: 19 ноя 2010, 15:38
XTen
Пиши, реализую
ICQ: 410691984
Re: Задача на Паскале.
Добавлено: 20 ноя 2010, 22:22
papalamer
Код: Выделить всё
program Lr3;
uses crt;
var
date,summer,winter : text;
d,s,w : string;
begin
assign(date, 'date.txt');
assign(summer, 'summer.txt');
assign(winter, 'winter.txt');
rewrite(summer);
rewrite(winter);
reset(date);
append(winter);
append(summer);
while not EOF(date) do
begin
readln(d);
if pos('..',d) = (12 or 1 or 2) then writeln(winter);
if pos('..',d) = (6 or 7 or 8) then writeln(summer);
end;
close(date);
close(summer);
close(winter);
end.
Подправил, но в файлы не пишет. Что дальше?
Re: Задача на Паскале.
Добавлено: 20 ноя 2010, 23:31
dr.Jekill
Переменные d,s,w целочисленного типа, а вы используете их как файловые переменные.
В вашем случаем достаточно 4 переменных: 3-ёх файловых и 1-ой строки.
append убрать;
для чтения из файла в readln нужно указывать файл, из которого читаем;
если в файле данные хранятся в формате dd.mm.yy, то месяц можно взять так: copy(date,4,2)
Re: Задача на Паскале.
Добавлено: 20 ноя 2010, 23:49
papalamer
Переменные я изменил на string. Дата в формате день (1..31), месяц (1..12), год (00..99).
Re: Задача на Паскале.
Добавлено: 21 ноя 2010, 00:03
dr.Jekill
papalamer писал(а):Переменные я изменил на string.
а зачем? нужно три файловых переменных - у вас они описанны:
date ,summer,winter : text]Дата в формате день (1..31), месяц (1..12), год (00..99).[/QUOTE]
А это что? :
papalamer писал(а):дату представить в форме дд.мм.гг.
Re: Задача на Паскале.
Добавлено: 21 ноя 2010, 00:14
papalamer
Условие не я придумал.
Код: Выделить всё
program Lr3;
uses crt;
var
date,summer,winter : text;
d : string;
begin
assign(date, 'd:\date.txt');
assign(summer, 'summer.txt');
assign(winter, 'winter.txt');
rewrite(summer);
rewrite(winter);
reset(date);
while not EOF(date) do
begin
read(date,d);
if pos('..',d) = (12 or 1 or 2) then writeln(winter);
if pos('..',d) = (6 or 7 or 8) then writeln(summer);
end;
close(date);
close(summer);
close(winter);
end.
Компилится без ошибок, но в файлы не пишет.
Re: Задача на Паскале.
Добавлено: 21 ноя 2010, 00:41
dr.Jekill
[syntax='pascal']
while not eof(date) do
begin
readln(date,d);
d:=copy(d,4,2);
if (d='12') or (d='01') or (d='02') then
writeln(winter,d);
if (d='06') or (d='07') or (d='08') then
writeln(summer,d);
end;
[/syntax]
Re: Задача на Паскале.
Добавлено: 21 ноя 2010, 00:43
dr.Jekill
papalamer, называйте темы правильно!