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

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

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

 
 Ответить  Открыть новую тему 
> Помогите доделать задачку с текстовыми файлами
chizuru
сообщение 21.12.2009 1:36
Сообщение #1





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

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


Помогите, пожалуйста, с задачей.
Дан текстовый файл (слова разделены не менее как одним пробелом). Найти и вывести в новый файл все слова, в которых есть хотя бы одна цифра. Максимальная длина строки в начальном файле - 255 символов, кол-во строк - как минимум две. Для поиска использовать процедуру или функцию...

Пока у меня столько лишь есть... Теоретически-то вроде понятно, а практически - нет... unsure.gif

function count (stroka: string) : string;
const numbers = ['0'..'9'];
var
i, j: integer;
word, f: string;
begin
while length (stroka) > 0 do
begin
for i:= 1 to length (stroka) do
if (word [i] in numbers) then

{Вот тут уже не знаю как... }

end;
end;

var f1, f2 :text;
eil, nach, kon : string;

begin
writeln ('vvesti nazvanie isxodnogo fajla');
readln (nach);
assign (f1, 'input.txt');
writeln('vvesti nazvanie vyxodnogo fajla');
readln (kon);
assign(f2,'output.txt');

{$I-}
reset(f1);
if (ioresult = 0) then begin
rewrite(f2);
{$I+}
if (ioresult = 0) then begin
while not eof(f1) do begin
readln(f1, eil);
writeln(f2, count(eil));
end;
close(f2);
end
else writeln('nelzia otkryt fajl rezultatov');
close(f1);
end
else writeln ('neudalos otkryt isxodnyj fajl');

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


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Я написал код (на основе твоего), он делает, что надо, но только:

1. В нем не используются ни процедуры, ни функции. Сделай это сама; если не получится - спрашивай, как.

2. Входной файл я читаю не как text, а как file of char - в данном случае это упрощает задачу. Если этот вариант не годится, все будет сложнее..

3. Я немного упростил структуру проверки файлов, привлекши Halt. Это O'kay?

Задавай вопросы, если что неясно.

var
f1: file of char;
f2 :text;
w, InFile, OutFile: string;
c: char;
Dig: boolean;

begin
write ('vvedite nazvanie isxodnogo fajla: ');
readln (InFile);
assign (f1, InFile);
write('vvedite nazvanie vyxodnogo fajla: ');
readln (OutFile);
assign(f2, OutFile);

{$I-} reset(f1); {$I+}
if (ioresult >0) then begin
WriteLn('Could not open the input file, quitting now');
Halt
end;
{$I+} {$I-} rewrite(f2); {$I+}
if (ioresult >0) then begin
WriteLn('Could not open a file for output, exiting');
Halt
end;
Dig:=false;
while not eof(f1) do begin
read(f1, c);
case c of
'a'..'z','A'..'Z','_': w:=w+c;
'0'..'9': begin
w:=w+c;
Dig:=true
end;
else begin
if Dig then begin
WriteLn(f2, w);
Dig:=false
end;
w:='';
end
end;
end;
close(f2);
close(f1);
WriteLn('The output file ',OutFile,' has been created. Push Enter');
ReadLn
end.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 21.12.2009 11:16
Сообщение #3


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


Какая-то славянофобская программа, почему она игнорирует кириллицу?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 21.12.2009 11:52
Сообщение #4


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(andriano @ 21.12.2009 11:16) *
Какая-то славянофобская программа, почему она игнорирует кириллицу?
Автор темы писала интерфейс на латинице, вот я и решил, что так тому и быть )). Расширение на кириллицу можно добавить в тот мой список, 4-м пунктом.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 21.12.2009 12:30
Сообщение #5


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


Ну, латинница в консольном приложении - мера, вынужденная несоблюдением Майкрософт ГОСТ 19768-87.
К содержимому файла, который будет обрабатываться программой, это никакого отношения не имеет.
Вообще же я только обратил внимание chizuru, что в данной редакции программа может неверно обрабатывать файлы, предложенные ей в качестве тестовых.
И полностью согласен насчет 4-го пункта.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
chizuru
сообщение 21.12.2009 23:04
Сообщение #6





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

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


Lapp, Большое спасибо за помощь!!! Доделала и с процедурой.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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