Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 04.06.2022
Сообщений: 12

Добавить процедуру вывода среднего арифметического значения элементов стека

11.06.2022, 13:42. Показов 459. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
program stek;
 
type
    Stk = ^tStek; // указ на запись
    tStek = record // сама запись
        data:integer;
        prev:Stk;
end;
 
var
    top,p:Stk;
    i,ke,k,d,cout,sum:integer;
    
procedure add(x:integer);//Добавление в стек
begin
    new(p);// выделяем память
    p^.data := x; // заносим его элемент
    p^.prev := top;// указываем на следующий элемент
    top:=p
end;
procedure delete;//Удаление из стека
begin
    if top<>nil then
                begin
                    p:=top^.prev;
                    dispose(top);
                    top:=p;
                end;
end;
procedure print;//Вывод содержимого стека
begin
    writeln('Стек:');
    p:=top;
    while p <> nil do
                begin
                    write(p^.data, ' ');
                    p:=p^.prev;
                end;
               writeln;
            end;
            
procedure avg;
begin
cout:=0;
sum:=0;
    while p <> nil do
                begin
                    sum:= sum + p^.data;
                    cout:= cout + 1;
                    p:=p^.prev;
                end;
            AVG:= sum / cout;   
end;    
            
BEGIN
top:= nil;
writeln('Введите начальное количество элементов в стеке');
readln(ke);
for i:=1 to ke do
                begin
                    k:=random(50);
                    add(k);
                end;
d:=1;
while d <> 0 do
            begin
            writeln('Выберите действие:');
            writeln('1 - Добавить элемент в стек');
            writeln('2 - Удалить N элементов стека');
            writeln('3 - Вывести элементы на экран');
            writeln('4 - Вывести среднее значение стека');
            writeln('0 - выход');
            readln(d);
        case d of
            1:begin writeln('Введите элемент');
                    readln(d);
                       add(k);
                end;
            2:begin writeln('Введите количество элементов для удаления');
                    readln(ke);
                    for i:=1 to ke do
                        delete;
                end;
            3:print
            else if d <> 0 then writeln('Ошибка ввода');
            end;
            4:begin writeln('Среднее арифметическое стека = ',avg);
            end;
 
        end;        
readln;                 
END.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.06.2022, 13:42
Ответы с готовыми решениями:

Составить процедуру определения среднего арифметического значения элементов одномерного массива A[m]
Составить процедуру определения среднего арифметического значения элементов одномерного массива А. Используя процедуру, определить среднее...

Написать процедуру вычисления среднего арифметического элементов значения положительных элементов массива
1) Для заданных условия составить процедуру и придумать несколько наборов тестовых данных для отладки. Возможно использование как...

Составить процедуру определения среднего арифметического значения элементов одномерного массива
Составить процедуру определения среднего арифметического значения элементов одномерного массива А. Используя процедуру, определить среднее...

1
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
11.06.2022, 18:33
Во-первых, у вас косяк в операторе case: четвёртый пункт после else

Во-вторых, обычно над стеком определены две операции push и pop, а не add и delete.

В-третьих, использование глобальных переменных не очень хорошо.

В-четвёртых, что-за вырвиглаз форматирование кода? Лучше тогда всё в одну строку, чем такие „качели“!

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
program stek;
 
type
    Stk = ^tStek; // указ на запись
    tStek = record // сама запись
        data:integer;
        prev:Stk;
end;
 
var
    top,p:Stk;
    i,ke,k,d,cout,sum:integer;
    
procedure add(x:integer);//Добавление в стек
begin
    new(p);// выделяем память
    p^.data := x; // заносим его элемент
    p^.prev := top;// указываем на следующий элемент
    top:=p
end;
procedure delete;//Удаление из стека
begin
    if top<>nil then
                begin
                    p:=top^.prev;
                    dispose(top);
                    top:=p;
                end;
end;
procedure print;//Вывод содержимого стека
begin
    writeln('Стек:');
    p:=top;
    while p <> nil do
                begin
                    write(p^.data, ' ');
                    p:=p^.prev;
                end;
               writeln;
            end;
            
function avg : real;
var count, sum : integer; cur : Stk;
begin
  count := 0;
  sum := 0;
  cur := top;
  while cur <> nil do
    begin
      inc(sum, cur^.data);
      inc(count);
      cur := cur^.prev;
    end;
  avg := sum / count;   
end;    
            
BEGIN
  top:= nil;
  writeln('Введите начальное количество элементов в стеке');
  readln(ke);
  for i:=1 to ke do
    add(random(50));
    
  repeat
  
    writeln('Выберите действие:');
    writeln('1 - Добавить элемент в стек');
    writeln('2 - Удалить N элементов стека');
    writeln('3 - Вывести элементы на экран');
    writeln('4 - Вывести среднее значение стека');
    writeln('0 - выход');
    readln(d);
 
    case d of
      0 : begin end; { это чтобы не делать лишнюю проверку в else }
      1 : begin
            writeln('Введите элемент');
            readln(d);
            add(k);
          end;
      2 : begin
            writeln('Введите количество элементов для удаления');
            readln(ke);
            for i:=1 to ke do
              delete;
          end;
      3 : print;
      4 : writeln('Среднее арифметическое стека = ',avg);
    else
      writeln('Ошибка ввода');
    end;
    
  until d = 0;
  
  readln;                 
END.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.06.2022, 18:33
Помогаю со студенческими работами здесь

Составить процедуру определения среднего арифметического значения элементов одномерного массива
Составить процедуру определения среднего арифметического значения элементов одномерного массива A. Используя процедуру, определить среднее...

написать процедуру для вычисления среднего арифметического значения всех элементов заданного массива D
1) написать процедуру для вычисления среднего арифметического значения всех элементов заданного массива D. для отрицательных элементов...

Массивы. Сумма среднего геометрического значения элементов и среднего арифметического значения элементов
Доброго времени суток! Прошу помощи с задачей про массивы: Даны массивы А(5) и В(5), состоящие из положительных элементов. Найти...

Расчет всех отклонений значений элементов матрицы от их среднего арифметического значения и среднего отклонени
Помогите ,пожалуйста, нужно сделать расчет всех отклонений значений элементов матрицы от их среднего арифметического значения и среднего...

Дописать к программе нахождение среднего арифметического значения и вывода мин и макс значений
добрый день, решал задачу на подобную тему и возникли трудности с нахождением здесь среднего арифметического значения и вывода мин и макс...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru