Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 08.05.2017
Сообщений: 13

В стеке определить количество элементов, имеющих значения меньше среднего и удалить эти элементы

08.05.2017, 21:26. Показов 2104. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Помогите пожалуйста исправить код.
Создать стек из случайных чисел и определить, сколько элементов стека имеют значения меньше среднего значения от всех элементов стека и удалить их.
Не выходит удалить элементы. Может принцип решения вообще не правильный?
Builder 6 C++

C++
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
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
Memo1->Clear();
randomize();
 
}
//---------------------------------------------------------------------------
struct stek{
    int num;
    stek *next;
};
//----------------
void push(stek* &stk, int n){
    stek *temp = new stek;
    temp->next = stk;
    temp->num = n;
    stk = temp;
}
//------------
void show(stek *stk){
    stek *temp = stk;
    while(temp){
         Form1->Memo1->Lines->Add("   " + IntToStr(temp->num));
 
        temp = temp->next;
    }
   Form1->Memo1->Lines->Add(" rez"    );
}
//--------
int findAverage(stek *stk){
    int amount = 0, i = 0;
    for(stek *temp = stk; temp ; temp = temp->next, i++)
        amount += temp->num;
    return amount/i;
}
//--------------
void cleanOut(stek* &stk){
    for(stek *temp = stk->next;stk->next;temp = stk->next){
        delete stk;
        stk = temp;
    }
}
//-------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 stek *stk = new stek;
    stk = NULL;
 
    int a = -100, b = 100;
 
    srand(time(NULL));
    for(int i=0;i<5;i++)
        push(stk, rand()%(b-a+1) + a);
 
    show(stk);
    if ( (stk->num) < (findAverage(stk)) );   //тут что-то не так..
    show(stk);      //и тут
    cleanOut(stk);
}
Помогите пожалуйста разобраться.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.05.2017, 21:26
Ответы с готовыми решениями:

В списке определить количество элементов, имеющих значения меньше среднего значения и удалить эти элементы
Задание: В созданном списке определить количество элементов, имеющих значения, меньше среднего значения от всех элементов, и удалить эти...

В стеке определить количество элементов имеющих значения меньше среднего
Написать программу по созданию, добавлению, просмотру и решению поставленной задачи для однонаправленного линейного списка типа СТЕК....

Определить количество элементов стека, имеющих значения меньше среднего
Помогите сделать программу.Создать стек с числами в диапазоне от –50 до +50. Определить, сколько элементов стека имеют значение меньше...

5
21 / 21 / 10
Регистрация: 11.09.2015
Сообщений: 103
08.05.2017, 21:43
magus123456, в стеке (std::stack) доступ только к последнему элементу. Удаление любых элементов возможно в структурах std::vector, std::list.
0
0 / 0 / 0
Регистрация: 08.05.2017
Сообщений: 13
08.05.2017, 22:11  [ТС]
Kudryashov_R_D, как тогда должен выглядеть код ?
0
21 / 21 / 10
Регистрация: 11.09.2015
Сообщений: 103
08.05.2017, 23:09
magus123456, что такое стандартная библиотека, см. любой букварь и www.cplusplus.com и en.cppreference.com/w/
C++
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
#include <iostream>
#include <vector>
using namespace std;
 
void main () {
  // Создаём вектор
  vector<double> vec = {1,2,3,4,5,6,7,8,9};
  // Вычисляем среднее
  double mean = 0;
  for (unsigned i = 0; i < vec.size(); ++i)
    mean += vec[i];
  mean /= vec.size();
  cout << "mean: " << mean << "\n";
  // Считаем и удаляем
  int count = 0;
  for (int i = vec.size() - 1; i >= 0; --i) {
    if (vec[i] < mean) {
      count++;
      vec.erase(vec.begin() + i);
    }
  }
  // Итоги
  cout << "count: " << count << "\n";
  cout << "vec:";
  for (unsigned i = 0; i < vec.size(); ++i)
    cout << " " << vec[i];
}
0
0 / 0 / 0
Регистрация: 08.05.2017
Сообщений: 13
09.05.2017, 10:32  [ТС]
Kudryashov_R_D, а если в задании сказано удалить в стеке ? то получается вектор в качестве промежуточного ?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33395 / 21505 / 8236
Регистрация: 22.10.2011
Сообщений: 36,901
Записей в блоге: 12
09.05.2017, 10:51
Цитата Сообщение от magus123456 Посмотреть сообщение
а если в задании сказано удалить в стеке ?
Значит создавай второй, временный стек, переписывай в него значения из основного, попутно считая среднее арифметическое элементов, и потом возвращай назад из временного в основной только те элементы, которые меньше найденного среднего арифметического
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.05.2017, 10:51
Помогаю со студенческими работами здесь

Определить, сколько элементов стека имеют значения меньше среднего значения от всех элементов и удалить их
Доброго времени суток! Задача: Создать стек из целых случайных чисел и определить, сколько элементов стека имеют значения меньше среднего...

Удалить элементы, значение которых меньше среднего значения всех элементов массива
удалить элементы, значение которых меньше среднего значения всех элементов массива с помощь динамических массивов, помогите. Я явно что-то...

Определить количество элементов меньше среднего значения всех элементов
Здравствуйте, помогите найти ошибки в программе. с++ Найти количество элементов массива, значения которых меньше среднеарифметического...

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru