Другие языки программирования и технологии
Нужно получить массив слов из текстового файла
Нужно получить массив слов из текстового файла. Предположим что слова содержат только латинские символы и разделены пробелами (или это строки). Я так понимаю, тут несколько строк, но не могу написать... Помогите плз!
Доброго времени суток.
Немного не так, Дима Иванов. Нигде не сказано, что в каждой строке по одному слову, а, значит, может быть и несколько. Вот их-то и надо выделить и записать в массив.
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 ]);
Немного не так, Дима Иванов. Нигде не сказано, что в каждой строке по одному слову, а, значит, может быть и несколько. Вот их-то и надо выделить и записать в массив.
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 ]);
Раатбек •
спасибо. псевдопаскаль я имел в виду консольный режим турбо делфи.)
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.
Это при условии, что в каждой строке записано отдельное слово
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);
А на делфи ХЗ.
Я тока пых знаю)
$filename = fopen("file.txt", 'r');
$arrayname = fgetcsv($filename, 100, "\n"); // разделение по строкам
fclose($filename);
А на делфи ХЗ.
Я тока пых знаю)
Memo1.Lines.LoadFromFile('file.txt');
for i:=0 to Memo1.Lines.Count do
arr[ i]:=Memo1.Lines[ i];
for i:=0 to Memo1.Lines.Count do
arr[ i]:=Memo1.Lines[ i];
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;
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 бала хочеться:)
Похожие вопросы
- Как считать слова из текстового файла в с++?
- задача TurboPascal с текстовым файлом, помогите....
- Скажите пожалуйста как передать данные из текстового файла в массив на php
- Написать программу которая подсчитывает частоту встречаемости символов в заданном текстовом файле С++
- Извлечение ссылки из текстовых файлов
- Скопировать из текстового файла .txt часть строк c 1 по 3000, затем с 3000 по 6000 и так до конца файла.
- Как подсчитать дубли строк в текстовом файле?
- Считывание данных из текстового файла С++
- Создать список из повторяющихся слов текста из файла. Первый элемент-наиб. часто повторяющееся слово/ Паскаль. (+)
- 4. Даны два текстовых файла. Записать в третий только те строки, которые есть и в первом, и во втором файлах.