Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 08.02.2012
Сообщений: 5

Класc Dice (игральные кости).

08.02.2012, 22:46. Показов 3292. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Ребят, подскажите
Вот задание моё для лабы:
"Создать обьявление класса и разработать драйвер-программу, которая продемонстрирует работу класса.
Класс Dice (игральные кости). Класс сохраняет 3 игральных кости и общее количество очков после последнего броска. Должны быть предусмотрены методы, которые реализуют инициализацию и броски игральных костей."

Вот собс-но немного кода который я написал:

Dice.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#define N 3
class Dice
{
private:
     int roll;
     int dice123[N];
 
public:
    Dice();
    ~Dice(){}
    int getRoll();
};
Dice.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "Dice.h"
#include <time.h>
#include <stdlib.h>
#define N 3
Dice::Dice()
{
    int i;
    srand(time(NULL));
    for(i=0;i<N;i++){
        dice123[i]=1+rand()%6;
        roll+=dice123[i];
    }
}
int Dice::getRoll()
{
    return roll;
}
Main.cpp:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include "Dice.h"
using namespace std;
 
int main()
{
    Dice rolling;
    cout<<"The roll is "<<rolling.getRoll()<<endl;
    return 0;
}
Как бы компилятор это хавает, а вот результат весёлый -813235782
Подскажите пожалуйстa, так как я чёт не приложу ума куда чего, перечитал довольно инфы на счёт классов, но так и не могу понять куда что и в какой последовательности лепить...
Да и это должно быть без перегруженных операторов, в следующей лабе уже будут...
И желательно с комментариями по коду
З.Ы. Препод на парах о теплицах рассказывает, так что сам не могу, поэтому тут и пишу!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.02.2012, 22:46
Ответы с готовыми решениями:

Игральные кости
Требуется написать программу, которая моделирует бросание 2-х игровых кубиков (2 кубика с гранями от 1 до 6) Количество бросков - 100. ...

В программе про игральные кости нужно дать вес каждой грани...
Помогите пожалуйста!!! В программе про игральные кости нужно дать вес каждой грани, Вес каждой грани от 0.1 до 1. Вес означает с какой...

проитерировать свой класc
Всем привет!! подскажите пожалуйста, как создать класс-итератор для хэш-таблицы со списками, при этом чтобы он при достижении конца...

4
Заблокирован
08.02.2012, 22:58
а зачем ты все это внутрь конструктора разместил. Раз уж есть сама функция, которя должна этим заниматься, так в нее и размещай.

И потом таким образом, ты получишь только один из результатов а не три.

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

Добавлено через 1 минуту
Тот результат который тебе возвращается говорит о том, что переменная не инициализирована
0
0 / 0 / 0
Регистрация: 08.02.2012
Сообщений: 5
08.02.2012, 23:40  [ТС]
Цитата Сообщение от IFree Host Посмотреть сообщение
Ты ведь просишь вернуть значение одной переменной а не трех.
Ну вообще-то там идёт сумма трёх бросков которая сохраняется в переменную ролл в середине цикла

Добавлено через 2 минуты
Цитата Сообщение от IFree Host Посмотреть сообщение
Добавлено через 1 минуту
Тот результат который тебе возвращается говорит о том, что переменная не инициализирована
А когда я пытаюсь её инициализировать компилятор говорит про какое-то двоеточие, но что интересно одно уже там стоит
типа
Dice():roll(0){}

Добавлено через 34 минуты
вот немного переписал, но всёравно не понимаю зачем тогда там собс-но dice123, хотя они там нужны по условию задачи.
Прошшу помощи в усовершенствовании моего бреда)))
и ещё что-то мне не нравиться этот массив 3-х кубиков, может подскажите что можно с ним сделать, может я как-то его не правильно обьявляю, или мне каждый кубик по отдельности обьявлять, и нужно ли их инициализировать??

Dice.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#define N 3
class Dice
{
private:
     int roll;
     int dice123[N];
 
public:
    Dice()
    {
        roll=0;
    }
    ~Dice(){}
    int getRoll();
};
Dice.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "Dice.h"
#include <time.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
#define N 3
int Dice::getRoll()
{
    int i;
    srand(time(NULL));
    for(i=0;i<N;i++){
        dice123[i]=1+rand()%6;
        roll+=dice123[i];
        cout<<dice123[i]<<endl; //что бы посмотреть что в каждом
                                                           кубике и сравнить с результатом
    }
    return roll;
}
Ну а main.cpp без изменений
0
Заблокирован
09.02.2012, 01:53
Dice():roll(0){} - это компилятор тебе показывает правильный код инициализации.

Так надо инициализировать переменные в конструкторе:

C
1
2
3
4
5
// Конструктор в cpp
 
Dice::Dice():roll(0)
{
}
Вобще кошерней оставлять конструктор пустым, а все примочки кидать в функции и вызывать их потом по отдельности.

Вот тебе рабочий код выводит результат для каждого кубика отдельно

CDice.h

C
1
2
3
4
5
6
7
8
9
10
11
12
#pragma once
 
class CDice
{
public:
    int roll[3];
 
    CDice(void);
    ~CDice(void);
 
    void Roll();
};
CDice.cpp

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "StdAfx.h"
#include "CDice.h"
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
 
CDice::CDice(void)
{
}
 
CDice::~CDice(void)
{
}
void CDice::Roll()
{
    srand(time(NULL));
    for(int i=0; i<3; i++)
    {
        roll[i] = 1+rand()%6;
    }
}
Dice.cpp
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Dice.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include "CDice.h"
 
 
void main()
{
    CDice Kosti;
    Kosti.Roll();
    for (int i=0; i<3; i++) printf("%i  ", Kosti.roll[i]);
    getchar();
}
0
0 / 0 / 0
Регистрация: 08.02.2012
Сообщений: 5
09.02.2012, 02:48  [ТС]
Всё разобрался сам, вот именно то что мне нужно было:
Dice.h:
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 <time.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
 
class Dice
{
private:
    int value;
 
public:
    Dice();
    ~Dice(){}
    void setValue();
    int getValue();
};
 
class Driver
{
private:
    Dice dice1, dice2, dice3;
    int sum;
 
public:
    Driver()
    {
        sum=0;
    }
    ~Driver(){}
    void roll();
    int result();
};
Dice.cpp:
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
#include "Dice.h"
 
Dice::Dice()
{
    value=0;
    srand(time(NULL));
}
void Dice::setValue()
{
    value=1+rand()%6;
    cout<<value<<endl;
}
int Dice::getValue()
{
    return value;
}
void Driver::roll()
{
    dice1.setValue();
    dice2.setValue();
    dice3.setValue();
    sum=dice1.getValue()+dice2.getValue()+dice3.getValue();
}
int Driver::result()
{
    return sum;
}
main.c:
C++
1
2
3
4
5
6
7
8
9
#include "Dice.h"
 
int main()
{
    Driver rolling;
    rolling.roll();
    cout<<"The roll is "<<rolling.result()<<endl;
    return 0;
}
только в идеале описание и реализацию класса Driver надо бы засунуть в отдельные файлы....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.02.2012, 02:48
Помогаю со студенческими работами здесь

Игральные кости
Помогите, пожалуйста, кому не сложно. Вот этот кусок не работает правильно. Нужно найти сколько раз выпало определенное число....

Игральные кости
Найти вероятность того, что при бросании трех игральных костей хотя бы на одной выпадет 5 очков, при условии, что на всех костях выпали...

3 игральные кости
Бросаются 3 игральные кости, найти вероятность того, что хотя бы на одной из них выпадет одно очко, если на всех трех костях выпали разные...

2 игральные кости
Помогите пожалуйста, решить задачу, уже запуталась. Бросаются 2 игральные кости. Пусть события: А-сумма очков кратна 3; В-хотя бы на...

Игральные кости
Бросаются 3 игральные кости. Какова вероятность, что хотя бы на одной число очков ≥ 5?


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru