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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 11)
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

 



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