profile
Опубликовано 5 лет назад по предмету Информатика от kusssby

Преобразовать программу, чтобы с ее помощью можно было находить слова с наиболее частым вхождением буквы ‘я’. (Программа должна находить букву в словах из привязанного файла).

Var Sim:array[0..10]of string;

C: Char;
i,k,p: integer;
f1:text;
Begin
assign(f1,'file1.txt');
reset(f1);
Clrscr;
randomize;
writeln('Исходный массив');
for p:= 1 to 6 do
begin
For i:= 1 to 10 do
Begin
Sim[p]:=sim[p]+Chr(random(32)+Ord('а'));

End;
Writeln(Sim[p]);
Writeln(f1,Sim[p]);
end;
Writeln;
close(f1);
end.

  1. Ответ
    Ответ дан Змей24
    Var Sim:array[0..10] of string;

    function count_ya(var s: string): integer;
    begin
      var i, n, len: integer;
      var c: char;
     
      n := 0;
      len := Length(s);
      for i := 1 to len do begin
        c := s[i];
        if (c = 'я') or (c = 'Я') then begin
          n := n + 1;
        end;
      end;
     
      result := n;
    end;

    procedure word(var s: string);
    begin
      var i, c, k, j: integer;
     
      c := count_ya(s);
     
      for i := 0 to 10 do begin
        if count_ya(Sim[i]) < c then begin
          for k := 9 downto i do begin
            Sim[k + 1] := Sim[k];
          end;
        
          Sim[i] := s;
          break;
        end;
      end;
    end;

    Begin
      Var C: Char;
      Var i, k: integer;
      Var f1: text;
      Var s: string;

      assign(f1, 'file1.txt');
      reset(f1);
      randomize;

      i := 0;
      while not Eof(f1) do begin
        read(f1, C);
        if ((C >= 'а') and (C <= 'я')) or ((C >= 'А') and (C <= 'Я')) then begin
          i := 1;
          s := s + C;
        end else begin
          if i = 1 then begin
            word(s);
          end;
          i := 0;
          s := '';
        end;
      end;
     
      if i = 1 then begin
        word(s);
      end;
     
      close(f1);
     
      for i := 0 to 10 do begin
        s := Sim[i];
        if s = '' then break;
        writeln(s);
      end;
    end.

    1. Ответ
      Ответ дан Аккаунт удален
      Я не понял, где тут реализация требования задания "находить слова с НАИБОЛЕЕ ЧАСТЫМ вхождением буквы ‘я’."
    2. Ответ
      Ответ дан nelle987
      В массиве Sim хранятся первые 11 "слов" с наибольшим количеством букв Я, процедура word(s) подсчитывает количество букв я в s, и если нужно, обновляет массив Sim.
    3. Ответ
      Ответ дан Аккаунт удален
      Т.е. если в тексте 10 слов я буквой "я" они все считаются словами с наибольшим вхождением буквы "я"? Модератору, конечно виднее, но если бы мне попытались сдать такое решение, я бы отправил домой. Лично я понимаю так: есть слова где "я" встречается один раз, есть где два раза, а то, быть может, и три. Вот если были слова с двумя "я" и с одним - надо вывести ТОЛЬКО с двумя "я".
Самые новые вопросы