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

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

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

 
 Ответить  Открыть новую тему 
> Алфавитный порядок слов.., запутался
b0b
сообщение 4.12.2005 21:17
Сообщение #1


Новичок
*

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

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


вечер добрый.
задачка такая.

Дан текстовый файл с уже набранным текстом. напечатать в алфавитном порядке все слова из данного файла, имеющих заданную длину n.

написал процедуру открытия файла:

procedure open(var f:text);
var name:string[40];
    ok:boolean;
begin
  repeat
    write('Vvedite name of file: ');
    readln(name);
    assign(f,name);
    {$i-}reset(f); {$i+}
    ok:=IOResult=0;
  until ok=true;
end;


и процедуру чтения слов из файла:

procedure word(var f:text; var w:string);
var ch:string;
begin
  repeat
    readln(f,ch);
  until ch <> ' ';
    w:='';
    repeat
      w:=w+ch;
      readln(f,ch);
    until (ch=' ') or (eoln(f)) or (eof(f));
    if ch <> ' ' then w:=w+ch;
    if eoln(f) then readln(f);
end;


а вот дальше чет немогу...sad.gif
нужно срочно..

Сообщение отредактировано: b0b - 4.12.2005 21:24
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 4.12.2005 21:26
Сообщение #2


Гость






А дальше - все слова с заданной длиной пишешь в массив строк, потом сортируешь массив по возрастанию любым способом отсюда: FAQ: Методы сортировок
и распечатываешь...
 К началу страницы 
+ Ответить 
b0b
сообщение 4.12.2005 21:30
Сообщение #3


Новичок
*

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

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


Цитата(volvo @ 4.12.2005 21:26)
А дальше - все слова с заданной длиной пишешь в массив строк, потом сортируешь массив по возрастанию любым способом отсюда: FAQ: Методы сортировок
и распечатываешь...


отсортировать, я думаю, смогу.
не могу понять, как в, допустим, w (string) из s добавить только слова заданной длины n.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 4.12.2005 21:37
Сообщение #4


Гость






Погоди, у тебя же есть процедура чтения слов... Что, нельзя после получения очередного слова проверить его длину? Как-то вот так:
var
  arr: array[1 .. 200] of string[50];
  count: integer;
  next_word: string;
...
{ открываем файл, запрашиваем чему равно N ... }
  count := 0;
  while not eof(f) do begin

    GetWord(f, next_word); { это твоя функция чтения слов из файла }
    if length(next_word) = n then begin
      { добавляем слово в массив }
      inc(count); arr[count] := next_word;
    end;

  end;

  { и сортируем массив }
...
 К началу страницы 
+ Ответить 
b0b
сообщение 4.12.2005 21:40
Сообщение #5


Новичок
*

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

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


Цитата(volvo @ 4.12.2005 21:37)
Погоди, у тебя же есть процедура чтения слов... Что, нельзя после получения очередного слова проверить его длину? Как-то вот так:

да, чтения слов.
но читает она посимвольно..или это не имеет значения?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 4.12.2005 21:49
Сообщение #6


Гость






А какая разница? Получаешь-то ты все равно строку...
 К началу страницы 
+ Ответить 
b0b
сообщение 4.12.2005 21:55
Сообщение #7


Новичок
*

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

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


Цитата(volvo @ 4.12.2005 21:49)
А какая разница? Получаешь-то ты все равно строку...


да. посимвольно. допустим, составили слово "test", затем "fire". записали их в строку. а каким образом проверить, 4 они символа или нет, если записываем посимвольно.
бр..запутался
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 4.12.2005 22:01
Сообщение #8


Гость






На мой пример посмотри ... Записывать не в строку, а в массив строк...
 К началу страницы 
+ Ответить 
b0b
сообщение 4.12.2005 22:11
Сообщение #9


Новичок
*

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

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


Цитата(volvo @ 4.12.2005 22:01)
На мой пример посмотри ... Записывать не в строку, а в массив строк...


теперь запутался с процедурой чтения слов.. sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
b0b
сообщение 4.12.2005 22:21
Сообщение #10


Новичок
*

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

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



program 2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var f1:text;
    n,count,i,k:integer;
    s:string;
    arr:array[1..200] of string[50];
    next_word:string;

procedure open(var f:text);
var name:string[40];
    ok:boolean;
begin
  repeat
    write('Vvedite name of file: ');
    readln(name);
    assign(f,name);
    {$i-}reset(f); {$i+}
    ok:=IOResult=0;
  until ok=true;
end;

procedure word(var f:text; var w:array of string);
var ch:string;
begin
  repeat
    readln(f,ch);
  until ch <> ' ';
    w[i]:='';
    repeat
      w[i+1]:=w[i]+ch;
      readln(f,ch);
    until (ch=' ') or (eoln(f)) or (eof(f));

    if ch <> ' ' then w[i+1]:=w[i]+ch;
    if eoln(f) then readln(f);
end;
begin
   write('Vvedite dlinu: ');
   readln(n);

   open(f1);
   writeln;

   count:=0;
   while not eof(f1) do begin
    word(f1,next_word);
    if length(next_word) = n then begin
      inc(count); arr[count]:=next_word;
    end;

end;
 readln;
end.


вот все собрал. бардак какой-то получился smile.gif.
непашет нифига..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 4.12.2005 22:40
Сообщение #11


Гость






b0b,
вот эта программка у меня только что корректно прочла все слова из файла, и распечатала те из них, которые были с заданной длиной... Тебе осталось только отсортировать файл Arr по возрастанию... yes2.gif
uses
  SysUtils;

type
  t_string = string[50];

var
  f1:text;
  n,count,i,k:integer;
  s:string;
  arr:array[1 .. 200] of t_string;
  next_word: t_string;

procedure open(var f:text);
var
  name:string[40];
  ok:boolean;
begin
  repeat
    write('Vvedite name of file: ');
    readln(name);
    assign(f,name);
    {$i-} reset(f); {$i+}
    ok:=IOResult=0;
  until ok=true;
end;

procedure word(var f:text; var w: t_string);
var ch:char;
begin
  repeat
    read(f,ch);
  until ch <> ' ';

  w := '';
  repeat

    w := w + ch;
    read(f, ch);
    if (ch = #32) or eof(f) or eoln(f) then break;

  until false;

  if ch <> ' ' then w := w + ch;
  if eoln(f) then readln(f);

end;

begin
   write('Vvedite dlinu: ');
   readln(n);

   open(f1);
   writeln;

   count:=0;
   while not eof(f1) do begin

    word(f1,next_word);
    writeln('read from file: ', next_word);
    if length(next_word) = n then begin
      inc(count); arr[count]:=next_word;
    end;

   end;

   for i := 1 to count do writeln(arr[i]);
   readln;
end.
 К началу страницы 
+ Ответить 
b0b
сообщение 4.12.2005 22:43
Сообщение #12


Новичок
*

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

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


volvo, крепко жму лапу. smile.gif. спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 

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