Другие языки программирования и технологии

Нужно получить массив слов из текстового файла

Нужно получить массив слов из текстового файла. Предположим что слова содержат только латинские символы и разделены пробелами (или это строки). Я так понимаю, тут несколько строк, но не могу написать... Помогите плз!
Раатбек •
Раатбек •
3 662
Доброго времени суток.

Немного не так, Дима Иванов. Нигде не сказано, что в каждой строке по одному слову, а, значит, может быть и несколько. Вот их-то и надо выделить и записать в массив.

m := 0; {индекс массива слов}
Memo1.Lines.LoadFromFile('file.txt');
for i:=0 to Memo1.Lines.Count - 1 do begin {надо до минус 1}
tmpS := Trim(Memo1.Lines[ i]) + ' '; {обрезаем ведущие и концевые пробелы и добавляем пробел}
while Pos(' ', tmpS) > 0 do begin {пока есть пробелы, а значит и слова }
S := Copy(tmpS, 1, Pos(' ', tmpS) -1); {копируем часть строки до пробела}
Delete(tmpS, 1, Pos(' ', tmpS)); {и удаляем ее из временной строки}
if S <> '' then begin {если строка не пустая}
Inc(m); {увеличиваем индекс массива слов}
arr[m] := S; {и записываем слово в массив}
end;
end;
end;

Примерно так.

Удачи!

PS Вы бы определились на чем вам надо. Первой репликой было, что на делфи. :-) А потом вдруг оказывается, что речь идет уже о псевдопаскале. Кстати, что это? Но все равно, суть предложенного алгоритма не меняется. Просто нужно исключить компонент TMemo и самому реализовать функцию Trim. А так все остается по-прежнему. Считывается строка из файла, из нее выделяются слова и записываются в массив.

Эх! Вот вам на вашем псевдо. :-)

while not eof(F) do begin {читаем пока не конец файла}
readln(F,S); {прочитали строку из файла}
S := S + ' '; {добавляем пробел, чтобы не потерять последнее слово в строке}
while Pos(' ', S) > 0 do begin {пока есть пробелы, а значит и слова }
tmpS := Copy(S, 1, Pos(' ', S) -1); {копируем часть строки до пробела}
Delete(S, 1, Pos(' ', S)); {и удаляем ее из временной строки}
if tmpS <> '' then begin {если строка не пустая}
Inc(m); {увеличиваем индекс массива слов}
w[m] := tmpS; {и записываем слово в массив}
end;
end;
end;
CloseFile(F); {файл можно закрыть}

Теперь переменная m содержит число слов. Распечатать их можно так

for i:=1 to m do WriteLn(w[ i ]);
Христиан Коваленко
Христиан Коваленко
59 613
Лучший ответ
Раатбек • спасибо. псевдопаскаль я имел в виду консольный режим турбо делфи.)
var
s:array [1..100] of string;
l:integer;
begin
assign(input,'file.txt');
reset(input);
l := 0;
while not eof do
begin
inc(l);
readln(s[l]);
end;
close(input);
end.
Это при условии, что в каждой строке записано отдельное слово
На PHP:
$filename = fopen("file.txt", 'r');
$arrayname = fgetcsv($filename, 100, "\n"); // разделение по строкам
fclose($filename);

А на делфи ХЗ.
Я тока пых знаю)
TB
Talgat Bisenkulov
1 468
Memo1.Lines.LoadFromFile('file.txt');
for i:=0 to Memo1.Lines.Count do
arr[ i]:=Memo1.Lines[ i];
Rainmen X
Rainmen X
694
Memo1.Lines.LoadFromFile('file.txt');
for i:=0 to Memo1.Lines.Count do
arr[ i]:=Memo1.Lines[ i];
var
s:array [1..100] of string;
l:integer;
begin
assign(input,'file.txt');
reset(input);
l := 0;
while not eof do
begin
inc(l);
readln(s[l]);
end;
close(input);
end.
m := 0; {индекс массива слов}
Memo1.Lines.LoadFromFile('file.txt');
for i:=0 to Memo1.Lines.Count - 1 do begin {надо до минус 1}
tmpS := Trim(Memo1.Lines[ i]) + ' '; {обрезаем ведущие и концевые пробелы и добавляем пробел}
while Pos(' ', tmpS) > 0 do begin {пока есть пробелы, а значит и слова }
S := Copy(tmpS, 1, Pos(' ', tmpS) -1); {копируем часть строки до пробела}
Delete(S, 1, Pos(' ', tmpS)); {и удаляем ее из временной строки}
if S <> '' then begin {если строка не пустая}
Inc(m); {увеличиваем индекс массива слов}
arr[m] := S; {и записываем слово в массив}
end;
end;
end;
Христиан Коваленко Копипастер? :-)
Евгений Приходько 4 бала хочеться:)