Подсчитать, сколько элементов стека превышает среднее значение от всех его элементов - Free Pascal

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

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

Подсчитать, сколько элементов стека, построенного из случайных чисел, превышает среднее значение от всех элементов стека. Программно стек реализуется в виде однонаправленного списка с одной точкой входа (вершиной стека).

Решение задачи: «Подсчитать, сколько элементов стека превышает среднее значение от всех его элементов»

textual
Листинг программы
  1. program pr;
  2.  
  3. type
  4.   prec = ^trec;
  5.   trec = record
  6.     num: integer;
  7.     next: prec;
  8.   end;
  9.  
  10. var
  11.   stack: prec;
  12.  
  13. procedure push(an: integer);
  14. var
  15.   p: prec;
  16. begin
  17.   new(p);
  18.   p^.num := an;
  19.   p^.next := stack;
  20.   stack := p;
  21. end;
  22.  
  23. function pop(var an: integer): boolean;
  24. var
  25.   p: prec;
  26. begin
  27.   pop := (stack <> nil);
  28.   if stack <> nil then
  29.   begin
  30.     an := stack^.num;
  31.     p := stack;
  32.     dispose(p);
  33.   end;
  34. end;
  35.  
  36. procedure printstack;
  37. var
  38.   p: prec;
  39. begin
  40.   p := stack;
  41.   while p <> nil do
  42.   begin
  43.     writeln(p^.num);
  44.     p := p^.next;
  45.   end;
  46. end;
  47.  
  48. function summstack: integer;
  49. var
  50.   p: prec;
  51.   sum: integer;
  52. begin
  53.   sum := 0;
  54.   p := stack;
  55.   while p <> nil do
  56.   begin
  57.     sum := sum + p^.num;
  58.     p := p^.next;
  59.   end;
  60.   summstack := sum;
  61. end;
  62.  
  63. function coutstack( const av: real): integer;
  64. var
  65.   p: prec;
  66.   cout: integer;
  67. begin
  68.   cout := 0;
  69.   p := stack;
  70.   while p <> nil do
  71.   begin
  72.     if p^.num > av then
  73.     begin
  74.       cout := cout + 1;
  75.     end;
  76.     p := p^.next;
  77.     coutstack := cout;
  78.   end;
  79. end;
  80.  
  81. var
  82.   x, n, i, s, k: integer;
  83.   avg: real;
  84.  
  85. begin
  86.   stack := nil;
  87. randomize;
  88.   writeln('Введите количество элементов для заполнения стека');
  89.   readln(n);
  90.   for i := 1 to n do
  91.   begin
  92.     x := random(21);
  93.     push(x);
  94.   end;
  95.   writeln;
  96.   printstack;
  97.   writeln;
  98.   s := summstack;
  99.   avg := s / n;
  100.   writeln('Среднее значение элементов списка: ', avg);
  101.   k := coutstack(avg);
  102.   writeln('Количество элементов списка, превышающих среднее значение:', k);
  103. end.

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


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

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

7   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы