![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
vi-rus |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
Дано такое задание :
Дан файл, содержащий текст на русском языке. Выбрать из него только те символы, которые встречаются в нем только один раз, в том порядке, в котором они встречаются в тексте. ( исходные текстовые файлы создаются с помощью какого-либо текстового редактора ) Вот примерно сделал, но не работает ( пишет 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.
|
volvo |
![]()
Сообщение
#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 |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
Большое спасибо!
![]() |
vi-rus |
![]()
Сообщение
#4
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
Подскажи, пожалуйста, как исправить проблему с русским языком ? программа выдает какие-то иероглифы
|
vi-rus |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ответьте, пожалуйста !!!
|
Ozzя |
![]()
Сообщение
#6
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
1. Turbo Pascal на Xp.
2. Текст в чем набирал? В Блокноте? Тогда он у тебя в кодировке ANSI. А программа думает, что ты ей даешь в ASCII. |
![]() ![]() |
![]() |
Текстовая версия | 31.07.2025 3:43 |