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

создать стек с числами в диапазоне от -50 до +50 - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
shilovec5377
 Аватар для shilovec5377
28 / 53 / 1
Регистрация: 26.05.2011
Сообщений: 752
15.05.2013, 13:02     создать стек с числами в диапазоне от -50 до +50 #1
создать стек с числами в диапазоне от -50 до +50
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
15.05.2013, 13:13     создать стек с числами в диапазоне от -50 до +50 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <stack>
#include <random>
#include <chrono>
 
using namespace std;
 
int main()
{
    default_random_engine gen(chrono::system_clock::now().time_since_epoch().count());
    uniform_real_distribution <double> distribution(-50, 50);
 
    stack<double> st;
 
    for (size_t i = 0; i != 100; i++)
        st.push( distribution(gen) );
    cout << st.size();
    return 0;
}
shilovec5377
 Аватар для shilovec5377
28 / 53 / 1
Регистрация: 26.05.2011
Сообщений: 752
15.05.2013, 13:17  [ТС]     создать стек с числами в диапазоне от -50 до +50 #3
Цитата Сообщение от Olivеr Посмотреть сообщение
#include <chrono>
а что это за библиотека такая?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
15.05.2013, 13:20     создать стек с числами в диапазоне от -50 до +50 #4
chrono::system_clock::now().time_since_epoch().count()
shilovec5377
 Аватар для shilovec5377
28 / 53 / 1
Регистрация: 26.05.2011
Сообщений: 752
15.05.2013, 13:23  [ТС]     создать стек с числами в диапазоне от -50 до +50 #5
что-то ругается на #include <chrono>

Добавлено через 41 секунду
#include <random> заменил на #include <stdlib.h>
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
15.05.2013, 13:28     создать стек с числами в диапазоне от -50 до +50 #6
Цитата Сообщение от shilovec5377 Посмотреть сообщение
что-то ругается на #include <chrono>
#include <random> заменил на #include <stdlib.h>
http://www.cplusplus.com/reference/r...random_engine/
http://www.cplusplus.com/reference/chrono/
читаем внимательно.

Кликните здесь для просмотра всего текста
C++11
shilovec5377
 Аватар для shilovec5377
28 / 53 / 1
Регистрация: 26.05.2011
Сообщений: 752
15.05.2013, 13:34  [ТС]     создать стек с числами в диапазоне от -50 до +50 #7
дело в том, что у меня с++ (6)
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
15.05.2013, 13:38     создать стек с числами в диапазоне от -50 до +50 #8
shilovec5377, попробуйте так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#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
 Аватар для shilovec5377
28 / 53 / 1
Регистрация: 26.05.2011
Сообщений: 752
15.05.2013, 13:45  [ТС]     создать стек с числами в диапазоне от -50 до +50 #9
а как можно вывести весь стек, а не его размер?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
15.05.2013, 13:53     создать стек с числами в диапазоне от -50 до +50 #10
Еще как вариант:
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
#include <iostream>
#include <stack>
#include <cstdlib>
#include <ctime>
 
class MyRand{
public:
    MyRand(int Min,int Max):mMin(min(Min,Max)),mMax(max(Min,Max)){
        srand(static_cast<unsigned>(time(0)));
    }
    int operator()(){
        return rand()%(mMax-mMin+1)+mMin;
    }
private:
    int mMin;
    int mMax;
};
 
 
int main(){
    std::stack<int> st;
    MyRand gen(-50,50);
    int count=100;
    for(int i=0;i<count;++i)
        st.push(gen());
    std::cout << st.size()<<std::endl<<std::endl;
    while(!st.empty()){
        std::cout<<st.top()<<std::endl;
        st.pop();
    }
    return 0;
}
shilovec5377
 Аватар для shilovec5377
28 / 53 / 1
Регистрация: 26.05.2011
Сообщений: 752
15.05.2013, 13:59  [ТС]     создать стек с числами в диапазоне от -50 до +50 #11
Ругается:
C++
1
2
error C2065: 'min' : undeclared identifier
              error C2065: 'max' : undeclared identifier
в этой строке:
C++
1
MyRand(int Min,int Max):mMin(min(Min,Max)),mMax(max(Min,Max))
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
15.05.2013, 14:02     создать стек с числами в диапазоне от -50 до +50 #12
std::min
std::max
shilovec5377
 Аватар для shilovec5377
28 / 53 / 1
Регистрация: 26.05.2011
Сообщений: 752
15.05.2013, 14:06  [ТС]     создать стек с числами в диапазоне от -50 до +50 #13
Цитата Сообщение от Croessmah Посмотреть сообщение
std::min
std::max
а куда именно его вставить?
пробую в
C++
1
MyRand(int Min,int Max):mMin(min(Min,Max)),mMax(max(Min,Max))
, не хочет
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
15.05.2013, 14:09     создать стек с числами в диапазоне от -50 до +50 #14
C++
1
2
3
4
5
6
7
8
9
10
11
12
class MyRand{
public:
    MyRand(int Min,int Max):mMin(std::min(Min,Max)),mMax(std::max(Min,Max)){
        srand(static_cast<unsigned>(time(0)));
    }
    int operator()(){
        return rand()%(mMax-mMin+1)+mMin;
    }
private:
    int mMin;
    int mMax;
};
shilovec5377
 Аватар для shilovec5377
28 / 53 / 1
Регистрация: 26.05.2011
Сообщений: 752
15.05.2013, 14:15  [ТС]     создать стек с числами в диапазоне от -50 до +50 #15
не хочет:
error C2039: 'min' : is not a member of 'std'
error C2065: 'min' : undeclared identifier
error C2039: 'max' : is not a member of 'std'
error C2065: 'max' : undeclared identifier
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
15.05.2013, 14:18     создать стек с числами в диапазоне от -50 до +50 #16
Тогда явно подключите:
C++
1
#include <algorithm>
собственно как у меня и было(не знаю зачем исправил).

А еще лучше, не пользуйтесь старыми компиляторами. Не зря же выходят новые стандарты и новые компиляторы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2013, 18:32     создать стек с числами в диапазоне от -50 до +50
Еще ссылки по теме:

C++ Заполнить массив случайными числами в диапазоне (6, 32), вывести в строку, упорядочить вставкой
C++ Заполнить массив случайными числами в диапазоне
C++ Создать стек

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

Или воспользуйтесь поиском по форуму:
shilovec5377
 Аватар для shilovec5377
28 / 53 / 1
Регистрация: 26.05.2011
Сообщений: 752
15.05.2013, 18:32  [ТС]     создать стек с числами в диапазоне от -50 до +50 #17
Цитата Сообщение от Croessmah Посмотреть сообщение
#include <algorithm>
у меня она и была подключена, но всеравно теже ошибки.

Добавлено через 4 минуты
и пользоваться мне нужно компилятором С++6, больше никаким

Добавлено через 56 минут
вот нашел прогу, помогите с условием:
Преобразовать стек в 2 стека. В первый поместить все четные, а во второй нечетные числа.
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 <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<int> 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;
}
Добавлено через 56 минут
___

Добавлено через 1 час 20 минут
______________________________________________________________________________
вот есть прога, подскажете пж, как можно вывести первозданный стек.
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
#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;
}
Yandex
Объявления
15.05.2013, 18:32     создать стек с числами в диапазоне от -50 до +50
Ответ Создать тему
Опции темы

Текущее время: 14:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru