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

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

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

 
 Ответить  Открыть новую тему 
> Алфавитный порядок слов.., запутался
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






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


Новичок
*

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

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


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


отсортировать, я думаю, смогу.
не могу понять, как в, допустим, w (string) из s добавить только слова заданной длины n.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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;

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


Новичок
*

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

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


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

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


Гость






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


Новичок
*

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

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


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


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


Гость






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


Новичок
*

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

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


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


теперь запутался с процедурой чтения слов.. sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Новичок
*

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

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


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

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

 





- Текстовая версия 17.05.2024 15:26
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name