Если слова в файле начинаются с заданных букв, то занести эти слова в массив

homer

Вот задание записать в массив IDN типа STRING все идентификаторы переменных начинаются с букв I, Y,K,L,M,N. Программа работает, но не до конца.
program lab8;
uses crt;
var
A:string [80];
F1:text;
MSTR:array [1..8] of string [80];
IDN:array [1..20] of string [8];
slovo:string [8];
i,j,k:integer;
begin
assign(F1,'F1.txt');
reset (F1);
for i:=1 to 8 do
readln(F1,MSTR[i]);
for i:=1 to 8 do
begin
A:=MSTR[i];
for j:=1 to length(A) do
begin
k:=1;
slovo:='';
if ((A[j]=' ')and (A[j+1]='I') or
(A[j+1]='Y') or (A[j+1]='K') or
(A[j+1]='L') or (A[j+1]='M') or
(A[j+1]='N')) then
begin
slovo:=A[j+1];
repeat
slovo:=slovo+A[j+2]
until
A[j+2]=' ';
end;
begin
IDN[k]:=slovo;
k:=k+1;
end;
writeln('слова які починаються літерами I,Y,K,L,M,N: ', A);
readln(A);
for j:=1 to k do
writeln(IDN[k]);
break;
close(F1);
end;
end;
end.
8 ответов

homer

А можно задание подробней,ничего не понял


homer

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


homer

Дан текстовый файл,если слова в файле начинаются с заданных букв [I,Y,K,L,M,N] ,то занести эти слова в массив IDN так?


homer

да, именно так


homer

program lab8;
 
const sn=['I','K','Y','L','M'];
      sen=[' ','.',',','!','?',':'];
 
var idn:array [1..20] of string;
    f:text;slovo:string;
    i,j:integer;
    ch:char;
 
begin
  assign(f,'F1.txt');
  reset (f);
  slovo:='';j:=0;
  while not eof(f) do begin
    read(f,ch);
    if not (ch in sen) then
      slovo:=slovo+ch
    else begin
      if slovo[1] in sn then begin
        inc(j);
        idn[j]:=slovo;
      end;
      slovo:='';
    end;
    if eoln(f) then begin
      if slovo[1] in sn then begin
        inc(j);
        idn[j]:=slovo;
      end;
      slovo:='';
    end;
  end;
  close(f);
  for i:=1 to j do
    write(idn[i],' ');
  readln
end.


homer

А можно это же самое сделать через процедуру или функцию?


homer

program lab8;
 
const
  sn=['I','K','Y','L','M'];
  sen=[#10,' ','.',',','!','?',':'];
 
type tarray=array [1..50] of string;
 
function readfile(var afile:text;var amas:tarray):integer;
var i,j:integer;
    slovo:string;
    ch:char;
begin
  slovo:='';j:=0;
  while not eof(afile) do begin
    read(afile,ch);
    if not (ch in sen) then
      slovo:=slovo+ch
    else begin
      if slovo <>'' then
        if slovo[1] in sn then begin
          inc(j);
          amas[j]:=slovo;
        end;
      slovo:='';
    end;
    if eof(afile) then begin
      if slovo<>'' then
        if slovo[1] in sn then begin
          inc(j);
          amas[j]:=slovo;
        end;
    end;
  end;
  readfile:=j;
end;
 
var idn:tarray;
    f:text;
    i,n:integer;
begin
  assign(f,'F1.txt');
  reset (f);
  n:=readfile(f,idn);
  close(f);
  for i:=1 to n do
    write(idn[i],' ');
  readln
end.


homer

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