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

Операции с рандомом - C++

Восстановить пароль Регистрация
 
ApxaHreJICBETA
 Аватар для ApxaHreJICBETA
0 / 0 / 0
Регистрация: 19.04.2013
Сообщений: 8
19.04.2013, 11:57     Операции с рандомом #1
В общем ситуация такая, нужно написать в консоле "Шар судьбы", возникла проблема с определением рандомного ответа. Не пойму как его осуществить. Подумывал о том, чтобы переменные класса string обозначить как ответы, а в следующей переменной стринг их добавить и прикрепить к рандому переменную, чтобы из нее генерировал какой-либо ответ, но не пойму как это осуществить и возможно ли. Если есть идеи подскажите. Сам кода такой, точнее тут кусок программы, в котором располагается рандом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
string b ("Сбудется");
    string c ("Не сбудется");
    string d ("Возможно");
    string e ("Наверняка");
    string f ("Есть не большой шанс");
    string g ("Все еще впереди");
    string h ("Сегодня явно не ваш день");
    string i ("Удача сегодня вам сопутствует");
    string j ("В следующий раз повезет");
    string a=b+c+d+e+f+g+h+i+j;
    time_t t;
 
    cout<<"Введите желание(не больше 20 символов)"<<endl;
    cin>>a;
    while(a.size()>19){cout<<"Введите заново"<<endl;
    cin>>a;}
 
    srand((unsigned) time (&t));
        a=rand()%9+1;
        cout<<" "<<a<<endl;
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SummerRain
 Аватар для SummerRain
325 / 324 / 17
Регистрация: 16.12.2012
Сообщений: 544
19.04.2013, 12:09     Операции с рандомом #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
#include <iostream>
#include <string>
#include <ctime>
using namespace std;
 
int main()
{
    srand((unsigned)time(NULL));
    setlocale(0, "");
    string arr[9];
    arr[0] = "Сбудется";
    arr[1] = "Не сбудется";
    arr[2] = "Возможно";
    arr[3] = "Наверняка";
    arr[4] = "Есть не большой шанс";
    arr[5] = "Все еще впереди";
    arr[6] = "Сегодня явно не ваш день";
    arr[7] = "Удача сегодня вам сопутствует";
    arr[8] = "В следующий раз повезет";
 
    string a;
    cout<<"Введите желание(не больше 20 символов)"<<endl;
    getline(cin, a);
    while(a.size()>19) {
        cout<<"Введите заново"<<endl;
        getline(cin, a);
    }
    cout << arr[rand() % 9] << endl;
    system("pause>0");
    return 0;
}
ApxaHreJICBETA
 Аватар для ApxaHreJICBETA
0 / 0 / 0
Регистрация: 19.04.2013
Сообщений: 8
19.04.2013, 12:30  [ТС]     Операции с рандомом #3
+ в репу) интересный способ, пока только учусь, препод о такой функции стринг не рассказывал, сегодня попрошу его этот код разобрать, не большие поправки внес и заработало.

Добавлено через 3 минуты
Если кому интересно, выложу полный код программы.
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
// ConsoleApplication1.cpp: определяет точку входа для консольного приложения.
//
 
 
#include "stdafx.h"
#include <iostream>
#include <string>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
using namespace std;
void main();
void ygad();
int exit();
void menu();
void xalop();
 
void main(){setlocale(0,"");
cout<<"Добропожаловать в Шар судьбы! Испытай свою судьбу!\n"<<endl;
xalop();
}
 
void xalop(){
    int b;
    cout<<"Введите ваш пол\n \n1.Мужской \n2.Женский"<<endl;
    cin>>b;
    switch(b){
    case 1:{cout<<"Отлино. играем."<<endl;menu();break;}
    case 2 :{cout<<"Вали на кухню... халопка!"<<endl;exit();break;}
           
    }
}
 
void menu(){ 
    int a;
cout<<"Выберивариант: 1. Играть.\n 2.Выйти.\n"<<endl;
cin>>a;
switch (a)
{
case 1:{cout<<"И так начем"<<endl;ygad();break;}
case 2:{cout<<"Вы выбрали выход"<<endl;exit();break;}
    default :{cout<<"Такой цифры нет."<<endl;}
}
}
void ygad(){
     srand((unsigned)time(NULL));
    setlocale(0, "");
    string arr[9];
    arr[0] = "Сбудется";
    arr[1] = "Не сбудется";
    arr[2] = "Возможно";
    arr[3] = "Наверняка";
    arr[4] = "Есть не большой шанс";
    arr[5] = "Все еще впереди";
    arr[6] = "Сегодня явно не ваш день";
    arr[7] = "Удача сегодня вам сопутствует";
    arr[8] = "В следующий раз повезет";
 
    string a;
    cout<<"Введите желание(не больше 20 символов)"<<endl;
    cin>>a;
    getline(cin, a);
    while(a.size()>19) {
        cout<<"Введите заново"<<endl;
        getline(cin, a);
    }
    cout << arr[rand() % 9] << endl;
    menu();
}
 
int exit(){return 0;}
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
19.04.2013, 12:33     Операции с рандомом #4
Можно упростить чутка:
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 <string>
#include <ctime>
using namespace std;
 
int main()
{
    srand((unsigned)time(NULL));
    setlocale(0, "");
    string arr[] = {
        "Сбудется",
        "Не сбудется",
        "Возможно",
        "Наверняка",
        "Есть не большой шанс",
        "Все еще впереди",
        "Сегодня явно не ваш день",
        "Удача сегодня вам сопутствует",
        "В следующий раз повезет" };
 
    string a;
    cout<<"Введите желание(не больше 20 символов)"<<endl;
    getline(cin, a);
    while(a.size()>19) {
        cout<<"Введите заново"<<endl;
        getline(cin, a);
    }
 
    int arrsize = sizeof(arr)/sizeof(*arr);
    cout << arr[rand() % arrsize] << endl;
    system("pause>0");
    return 0;
}
SummerRain
 Аватар для SummerRain
325 / 324 / 17
Регистрация: 16.12.2012
Сообщений: 544
19.04.2013, 12:34     Операции с рандомом #5
Цитата Сообщение от ApxaHreJICBETA Посмотреть сообщение
"Вали на кухню... халопка!"
за что ты так с Прекрасным полом?
Женщин надо любить, и они ответят тебе благодарностью.
ApxaHreJICBETA
 Аватар для ApxaHreJICBETA
0 / 0 / 0
Регистрация: 19.04.2013
Сообщений: 8
19.04.2013, 12:37  [ТС]     Операции с рандомом #6
Цитата Сообщение от SummerRain Посмотреть сообщение
за что ты так с Прекрасным полом?
Женщин надо любить, и они ответят тебе благодарностью.
Задание препода)) я уж тут не при чем. Просто надо было сделать определение пола, по одному из них играть, по другому выходить, он видимо ничего лучше не придумал))
SummerRain
19.04.2013, 12:38
  #7

Не по теме:

Правильно! Вали всё на препода

ApxaHreJICBETA
 Аватар для ApxaHreJICBETA
0 / 0 / 0
Регистрация: 19.04.2013
Сообщений: 8
19.04.2013, 12:39  [ТС]     Операции с рандомом #8
Цитата Сообщение от Tulosba Посмотреть сообщение

int arrsize = sizeof(arr)/sizeof(*arr);
cout << arr[rand() % arrsize] << endl;
system("pause>0");
return 0;
}[/CPP]
Проще, но с этим я вообще не знаком, в том коде только про string arr не в курсе, а тут как я понял это рандом такой, но он какой то замудренный для меня) Если не сложно расскажи принцип
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2013, 12:57     Операции с рандомом
Еще ссылки по теме:

Рандомом вывести 3 не повторяющихся цифры C++
Как сделать что бы карты выводились рандомом? C++
Вставка ctime и заполнения массива рандомом C++

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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
19.04.2013, 12:57     Операции с рандомом #9
ApxaHreJICBETA, суть в том, что задавать размер массива при инициализации не обязательно.
C++
1
string arr[] =  ...
Размер будет вычислен компилятором по кол-ву добавленных аргументов в фигурных скобках.
А чтобы получить этот размер в коде можно воспользоваться конструкцией:
C++
1
int arrsize = sizeof(arr)/sizeof(*arr);
Т.е. берем размер статического массива (это будет кол-во байт под все его элементы) и делим на размер элемента.
C++
1
arr[rand() % arrsize]
rand возвращает число от 0 до MAX_INT (вроде бы), чтобы не выйти за пределы массива строк, нужно этот результат ограничить. В данном случае это делается операцией % (остаток о деления).
Yandex
Объявления
19.04.2013, 12:57     Операции с рандомом
Ответ Создать тему
Опции темы

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