Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Дана прямоугольная матрица b[M][N]. Найти в ней количество максимальных элементов http://www.cyberforum.ru/cpp-beginners/thread1120370.html
Помогите пожалуйста решить. Дана прямоугольная матрица b. Найти в ней количество максимальных элементов. Элементы матрицы задать с помощью генератора случайных чисел. Значения M, N ввести с клавиатуры. Ограничения: M<=10, N<=10, значения элементов из диапазона .
C++ Массивы. Расположить элементы в порядке возрастания. Использовать сортировку методом вставок Дан массив a. Расположить его элементы в порядке возрастания. Использовать сортировку методом вставок. Количество и значение элементов массива ввести с клавиатуры. Ограничения: <=100, диапазон значений элементов , тип элементов - вещественные. http://www.cyberforum.ru/cpp-beginners/thread1120369.html
\n\r\0 а еще? C++
Собственно кроме \r\n\0 есть ли какие-то обозначения, как в регекспах? Например те же \w \d? Простенькая задачка по парсингу строку, хочется воспринимать делимитром все кроме цифр или букв. Перечислять все подряд как-то тупо, прикручивать регекспы из-за такой мелочи не многим уменее...
C++ Дан текст, в котором слова разделены одним пробелом. а) Подсчитать количество слов в данной строке. б) Подсчитать количество букв а в последнем слове
Дан текст, в котором слова разделены одним пробелом. а) Подсчитать количество слов в данной строке. б) Подсчитать количество букв а в последнем слове данной строки. в) Найти количество слов, начинающихся с буквы б. г) Найти количество слов, у которых первый и последний символы совпадают между собой. д) Найти длину самого короткого слова. Вот код. Пункт А уже реализован. Подскажите дальше, кто...
C++ как сделать чтобы функция не изменяла переданный в нее двумерный массив в главной программе? http://www.cyberforum.ru/cpp-beginners/thread1120350.html
вот такая вот программка. не могу понять почему матрица переданная в функцию изменяется в главной функции! подскажите, как этого избежать?)) #include <iostream> #include <conio.h> #include <stdlib.h> using namespace std;
C++ Не удаляется элемент Имеется стек. class Stack { private: myString *st; int size; int index; ... подробнее

Показать сообщение отдельно
aimbat
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 81
16.03.2014, 02:58     Посчитать в стеке количество элементов между минимальным и максимальным значениями
Доброго времени суток, господа)
Возникла проблема с реализацией.
Суть кода: посчитать в стеке количество элементов между минимальным и максимальным значениями.
Проблема с функцией 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();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru