Другие языки программирования и технологии
паскаль. в чем ошибка?
есть 2 файла. надо в третий записать символы. содержащиеся и в 1 и во 2 файле. помогите program Zadanie_3; var f,g,u:text; ch1,ch2:char; begin assign(F,'C:\F.txt'); rewrite(F); reset(F); assign(G,'C:\G.txt'); rewrite(G); reset(G); assign(U,'C:\U.txt'); rewrite(U);while not Eof(F) do beginRead(F, Ch1); while not Eof(G) do beginRead(G, Ch2); if Ch1 = Ch2 then beginWrite(U, Ch1);end;end;end;end.
Доброго времени суток.
1. Перед Reset не надо делать Rewrite. Это уничтожает входные файлв.
2. Файлы лучше сделать типизированными (file of Char) - легче будет считывать и сравнивать символы.
Вот рабочий вариант с комментариями.
program Zadanie_3;
var
f,g,u : file of Char;
ch1,ch2 : char;
begin
Assign(F,'F.txt');
Reset(F); {открываем первый файл на чтение}
Assign(G,'G.txt'); {обратите внимание, второй входной файл не сбрасываем в начало}
Assign(U,'U.txt');
Rewrite(U); {открываем выходной файл на запись}
while not Eof(F) do begin {пока не конец первого файла}
Read(F, Ch1); {читаем очередной символ}
Reset(G); {сбрасываем второй входной файл}
while not Eof(G) do begin {и пока не достигли его конца}
Read(G, Ch2); {читаем символы из второго файла}
if Ch1 = Ch2 then {и сравниваем их со считанным символом первого файла}
Write(U, Ch1); {при совпадении записываем символ в выходной файл}
end;
end;
close(F); {завкрываем файлы}
close(G);
close(U);
end.
Все. Проверки на совпадение символов не производится. Т. е. эта программа выводит те символы из первого файла, которые имеются и во втором. Если же требуется, чтобы символы, входящие в оба файла в выходном файле встречались только один раз, то задачц надо решать несколько иначе.
Удачи!
2 vovach777: не факт, что совпадут символы на одинаковых позициях.
1. Перед Reset не надо делать Rewrite. Это уничтожает входные файлв.
2. Файлы лучше сделать типизированными (file of Char) - легче будет считывать и сравнивать символы.
Вот рабочий вариант с комментариями.
program Zadanie_3;
var
f,g,u : file of Char;
ch1,ch2 : char;
begin
Assign(F,'F.txt');
Reset(F); {открываем первый файл на чтение}
Assign(G,'G.txt'); {обратите внимание, второй входной файл не сбрасываем в начало}
Assign(U,'U.txt');
Rewrite(U); {открываем выходной файл на запись}
while not Eof(F) do begin {пока не конец первого файла}
Read(F, Ch1); {читаем очередной символ}
Reset(G); {сбрасываем второй входной файл}
while not Eof(G) do begin {и пока не достигли его конца}
Read(G, Ch2); {читаем символы из второго файла}
if Ch1 = Ch2 then {и сравниваем их со считанным символом первого файла}
Write(U, Ch1); {при совпадении записываем символ в выходной файл}
end;
end;
close(F); {завкрываем файлы}
close(G);
close(U);
end.
Все. Проверки на совпадение символов не производится. Т. е. эта программа выводит те символы из первого файла, которые имеются и во втором. Если же требуется, чтобы символы, входящие в оба файла в выходном файле встречались только один раз, то задачц надо решать несколько иначе.
Удачи!
2 vovach777: не факт, что совпадут символы на одинаковых позициях.
program Zadanie_3;
var f,g,u:text; ch1,ch2:char;
begin
assign(F,'C:\F.txt'); reset(F);
assign(G,'C:\G.txt'); reset(G);
assign(U,'C:\U.txt'); rewrite(U);
while (not Eof(F)) and (not Eof(G)) do
begin
Read(F, Ch1);
Read(G, Ch2);
if Ch1 = Ch2 then
Write(U, Ch1);
end;
close(F);
close(G);
close(U);
end.
var f,g,u:text; ch1,ch2:char;
begin
assign(F,'C:\F.txt'); reset(F);
assign(G,'C:\G.txt'); reset(G);
assign(U,'C:\U.txt'); rewrite(U);
while (not Eof(F)) and (not Eof(G)) do
begin
Read(F, Ch1);
Read(G, Ch2);
if Ch1 = Ch2 then
Write(U, Ch1);
end;
close(F);
close(G);
close(U);
end.
А зачем пишешь
....rewrite(F);
....rewrite(G);
в справке по паскалю :
Rewrite creates a new external file with the name assigned to F.
F is a variable of any file type associated with an external file using AssignFile. RecSize is an optional expression, which can be specified only if F is an untyped file. If F is an untyped file, RecSize specifies the record size to be used in data transfers. If RecSize is omitted, a default record size of 128 bytes is assumed.
If an external file with the same name already exists, it is deleted and a new empty file is created in its place.
If F is already open, it is first closed and then re-created. The current file position is set to the beginning of the empty file.
If F was assigned an empty name, such as AssignFile(F,''), then after the call to Rewrite, F refers to the standard output file.
If F is a text file, F becomes write-only.
After calling Rewrite, Eof(F) is always true.
....rewrite(F);
....rewrite(G);
в справке по паскалю :
Rewrite creates a new external file with the name assigned to F.
F is a variable of any file type associated with an external file using AssignFile. RecSize is an optional expression, which can be specified only if F is an untyped file. If F is an untyped file, RecSize specifies the record size to be used in data transfers. If RecSize is omitted, a default record size of 128 bytes is assumed.
If an external file with the same name already exists, it is deleted and a new empty file is created in its place.
If F is already open, it is first closed and then re-created. The current file position is set to the beginning of the empty file.
If F was assigned an empty name, such as AssignFile(F,''), then after the call to Rewrite, F refers to the standard output file.
If F is a text file, F becomes write-only.
After calling Rewrite, Eof(F) is always true.
Похожие вопросы
- Турбо паскаль пожалуйста укажите ошибки
- Паскаль, В чем ошибка программы, кто знает поясните ошибку или хоть как то помогите, очень надо.
- программа в паскале, помогите исправить ошибку плиз
- Что означает ошибка в Паскале
- Помогите найти ошибку в несложной программке на Паскале
- Помогите найти ошибки в коде (паскаль)
- Информатика.Практическая работа по паскалю.ПОМОГИТЕ.Все нужно ввиде паскаля.мучаюсь целый день.постоянно какие-то ошибки
- Где ошибка Паскаль задача счастливый билет
- Владеющие паскалем! SOS! Найдите пожалуйста ошибку!((( думаю уже долго, ошибку найти не могу(((Помогите пожалуйста!!!
- Помогите найти ошибку в задачи,Паскаль...