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

    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.

Ответы 4

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

      jacobson
    • 6 лет назад
    • 0
  • Т.е. если в тексте 10 слов я буквой "я" они все считаются словами с наибольшим вхождением буквы "я"? Модератору, конечно виднее, но если бы мне попытались сдать такое решение, я бы отправил домой. Лично я понимаю так: есть слова где "я" встречается один раз, есть где два раза, а то, быть может, и три. Вот если были слова с двумя "я" и с одним - надо вывести ТОЛЬКО с двумя "я".
    • Автор:

      vincent89
    • 6 лет назад
    • 0
  • 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.
    • Автор:

      joe85
    • 6 лет назад
    • 0
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years