0 / 0 / 0
Регистрация: 02.11.2018
Сообщений: 4
1

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

28.02.2019, 13:01. Показов 2906. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Основная цель: Создать стек с числами в диапазоне от –50 до +50.После создания стека выполнить индивидуальное задание.В конце работы все стеки должны быть удалены.
Индивидуальная цель: Создать новый стек, содержащий только числа, большие среднего зна-чения всех элементов первого стека.
Выдает 2 ошибки :
moreAverage должна возвращать значение
Используется потенциально неинициализированная локальная переменная-указатель "t"

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
#include <iostream>
 
using namespace std;
 
struct Stack {
    int info;
    Stack (*next);
} *begin1, *second;
 
Stack *InStack(Stack *, int);
 
void View(Stack *);
 
void mima(Stack *, int &);
 
Stack *moreAverage(Stack *p, Stack *&second, int average);
 
int main() {
    int i; int average = 0;
    for (i = 1; i <= 101; i++) {
        begin1 = InStack(begin1, rand() % 101 - 50);
    }
    View(begin1);
    mima(begin1, average);
 
    cout << "average = " << average << endl;
 
    moreAverage(begin1, second, average);
 
    View(second);
 
}
 
Stack *moreAverage(Stack *p, Stack *&second, int average){
    Stack *t;
 
    while (p != NULL){
        if(p->info > average){
            Stack *tmp = new Stack;
            tmp->info = p->info;
 
            if(second == NULL){
                second = tmp;
                t = second; // запоминаем начало для нового списка
            } else{
                // добавляем новые элементы
                second ->next = tmp;
                second = second ->next;
            }
        }
        p = p->next;
    }
 
    second = t; // возвращаем указатель на начало, так как сейчас сылается на конец списка 
}
 
Stack *InStack(Stack *p, int in) {
    Stack *t = new Stack;
    t->info = in;
    t->next = p;
    return t;
}
 
void View(Stack *p) {
    Stack *t = p;
    while (t != NULL) {
        cout<< t->info << "\n";
        t = t->next;
    }
}
 
void mima(Stack *p, int &average) {
    Stack *temp = p;
    int sum = 0, num = 0;
    cout << endl;
    while (temp != NULL) {
        num++;
        sum += temp->info;
        temp = temp->next;
    }
    sum /= num;
    average = sum;
    temp = p;
    cout << "Count=" << sum << endl;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.02.2019, 13:01
Ответы с готовыми решениями:

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

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

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

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

2
"C with Classes"
1642 / 1399 / 523
Регистрация: 16.08.2014
Сообщений: 5,869
Записей в блоге: 1
28.02.2019, 13:05 2
Цитата Сообщение от enkore Посмотреть сообщение
moreAverage должна возвращать значение
ты не возвращаешь значение возвращением значения занимается оператор return. ты присваиваешь параметру p новое значение, причем действие это бесполезно, так как p временный объект. и после вызова функции он будет не действительный.
Цитата Сообщение от enkore Посмотреть сообщение
Используется потенциально не инициализированная локальная переменная-указатель "t"
Stack *t; на Stack *t = nullptr;

возможно как исправишь эти появятся новые.
1
6055 / 3424 / 1388
Регистрация: 07.02.2019
Сообщений: 8,687
28.02.2019, 13:14 3
enkore, очень странная архитектура, поищи в разделах темы с меткой стек, наверняка найдешь код с адекватными классами, с которыми удобно работать. Вижу кучу new, но не вижу ни одного delete.
0
28.02.2019, 13:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.02.2019, 13:14
Помогаю со студенческими работами здесь

Создать стек, содержащий исходные числа (последнее число будет вершиной стека)
Дано неотрицательное число N и набор из N чисел. Создать стек, содержащий исходные числа (последнее...

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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