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

Посчитать в стеке количество элементов между минимальным и максимальным значениями

16.03.2014, 02:58. Показов 2338. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, господа)
Возникла проблема с реализацией.
Суть кода: посчитать в стеке количество элементов между минимальным и максимальным значениями.
Проблема с функцией search_max_min


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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
 #include <iostream>     
#include <conio.h>
 
using namespace std;
 
struct stack
{
public:
    stack() : top(0){}
    ~stack();
    void push(float what);
    void pop(float &what);
    bool empty() const {return  top ==0;}
    void print() const;
    int countFromMinToMax();
    void search_max_min();
private:
 
struct node
{
 float num;
 node  *next;
}; node *top; node *min; node *max;
};
 
stack::~stack()
{
    while(!empty()){
    node *tmp = top -> next;
    delete top;
    top = tmp;
    }
}
void stack::push (float what){
    node *newitem = new node;
    newitem->next = top;
    newitem->num = what;
    top = newitem;
}
void stack::pop(float &what) {
    what = top->num;
    node *tmp = top;
    top = top->next;
    delete tmp;
}
void stack::print() const {
    node *iter = top;
    while (iter != 0) {
        std::cout << iter->num << " ";
        iter = iter->next;
    }
    std::cout << std::endl;
}
int stack::countFromMinToMax() 
{
     node *it = top;
     int count = 0;
     while (it != 0) {
         if (it == max) {
            while (it != min) {
               ++count;
               it = it->next;
             }
             if (count) { 
                 --count;
             }
             break;
         } else if (it == min) {
             while (it != max) {
                 ++count;
                 it = it->next;
              }
              if (count) { 
                --count;
              }
              break;
         }
         it = it->next;
     }
     cout << count;
    return count;
}
void stack::search_max_min() 
 {
    if (top)
    {
    node *iterator = top;
        while (iterator -> next) 
        {
        iterator = iterator -> next;
    
        if (max -> num < iterator -> num)
        max = iterator;
            
        if (min -> num > iterator -> num)
        min = iterator;
    }   
    }
 }
int main()                               
{
    using std::cin;
    using std::cout;
    stack mylist;
    float num;
    int n;
    cin >> n;
    cout << "Input float values, no flout to quit: ";   
    for (int i = 0; i < n; i++){
    cin >> num; 
    mylist.push(num);
    }
    cin.clear();
    cin.ignore(256, '\n');
            cout << "Your numbers in reverse order are (bottom - right, top - left): ";
            mylist.print();
            mylist.search_max_min();
            mylist.countFromMinToMax();
            
            cout << endl;
            mylist.print();
            _getch();
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.03.2014, 02:58
Ответы с готовыми решениями:

Указатели: найти количество элементов массива между максимальным и минимальным значениями
Дан массив вещественных чисел, состоящий из N элементов (N=20). Найти количество элементов между его максимальным и минимальным значениями.

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

Найти сумму элементов между максимальным и минимальным значениями
считало макс и мин знач. и складывало их вместе с числами находящимися между ними procedure TForm1.Button3Click(Sender: TObject); ...

4
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
16.03.2014, 04:15
Да кто ж вам такие задания придумывает? Нет в стеке ни максимального, ни минимального значения. В стеке или есть какой-то элемент на вершине, или нет, если стек пустой. Массивы для таких вещей нужно использовать, или списки...
1
0 / 0 / 3
Регистрация: 07.10.2013
Сообщений: 81
16.03.2014, 04:36  [ТС]
оговорился я(
на основе списка, вписывать значения по принципу lifo.
0
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
16.03.2014, 06:53
Цитата Сообщение от easybudda Посмотреть сообщение
Да кто ж вам такие задания придумывает?
Оставь негодование. Посмотри на MIT и BARKLEY. Наша система образования держится на мифах о ее превосходстве овер твенти йеарс назад. Сегодня от выпускника инженера надо -- "сдать зачет по прогграммированию". Это печально. Но! это дает свои плоды.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
16.03.2014, 16:28

Не по теме:

alkagolik, ну не по "проггранулированию", и на том спасибо. Хотя грустно это всё...


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
#include <iostream>
#include <list>
#include <algorithm>
#include <iterator>
#include <cstdlib>
#include <ctime>
 
int main() {
    std::list<int> list;
 
    srand(time(NULL));
 
    for ( int i = 0; i < 10; ++i )
        list.push_back(rand() % 100);
 
    std::cout << "All elements:" << std::endl;
    std::copy(list.begin(), list.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout <<  std::endl;
 
    std::list<int>::iterator minPtr = std::min_element(list.begin(), list.end());
    std::list<int>::iterator maxPtr = std::max_element(list.begin(), list.end());
 
    if ( *minPtr == *maxPtr ) 
        std::cout << "All elements has the same value, nothing to do." << std::endl;
    else {
        std::cout << "Min value: " << *minPtr << "\nMax value: " << *maxPtr << std::endl;
        int between = std::max(std::distance(list.begin(), minPtr), std::distance(list.begin(), maxPtr)) -
            std::min(std::distance(list.begin(), minPtr), std::distance(list.begin(), maxPtr)) - 1;
        std::cout << "Elements between the first occures of them: " << between << std::endl;
    }
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.03.2014, 16:28
Помогаю со студенческими работами здесь

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

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

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

Найти разницу между минимальным и максимальным значениями элементов массива. Матрица А (5, 4)
Найти разницу между минимальным и максимальным значениями элементов массива. Матрица А (5, 4).

Найти сумму элементов массива А (45), находящихся между максимальным и минимальным значениями.
Найти сумму элементов массива А (45), находящихся между максимальным и минимальным значениями. Элементы массива задать рандомно. ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru