Написать программу на Паскале, которая переписывает строки из файла f.txt в другой файл если в строке количество четных (или нечетных, как задашь) чисел равно (или неравно, или больше, или меньше, как задашь) заданному числу. Строки — группы слов между переносами, слова — группы символов между пробелами, количество пробелов не важно — Pascal(Паскаль)

readln(nado);{necetnih}
while not eof(fin) do
begin
  readln(fin, str);
  sc:='';
  i:=1;
  n:=0; 
  while i<=to Length(str) do
    begin
    while (str[i]=' ')and(i<=Length(str)) do begin sc:=''; inc(i); end;
    while (str[i]<>' ')and(i<=Length(str)) do begin sc:=sc+str[i]; inc(i); end;
    if odd(str)=true then ink(n);
    end;
  if n=nado then writeln(fout,str);
end;

Вариант 2

{программа переписывает в новый файл строки,
в которых количество четных чисел больше 2}
uses crt;
var f1,f2:text;
    s,s1,name1,name2:string;
    i,j,k,t,c:integer;
begin
clrscr;
write('Имя исходного файла: ');
readln(name1);name1:=name1+'.txt';
write('Имя измененного файла: ');
readln(name2);name2:=name2+'.txt';
assign(f1,name1);
reset(f1);
assign(f2,name2);
rewrite(f2);
while not eof(f1) do
 begin
  readln(f1,s);
  k:=0;
  i:=1;
  while i<=length(s) do
  if (s[i] in ['0'..'9'])and((s[i-1]=' ')or(i=1)) then
     begin
      j:=i;s1:='';
      while s[j] in['0'..'9'] do
       begin
        s1:=s1+s[j];
        j:=j+1;
       end;
      val(s1,t,c);
      if (c=0)and(t mod 2=0)then k:=k+1;
      i:=i+length(s1);
     end
  else i:=i+1;
  if k>=2 then writeln(f2,s);
 end;
write('Файл переписан!');
close(f1);
close(f2);
readln
end.

Leave a Comment

85 − 83 =