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

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

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

> Файлы.Текст
vi-rus
сообщение 24.05.2007 17:33
Сообщение #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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 5)
volvo
сообщение 24.05.2007 18:09
Сообщение #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 раз, причем в том же порядке, в котором они встретились в тексте... Печатаешь эту строку и все.
 К началу страницы 
+ Ответить 
vi-rus
сообщение 24.05.2007 18:36
Сообщение #3


Новичок
*

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

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


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


Новичок
*

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

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


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


Новичок
*

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

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


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


Гуру
*****

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

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


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

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

 



- Текстовая версия 31.07.2025 22:04
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"