Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
viktor 1105
0 / 0 / 0
Регистрация: 01.02.2014
Сообщений: 24
#1

Програма должна имитировать n бросков игральной кости - C++

01.02.2014, 23:22. Просмотров 551. Ответов 13
Метки нет (Все метки)

помогите

програма должна имитировать n бросков игральной кости




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 <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <locale.h>
#include <iostream>
#include <cmath>
using namespace std;
int main (){
    setlocale(0,"");
    int n;
    printf ("\n\t\імітує n кидків шестигранної гральної кістки\n\n\n");
    printf ("Введ1ть к1льк1сть к1дк1в:   ");
    scanf ("%d", &n);
    srand (time(NULL) );
    printf ("\n\n\tрезультат:\n");// до сюда работает 
 
srand (time(NULL) );
 
 
    for (int i = 1; i < 7; i++)
    {
        if (i%10 == 0) printf("\n");
            /* Генерація дійсного випадкового числа: */
        int number = rand()%100 - 50;
        if (i == 6) i = 1;
        printf("%7d", number);
    }
 
 
 
 
    return 0;
 
}

http://www.cyberforum.ru/cpp-beginners/thread1553116.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2014, 23:22
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Програма должна имитировать n бросков игральной кости (C++):

Програма должна слаживать два числа, в котором по 200 символов, и выводить ответ
Програма должна слажывать два числа в котором по 200 символов и выводить...

Результаты бросков спортсменов в матрице. Найти победителя
В метании молота состязается n спортcменов. Каждый из них сделал m бросков....

Преобразовать номер игральной карты в ее достоинство
Написал я, значит, колоду карт. 52 штуки, все растусовывается, всё раздается....

Вывести название игральной карты в заданном виде
Помогите, пожалуйста!!! Смоделировать выбор &quot;наугад&quot; одной карты из полного...

В программе моделирующей бросок моенты, моделируется только 100 бросков Орла
Написал программа для моделирования броска монеты, но почему - то при всегда...

13
mustimur
268 / 222 / 72
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
01.02.2014, 23:47 #2
строчку if (i == 6) i = 1; я не понял поэтому закоментировал из-за нее цикл бесконечным становился..
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
#define _CRT_SECURE_NO_WARNINGS
 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <locale.h>
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main (){
setlocale(0,"");
int n;
printf ("\n\t\імітує n кидків шестигранної гральної кістки\n\n\n");
printf ("Введ1ть к1льк1сть к1дк1в: ");
scanf ("%d", &n);
srand (time(NULL) );
printf ("\n\n\tрезультат:\n");// до сюда работает 
 
srand (time(NULL) );
 
 
for (int i = 1; i < 7; i++)
{
if (i%10 == 0) printf("\n");
/* Генерація дійсного випадкового числа: */
int number = rand()%12;
//if (i == 6) i = 1;
printf("%7d", number);
}
 
 
 
 
return 0;
 
}
Добавлено через 8 минут
25 строка - оставил вашу: for (int i = 1; i < 7; i++), но судя по коду правильнее все же for (int i = 1; i < n; i++)
0
viktor 1105
0 / 0 / 0
Регистрация: 01.02.2014
Сообщений: 24
01.02.2014, 23:49  [ТС] #3
генератор должен видать числа от 1 до 6 , а цикл повторятся n раз , n вводится из клавиатуры
0
mustimur
268 / 222 / 72
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
01.02.2014, 23:54 #4
Цитата Сообщение от viktor 1105 Посмотреть сообщение
генератор должен видать числа от 1 до 6 , а цикл повторятся n раз , n вводится из клавиатуры
Ну так бы сразу и сказали, а то я не все разумею телепатически:
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
#define _CRT_SECURE_NO_WARNINGS
 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <locale.h>
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main (){
setlocale(0,"");
int n;
printf ("\n\t\імітує n кидків шестигранної гральної кістки\n\n\n");
printf ("Введ1ть к1льк1сть к1дк1в: ");
scanf ("%d", &n);
srand (time(NULL) );
printf ("\n\n\tрезультат:\n");// до сюда работает 
 
srand (time(NULL) );
 
 
for (int i = 1; i < n; i++)
{
if (i%10 == 0) printf("\n");
/* Генерація дійсного випадкового числа: */
int number = rand()%7;
 
printf("%7d", number);
}
std::system("Pause");
 
return 0;
 
}
1
viktor 1105
0 / 0 / 0
Регистрация: 01.02.2014
Сообщений: 24
01.02.2014, 23:59  [ТС] #5
а можно как то исключить 0
0
GuGo1991
269 / 263 / 146
Регистрация: 02.08.2012
Сообщений: 609
02.02.2014, 00:00 #6
viktor 1105, от 1 до 6:
C++
1
int number = rand() % 6 + 1;
1
Slinner
-1 / 0 / 4
Регистрация: 01.02.2014
Сообщений: 13
02.02.2014, 00:05 #7
Скомпилировал в VS 2010 - всё работает. Бесконечный цикл с рандомными значениями в пределах от -50 до 49. Только непонятно - для чего нужна переменная
C++
1
n
- она не используется, и для чего нужна строка
C++
1
if (i%10 == 0) printf("\n");
- она тоже не разу не проходит по условию.
0
viktor 1105
0 / 0 / 0
Регистрация: 01.02.2014
Сообщений: 24
02.02.2014, 00:16  [ТС] #8
if (i%10 == 0) printf("\n") а разве она не возводит инф в 10 столбиках


#define _CRT_SECURE_NO_WARNINGS что это такое в начали программы
0
Slinner
-1 / 0 / 4
Регистрация: 01.02.2014
Сообщений: 13
02.02.2014, 15:25 #9
Цитата Сообщение от viktor 1105 Посмотреть сообщение
if (i%10 == 0) printf("\n") а разве она не возводит инф в 10 столбиках
Это было бы так если бы переменная i при выполнении программы имела значения, кратные десяти, но у тебя она имеет значения от 1 до 6, так что условие
C++
1
i%10 == 0
в твоей программе - всегда ложно.

Цитата Сообщение от viktor 1105 Посмотреть сообщение
#define _CRT_SECURE_NO_WARNINGS что это такое в начали программы
Это отключает генерацию некоторых предупреждений компилятором: например предупреждение относительно использования более безопасных функций
C++
1
fopen_s, sprintf_s
вместо обычных
C++
1
fopen, sprintf
Добавлено через 6 минут
Цитата Сообщение от mustimur Посмотреть сообщение
Ну так бы сразу и сказали, а то я не все разумею телепатически:
C++
1
2
3
//...
for (int i = 1; i < n; i++)
//...
Цикл будет повторяться n - 1 раз, чтобы цикл повторялся n раз надо делать так:
C++
1
2
3
//...
for (int i = 0; i < n; i++)
//...
0
Xopecc
33 / 28 / 9
Регистрация: 13.09.2013
Сообщений: 250
02.02.2014, 16:50 #10
mustimur, viktor 1105, А зачем использовать функцию srand 2 раза??
C++
1
2
3
4
srand (time(NULL) );
printf ("\n\n\tрезультат:\n");// до сюда работает 
 
srand (time(NULL) )
0
mustimur
268 / 222 / 72
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
02.02.2014, 20:06 #11
Один и впрямь лишний

Добавлено через 1 час 18 минут
Цитата Сообщение от Slinner Посмотреть сообщение
Это было бы так если бы переменная i при выполнении программы имела значения, кратные десяти, но у тебя она имеет значения от 1 до 6, так что условие
C++
1
i%10 == 0
не точно, она может быть и больше 10, это счетчик числа броско, задаваемый в начале.
Цитата Сообщение от Slinner Посмотреть сообщение
Цикл будет повторяться n - 1 раз, чтобы цикл повторялся n раз надо делать так:
а вот с этим согласен, я эту 1 просмотрел (int i=1)
0
Slinner
-1 / 0 / 4
Регистрация: 01.02.2014
Сообщений: 13
02.02.2014, 20:52 #12
Цитата Сообщение от mustimur Посмотреть сообщение
Добавлено через 1 час 18 минут
не точно, она может быть и больше 10, это счетчик числа броско, задаваемый в начале.
Понятие кратности говорит о делении без остатка (остаток = 0). Я имел ввиду, что если i будет равно 0, 10, 20, 30 ... и т. д., то условие (i%10 == 0) будет истинным, но т. к. в его цикле i имеет значения от 1 до 6, то это условие всегда ложно, а значит printf("\n"); никогда не вызовется, другими словами - эта запись не имеет смысла.

Но теперь, конечно же, это не так. В цикле for(int i=0; i<n; i++) эта строка имеет смысл. Спасибо, что поправил
0
viktor 1105
0 / 0 / 0
Регистрация: 01.02.2014
Сообщений: 24
02.02.2014, 21:39  [ТС] #13
просто ошибся , я С++ всего две недели изучаю
0
mustimur
268 / 222 / 72
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
02.02.2014, 21:46 #14
Цитата Сообщение от viktor 1105 Посмотреть сообщение
просто ошибся , я С++ всего две недели изучаю
Не ошибается тот кто ничего не делает это нормально

Добавлено через 15 секунд
Цитата Сообщение от viktor 1105 Посмотреть сообщение
просто ошибся , я С++ всего две недели изучаю
Не ошибается тот кто ничего не делает это нормально
1
02.02.2014, 21:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.02.2014, 21:46
Привет! Вот еще темы с решениями:

Бросок игральной кости
Помогите решить задачу.При нажатии на соответствующую кнопку отображается...

Разработать программу, генерирующую случайное число по аналогу игральной кости
Задание: Разработать программу генерирующее случайное число по аналогу...

Четыре грани первой игральной кости красные и две - белые
Четыре грани первой игральной кости красные и две - белые, а у второй кости две...

Разработать модель процесса качения и определить номер выпавшей грани игральной кости
Игральная шестигранная кость катится по столу и останавливается.Разработать...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru