Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/34: Рейтинг темы: голосов - 34, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 09.02.2019
Сообщений: 5
1

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

12.02.2019, 09:57. Показов 6798. Ответов 3

Author24 — интернет-сервис помощи студентам
Общая часть: Создать стек для хранения чисел, значение которых случайно в диапазоне от –50 до +50.

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

Я создала 2 стека второй берет значения из первого.
Помогите пожалуйста найти среднее значение из элементов первого стека и отобразить элементы которые больше среднего во Втором стеки!

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
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
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include<time.h>
//#include<random>
using namespace std;
 
 
struct List
{
    int x;                     //информационный элемент
    List *Next,*Head; //голова стека и указатель на следующий элемент
};
 
/*ФУНКЦИЯ ДОБАВЛЕНИЯ ЭЛЕМЕНТА В СТЕК */
void Add(int x, List *&MyList)
 //Принимаем элемент стека и указатель на стек, учитывая, что принимаемый указатель будет сам по себе указателем
{
    List *temp=new List; //Выделяем память для нового элемента
    temp->x=x; //Записываем в поле x принимаемый в функцию элемент x
    temp->Next=MyList->Head; //Указываем, что следующий элемент это предыдущий
    MyList->Head=temp; //Сдвигаем голову на позицию вперед
}
 
/*ФУНКЦИЯ ОТОБРАЖЕНИЯ СТЕКА*/
void Show(List *MyList)           
{
    List *temp=MyList->Head; //Объявляем указатель и Указываем ему, что его позиция в голове стека
    //с помощью цикла проходим по всему стеку
    while (temp!=NULL) //выходим при встрече с пустым полем
    {
    cout<<temp->x<<" ";                 //Выводим на экран элемент стека
    temp=temp->Next;                     //Переходим к следующему элементу
    }
}
 
/*ФУНКЦИЯ УДАЛЕНИЯ СТЕКА ИЗ ПАМЯТИ*/
void ClearList(List *MyList)
    {
    while (MyList->Head!=NULL)               //Пока по адресу не пусто
    {
    List *temp=MyList->Head->Next;  //Вр. переменная для хранения адреса следующего элемента
    delete MyList->Head;                 //Освобождаем адрес обозначающий начало
    MyList->Head=temp; //Меняем адрес на следующий
}
}
 
int main()
{   system("chcp 1251");
    srand(time(NULL));
    int z, count1 = 0, count2 = 0;
    List *MyList=new List;
    List *MyList1=new List; //Выделяем память для стека
 
    MyList->Head=NULL;//Во избежание ошибок инициализируем первый элемент
    MyList1->Head=NULL;
//Заносим данные в стек
cout << "Укажите размер стека 1: ";
cin >> count1;
int m[count1];
 
    for (int i=0;i<count1;i++)
     m[i] = rand() % 101 - 50;
 
    for (int i=0; i<count1;i++)
    Add(m[i],MyList);
 
    cout<< endl<<endl;
    cout<< "элементы стека 1:"<<endl;
    Show(MyList); //Выводим стек на экран
 
    cout << "\n \n Укажите размер стека 2: ";
cin >> count2;
 
for(int i=0; i<count2;i++)
 {
    // if(m[i]>0)   //вывод больше 0
        Add(m[i],MyList1);
 }
 
cout<< endl<<endl;
    cout<< "элементы стека 2:"<<endl;
    Show(MyList1);
 
    ClearList(MyList1); //Очищаем память.
    delete MyList1->Head;
    delete MyList1;
 
     ClearList(MyList);
    delete MyList->Head;
    delete MyList;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.02.2019, 09:57
Ответы с готовыми решениями:

Создать стек, содержащий только числа большие среднего значения всех элементов первого стека
Основная цель: Создать стек с числами в диапазоне от –50 до +50.После создания стека выполнить...

Создать новый стек, содержащий только четные числа из заданного стека
Создать стек с числами в диапазоне от –50 до +50. После создания стека выполнить индивидуальное...

Создать новый стек, в который поместить каждый третий элемент первого стека
Помогите, пожалуйста реализовать следующее: создать стек с числами в диапазоне от –50 до +50. После...

Создать новый стек, содержащий только четные числа из первого стека
Вот программа создания стека. ...

3
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
12.02.2019, 10:23 2
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
class Stack
{
public:
    class Value
    {
    public:
        Value(Value*_next,int _value):next(_next),value(_value){}
        ~Value(){delete next;}
 
        Value*next;
        int value;
    };
 
    ~Stack(){delete last;}
    void pushBack(int value){
        last=new Value(last,value);
        ++size;
    }
 
    Value*data=nullptr;
    Value*last=nullptr;
    long size=0;
};
 
int main()
{
    Stack stack;
    for(int i=0;i<10;++i)
        stack.pushBack(50-rand()%100);
    for(Stack::Value*pos=stack.last;pos;pos=pos->next)
        std::cout<<pos->value<<std::endl;
    std::cout<<std::endl<<std::endl;
    long total=0;
    for(Stack::Value*pos=stack.last;pos;pos=pos->next)
        total+=pos->value;
    std::cout<<"average value: "<<total/stack.size<<std::endl<<std::endl;
 
    Stack out;
    for(Stack::Value*pos=stack.last;pos;pos=pos->next)
        if(pos->value>total/stack.size)
            out.pushBack(pos->value);
    for(Stack::Value*pos=out.last;pos;pos=pos->next)
        std::cout<<pos->value<<std::endl;
    return 0;
}
0
0 / 0 / 0
Регистрация: 09.02.2019
Сообщений: 5
12.02.2019, 10:49  [ТС] 3
Можете пожалуйста показать на моем коде, там по логики нужно найти сумму всех элементов стека и поделить на количество элементов, получится среднее, а потом в новом стеки отобразить числа которые выше этого среднего.

Вот я и не знаю как в коде это написать...
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
12.02.2019, 11:25 4
Вы функцию Show сами писали? Что вам мешает взять цикл в ней за образец и вместо cout сделать суммирование элементов? Ну и то что у вас в стартпосте это фактически сишный код. Конструкторов нет, методов нет...
0
12.02.2019, 11:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.02.2019, 11:25
Помогаю со студенческими работами здесь

Создать новый стек из тех символов первого стека которые есть во втором
Из двух заданных стеков, хранящих символы создать новый стек из тех символов первого стека которые...

Из двух заданных стеков, хранящих символы, создать новый стек из тех символов первого стека, которые есть и в первом
Из двух заданных стеков, хранящих символы, создать новый стек из тех символов первого стека,...

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

Создать третий стек из тех символов первого стека, которые есть и в первом и во втором стеке
Из двух заданных стеков, хранящих символы, создать новый стек из тех символов первого стека,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru