Глава 26. Задание " Б ", " В "
Добавлено:
02.11.2016 18:16:03
Герман
Правильно ли так?:
- Код: Выделить всё
var FileIn, FileOut : text;
S : string;
k : integer;
procedure Snomerami(var arg : string);
begin
Assign(FileOut, 'Konechniy.txt');
Rewrite(FileOut);
Readln(Filein, arg);
Writeln(k);
Writeln(Fileout, arg);
Close(FileOut);
end;
{---- Glavnaya programma ----}
begin
Assign(FileIn, 'Ishodnik.txt');
Reset(FileIn);
k := 1;
while not Eof(FileIn) do
begin
Readln(FileIn, S);
k := k + 1;
Snomerami(S);
end;
Close(FileIn);
end.
Ответ из книги:
- Код: Выделить всё
var F1, F2: text;
N: integer;
s: string;
begin
Assign(F1, 'Test.in'); Reset(F1);
Assign(F2, 'Test.out'); Rewrite(F2);
N:=1;
while not Eof(F1) do begin
Readln(F1, S);
Writeln(F2,N);
Writeln(F2,S);
N:= N+1;
end;
Close(F1); Close(F2);
end.
Добавлено спустя 1 час 10 минут 8 секунд:Дошло, что можно сделать тупо в блокноте исходный файл и проверить. Не вышел каменный цветок.
Re: Глава 26. Задание " Б ".
Добавлено:
02.11.2016 21:56:31
Oleg_D
Всё нормально, делаем ошибки и учимся. Успехов!
Re: Глава 26. Задание " Б ", " В "
Добавлено:
03.11.2016 00:37:47
Герман
Продолжаю не вкуривать. Ответ на задание " B ":
- Код: Выделить всё
В) Скопировать один файл в другой с перестановкой местами четных и нечетных
строк.
var F1, F2: text;
S1, S2: string;
begin
Assign(F1, 'Test.in'); Reset(F1);
Assign(F2, 'Test.out'); Rewrite(F2);
while not Eof(F1) do begin
Readln(F1, S1);
if not Eof(F1) then begin
Readln(F1, S2);
Writeln(F2,S2);
end;
Writeln(F2,S1);
end;
Close(F1); Close(F2);
Writeln('OK');
Readln;
end.
Вообще непонятно как это работает.
Добавлено спустя 9 часов 20 минут 22 секунды:Пошел длинным путем, но он мне более понятен:
- Код: Выделить всё
var F0, F1, F2, F3 : text; { F3- konechniy fail }
S : string;
k : integer;
A : boolean;
begin
Assign(F0, 'P_26_slabo_V_F0.txt');
Reset(F0);
Assign(F1, 'P_26_slabo_V_F1.txt');
Rewrite(F1);
Assign(F2, 'P_26_slabo_V_F2.txt');
Rewrite(F2);
Assign(F3, 'P_26_slabo_V_F3.txt');
k := 1;
while not Eof(F0) do
begin
Readln(F0,S);
if ((k mod 2) = 0)
then Writeln(F1, S) { nechetnie stroki iz F0 pomeschaet v F2, chetnie v F1 }
else Writeln(F2, S);
k := k +1;
end;
Close(F0);
Close(F1); { poluchili iz F0 dva faila s izmenennimi nomerami strok s nechetnih na chetnie i naoborot }
Close(F2);
Reset(F1);
Reset(F2);
Rewrite(F3);
While not Eof(F1) or not Eof(F2) do
begin
Readln(F1, S);
Writeln(F3,S);
Readln(F2, S);
Writeln(F3,S);
end;
Close(F1);
Close(F2);
Close(F3);
Readln;
end.
Re: Глава 26. Задание " Б ", " В "
Добавлено:
03.11.2016 20:57:43
Oleg_D
Идея ваша понятна, но есть ошибка на этапе формирования конечного файла, найдите сами.
Что до моего решения, то там из исходного файла читаются по две строки (S1, S2), а пишутся тоже по две, но в другой последовательности (S2, S1).
Re: Глава 26. Задание " Б ", " В "
Добавлено:
03.11.2016 22:05:56
Герман
Спб. Надо сделать так, чтобы, когда в исходном файле было нечетное количество строк, конечный файл формировался правильно.
- Код: Выделить всё
do
begin
if not Eof(F1)
then
begin
Readln(F1, S);
Writeln(F3,S);
end;
if not Eof(F2)
then
begin
Readln(F2, S);
Writeln(F3,S);
end;
end;
Re: Глава 26. Задание " Б ", " В "
Добавлено:
03.11.2016 22:26:48
Oleg_D
Да, не забывайте проверять на конец файла перед каждой операцией чтения.
Re: Глава 26. Задание " Б ", " В "
Добавлено:
03.11.2016 22:30:44
Герман
Я привык к html, поэтому как переписал ответ для удобоваримой мне форме, стало сразу ясно. Вообще, программирование похоже на танцы с бубном, надо так исхитриться, чтобы додуматься как из циклов, формул и условий " сшить костюмчик ".
- Код: Выделить всё
var F1, F2 : text;
S1, S2 : string;
begin
Assign(F1, 'P_26_slabo_V_Oleg_F1.txt');
Reset(F1);
Assign(F2, 'P_26_slavo_V_Oleg_F2.txt');
Rewrite(F2);
while not Eof(F1) do
begin
Readln(F1, S1);
if not Eof(F1)
then
begin
Readln(F1, S2);
Writeln(F2, S2);
end;
Writeln(F2, S1);
end;
Close(F1);
Close(F2);
Writeln('OK');
Readln;
end.
Re: Глава 26. Задание " Б ", " В "
Добавлено:
03.11.2016 22:56:16
Oleg_D
Герман писал(а):надо так исхитриться, чтобы додуматься как из циклов, формул и условий " сшить костюмчик ".
Опыт приходит со временем, если работать. А занятие это интересное, увлекательное -- на мой взгляд.