Zhqrik
@Zhqrik
learning python

Задача со стеками, в чем ошибка?

#include <iostream>
#include <stack> 
using namespace std;

int main()
{
	stack <int> bus;
    int size;
    cin>>size;
    int max = 0;
	int min = 64646;
	int idmax;
	int idmin;
    for(int i = 0;i<size;i++) {
    	int ab = 0;
    	cin>>ab;
    	bus.push(ab); 
	}
	for(int i = 0;i<size;i++) {
		if(bus.top()>max) max = bus.top(); 
		else if(bus.top()<min) min = bus.top();
		bus.pop();
	}
	cout<<endl<<"max "<<max<<endl;
	cout<<"min "<<min<<endl;
	for(int i = 0;i<size;i++) {
		if(bus.top() == max)  idmax = i;
		else if(bus.top() == min) idmin = i;
	}
	cout<<idmax<<endl;
	cout<<idmin<<endl;
    return 0;
}

Код должен был вывести да переменные, но по какой то причине не выводит.
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
@res2001
Developer, ex-admin
min и max у вас считаются нормально, но когда вы их находите вы очищаете стек: bus.pop();
В итоге в третьем цикле, где вы находите imax и imin у вас пустой стек.
Вам нужно в одном цикле объединить поиск min/max и imin/imax, к тому же это напрашивается само.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы