IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Файлы.Текст
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


Дано такое задание :
Дан файл, содержащий текст на русском языке. Выбрать из него только те символы, которые встречаются в нем только один раз, в том порядке, в котором они встречаются в тексте.
( исходные текстовые файлы создаются с помощью какого-либо текстового редактора )
Вот примерно сделал, но не работает ( пишет 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.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
Вот примерно сделал, но не работает
И правильно делает... Как минимум файл надо открыть для чтения:
 assign(tex,'labfile\zadanie3.txt');
reset(tex); { <--- Забыл }
assign(tex2,'labfile\za31.txt');
rewrite(tex2);

Для записи-то ты его открываешь...

Да и сама программа тоже не совсем правильная... Смотри: описываешь 2 строки. Одна будет хранить все символы, которые до данного момента встречались в тексте только 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; { символ встретился впервые - добавляем его в конец строки ОДНАЖДЫ }
...
В результате в строке str_once останутся только символы, встречающиеся ровно 1 раз, причем в том же порядке, в котором они встретились в тексте... Печатаешь эту строку и все.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


Большое спасибо! good.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


Подскажи, пожалуйста, как исправить проблему с русским языком ? программа выдает какие-то иероглифы
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


Ответьте, пожалуйста !!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


1. Turbo Pascal на Xp.
2. Текст в чем набирал? В Блокноте? Тогда он у тебя в кодировке ANSI. А программа думает, что ты ей даешь в ASCII.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 27.09.2020 5:23
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name