2015-10-10 2 views
-1

Я занимаюсь школьным заданием и не знаю, как действовать, не зная, как делать то, что я просил в названии. Мне дали код (моим профи), чтобы запустить и распечатать бросок кости (1-6).Как я могу присвоить значение, которое я получаю от функции, до целого числа в c?

void showDice (int num) { 
    int diceRoll; 
    srand(time(NULL)); 
    diceRoll = (rand() %6) +1; 
    printf("%d\n", diceRoll); 
    } 

Я знаю, как назвать его основной функции (showDice (0);) и печатает его. Но мне нужно знать, как получить его как int (или другую переменную), чтобы я мог добавить его в общую (или счетную) переменную.

Thanks

+4

Поскольку это домашнее задание, я не буду делать это для вас, но ваша функция должна возвращать что-то. Это должно указывать вам в правильном направлении. – dman2306

+0

Другой альтернативой является передача указателя на 'num', чтобы его значение в исходном адресе было обновлено. (т. е. 'void showDice (int * num);') Затем в конце функции '* num = diceRoll;'. Затем вы получите значение 'diceRoll' в' num' в 'main()'. –

+1

[srand() - зачем вызывать его только один раз] (http://stackoverflow.com/q/7343833/995714) –

ответ

1

Вы можете просто вернуть его. Нечто подобное,

int showDice (int num) { 
    int diceRoll; 
    srand(time(NULL)); 
    diceRoll = (rand() % 6) + 1; 
    printf("%d\n", diceRoll); 
    return diceRoll; 
} 

Кроме того, если вы предназначены для num быть число сторон,

int showDice (int num) { 
    int diceRoll; 
    srand(time(NULL)); 
    diceRoll = (rand() % num) + 1; 
    printf("%d\n", diceRoll); 
    return diceRoll; 
} 

Наконец, вы должны вызывать только srand один раз (при запуске программы).

+0

Если бы я просто просто возвращал его, как бы я его назвал в основной функции? Как и любое другое целое число? Я бы сделал что-то вроде showdice (0); printf ("% d", diceRoll); –

+0

Что-то вроде 'int roll = showDice (6); printf ("% d \ n", roll), ' –

+0

- это даст мне случайное число? или всего 6? –

0

Вы можете просто вернуть его (вместо его печати):

int rollDice(int num) { 
    int diceRoll; 
    srand(time(NULL)); 
    diceRoll = (rand() %6) +1; 
    return diceRoll; 
} 

Удаление некоторых посторонних вещей, а если num это число сторон:

int rollDice(int num) { 
    srand(time(NULL)); 
    return (rand() % num) + 1; 
} 
+2

Вызов 'srand' должен быть (пере) перемещен. – 5gon12eder

0

Что вы можете сделать это изменение типа функции для int, чтобы вы могли вернуть значение и просто вернуть diceRoll в конце функции:

int showDice(int num) { 
int diceRoll; 
diceRoll = (rand() %6) +1; 
printf("%d\n", diceRoll); 
return (diceRoll); 
} 

Тогда вы можете вызвать вашу функцию как это (обратите внимание, что srand следует называть только один раз):

int main() { 
int rollDice; 
srand(time(NULL)); 
rollDice = showDice(0); 
} 
+1

Вызов srand должен быть переадресован. – 5gon12eder

+0

правда, я пропустил это. – Guillaume