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 0:23
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"