Дано такое задание :
Дан файл, содержащий текст на русском языке. Выбрать из него только те символы, которые встречаются в нем только один раз, в том порядке, в котором они встречаются в тексте.
( исходные текстовые файлы создаются с помощью какого-либо текстового редактора )
Вот примерно сделал, но не работает ( пишет File not open to input ) . Подскажите, что за ошибка и вообще может программа неправильно написана ?
program lab_file_zadanie2;
uses crt;
type ff= text;
var i,k,z:integer;
tex,tex2:ff;
begin
clrscr;
assign(tex,'labfile\zadanie3.txt');
assign(tex2,'labfile\za31.txt');
rewrite(tex2);
while not eof(tex) do
begin
read(tex,i);
z:=i;
while not eof(tex) do
begin
read(tex,i);
if z=i then write(tex2,i);
end;
end;
close(tex);
close(tex2);
reset(tex2);
while not eof(tex2) do
begin
read(tex2,i);
write(i,' ');
end;
close(tex2);
repeat until keypressed;
end.
assign(tex,'labfile\zadanie3.txt');Для записи-то ты его открываешь...
reset(tex); { <--- Забыл }
assign(tex2,'labfile\za31.txt');
rewrite(tex2);
...В результате в строке str_once останутся только символы, встречающиеся ровно 1 раз, причем в том же порядке, в котором они встретились в тексте... Печатаешь эту строку и все.
read(tex, ch); { <--- читаешь символ }
if pos(ch, str_more) = 0 then
if pos(ch, str_once) > 0 then begin
{ символ уже встречался один раз, сейчас - второй раз }
delete(str_once, pos(ch, str_once), 1); { поэтому удаляем его из строки ОДНАЖДЫ }
str_more := str_more + ch; { и добавляем в строку МНОГОКРАТНО (порядок здесь не важен) }
end
else str_once := str_once + ch; { символ встретился впервые - добавляем его в конец строки ОДНАЖДЫ }
...
Большое спасибо!
Подскажи, пожалуйста, как исправить проблему с русским языком ? программа выдает какие-то иероглифы
Ответьте, пожалуйста !!!
1. http://forum.pascal.net.ru/index.php?showtopic=779
2. Текст в чем набирал? В Блокноте? Тогда он у тебя в кодировке ANSI. А программа думает, что ты ей даешь в ASCII.