Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2013, 13:22   #1
shilovec5377
Форумчанин
 
Аватар для shilovec5377
 
Регистрация: 29.06.2011
Сообщений: 117
Восклицание создать стек с числами в диапазоне от -50 до +50

Всем привет!
люди добры помогите пж создать стек с числами в диапазоне от -50 до +50.
Есть прога, но она выводит только размер стека, помогите вывести весь стек.
Код:
#include <iostream>
#include <stack>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
int main()
{
    srand(time(0));
 
    stack<double> st;
    
    double max = 50.0, min = -50.0;
    
    for (size_t i = 0; i != 100; i++)
        st.push( (max - min) * ( (double)rand() / (double)RAND_MAX ) + min );
        
    cout << st.size();
    return 0;
}

Последний раз редактировалось shilovec5377; 15.05.2013 в 13:54.
shilovec5377 вне форума Ответить с цитированием
Старый 15.05.2013, 13:48   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
есть какой-то код, но он ругается на библитеку #include <chrono>
Этот вопрос было бы закономерно задать автору "какого-то" кода, не находите? Я бы сказал, что Вы компилируете не тем компилятором просто.

Цитата:
люди добры помогите пж создать стек с числами в диапазоне от -50 до +50.
Что Вы уже сделали? В чём проблема? Какого рода помощи Вы ожидаете?
Abstraction вне форума Ответить с цитированием
Старый 15.05.2013, 13:56   #3
shilovec5377
Форумчанин
 
Аватар для shilovec5377
 
Регистрация: 29.06.2011
Сообщений: 117
Восклицание

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Что Вы уже сделали? В чём проблема? Какого рода помощи Вы ожидаете?
вот есть прога, но она выводит только размер стека, а мне нужно весь стек.
Код:
#include <iostream>
#include <stack>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
int main()
{
    srand(time(0));
 
    stack<double> st;
    
    double max = 50.0, min = -50.0;
    
    for (size_t i = 0; i != 100; i++)
        st.push( (max - min) * ( (double)rand() / (double)RAND_MAX ) + min );
        
    cout << st.size();
    return 0;
}
shilovec5377 вне форума Ответить с цитированием
Старый 15.05.2013, 14:23   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
for(stack<double>::iterator it = st.begin(); it != st.end(); it++)
			
             cout<<(double)*it<<'\t';
подходит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.05.2013, 14:25   #5
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Если Вы это сами написали, то проблемы не вижу. for(stack<double>::iretator i = st.begin(); i!=st.end(); ++i)...
Abstraction вне форума Ответить с цитированием
Старый 15.05.2013, 14:47   #6
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Stilet
2Abstraction
у std::stack нет итераторов, это даже не настоящий контейнер, а адаптер над деком (по умолчанию)


2shilovec5377
если нужно вывести стек без использования дополнительного контейнера и без потери содержимого - можно использовать рекурсию:
Код:
#include <iostream>
#include <stack>
#include <cstdlib>
#include <ctime>
 
using namespace std;

template <typename T>
void print_stack(std::stack<T> &s)
{
	if (!s.empty()) {
		T top = s.top();
		s.pop();
		cout << top << endl;
		print_stack(s);
		s.push(top);
	}
}
 
int main()
{
    srand(time(0));
 
    stack<double> st;
    
    double max = 50.0, min = -50.0;
    
    for (size_t i = 0; i != 100; i++)
        st.push( (max - min) * ( (double)rand() / (double)RAND_MAX ) + min );

	print_stack(st);
    return 0;
}
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance

Последний раз редактировалось pproger; 15.05.2013 в 15:02.
pproger вне форума Ответить с цитированием
Старый 15.05.2013, 15:14   #7
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

А попользоваться STL не пробовали?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 15.05.2013, 16:31   #8
shilovec5377
Форумчанин
 
Аватар для shilovec5377
 
Регистрация: 29.06.2011
Сообщений: 117
Восклицание

помогите с условием:
Преобразовать стек в 2 стека. В первый поместить все четные, а во второй нечетные числа.
Код:
#include <iostream>
#include <stack>
#include <cstdlib>
#include <ctime>
 
using namespace std;

template <typename T>
void print_stack(std::stack<T> &s)
{
	if (!s.empty()) {
		T top = s.top();
		s.pop();
		cout << top << endl;
		print_stack(s);
		s.push(top);
	}
}
 
int main()
{
    srand(time(0));
 
    stack<double> st;
    
    double max = 50.0, min = -50.0;
    
    for (size_t i = 0; i != 100; i++)
        st.push( (max - min) * ( (double)rand() / (double)RAND_MAX ) + min );

	print_stack(st);
    return 0;
}
shilovec5377 вне форума Ответить с цитированием
Старый 15.05.2013, 17:29   #9
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2shilovec5377
четность/нечетность - характеристика целых чисел, болезненный.
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 15.05.2013, 18:31   #10
shilovec5377
Форумчанин
 
Аватар для shilovec5377
 
Регистрация: 29.06.2011
Сообщений: 117
По умолчанию

вот есть прога, подскажете пж, как можно вывести первозданный стек
Код:
#include <iostream>
#include <stack>
#include <cstdlib>
#include <ctime>
using namespace std;

template<class T>
void print(stack<T> st) {
    while (false == st.empty()) {
        cout << st.top() << " ";
        st.pop();
    }
    cout << endl;
}
 
int main() {
    srand(time(0));

    stack<int> st, st1, st2;
    const int max = 50, min = -50;

    for (size_t i = 0; i < 10; i++)
    st.push(rand() % (max - min) - min);

    while (false == st.empty()) {
        auto t = st.top();
        st.pop();
        (t & 1 ? st1 : st2).push(t);
    }

    print(st1);
    print(st2);

    return 0;
}
shilovec5377 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать программу, заполняющую массив случайными числами в диапазоне 0..1000. Free Pascal Praneg Помощь студентам 7 16.11.2012 23:14
Создать СТЕК Iren1993 Паскаль, Turbo Pascal, PascalABC.NET 1 30.10.2011 23:24
создать горизонтальную гистограмму функции Y=div X в диапазоне х 1..10 хитро Помощь студентам 0 17.05.2011 14:01
Дана матрица [1..10,1..20] заполненная случайными числами в диапазоне от [-10..19]. Паскаль. Stalker93 Помощь студентам 5 05.12.2010 20:00
Создать компонент Delphi стек Graff Valdemar Помощь студентам 3 20.05.2010 20:19