Найти среднюю длину - Pascal

Узнай цену своей работы

Формулировка задачи:

В двоичной последовательности (состоящей из нулей и единиц) найти среднюю длину связной группы нулей.
Сам я знаю только как найти среднее арифметическое а как дальше делать без понятия
var a : array [1..10] of integer;
    s : real;
    sum,n,i : integer;
begin
    clrscr;
    write('n=');readln(n);
    for i:=1 to n do
    begin
     write('a[',i,']=');
     readln(a[i]);
    end;
    sum:=0;
    for i:=1 to n do
    sum:=sum+a[i];
    s:=sum/n;
    writeln('ср ариф= ',s);
    readln;
end.

Решение задачи: «Найти среднюю длину»

textual
Листинг программы
{ В двоичной последовательности (состоящей из нулей и единиц) найти среднюю длину связной группы нулей. }
var
  s: string;
  ZeroLen, nGroups: integer;
  i, StrLen: integer;
begin
  readln(s);
  i:= 1;
  StrLen := length(s);
  ZeroLen := 0;
  nGroups := 0;
  while i<=StrLen do
    begin
      if s[i]='0' then
        begin
          while (i<=StrLen) and (s[i]='0') do 
            begin
              inc(i);
              inc(ZeroLen);
            end;
          inc(nGroups);
        end
      else
        inc(i);
    end;
  if (nGroups=0) then
    writeln('Нет последовательностей')
  else
    writeln('Средняя длина последовательности ', ZeroLen / nGroups:0:3);
  readln;
end.

Объяснение кода листинга программы

  1. Ввод строки s с помощью функции readln.
  2. Инициализация переменных:
    • ZeroLen - количество нулей в строке (средняя длина связной группы нулей).
    • nGroups - количество связных групп нулей в строке.
    • i - индекс текущего символа в строке.
    • StrLen - длина строки s.
  3. Цикл while, выполняющийся до тех пор, пока i не превысит StrLen.
  4. Если s[i] равен '0', то:
    • Цикл while, выполняющийся до тех пор, пока i не превысит StrLen и s[i] не станет равным '1'.
    • Увеличение i и ZeroLen на 1.
    • Увеличение nGroups на 1 после выхода из цикла (так как мы нашли новую группу нулей).
  5. Увеличение i на 1.
  6. Если nGroups равно 0, то вывод 'Нет последовательностей'.
  7. Если nGroups больше 0, то вывод 'Средняя длина последовательности ' и ZeroLen / nGroups (с округлением до трех знаков после запятой).
  8. Завершение программы с помощью функции readln.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4 из 5
Похожие ответы