С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
half-node
21 / 18 / 1
Регистрация: 12.08.2010
Сообщений: 206
#1

Цикл for и 56 карт - C++

18.08.2010, 22:44. Просмотров 877. Ответов 19
Метки нет (Все метки)

Выводит 14! карт в каждой строке.
Я не понял как это получается.

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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
// 7_6.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <conio.h>
 
using namespace std;
 
enum Suit {clubs, diamonds, hearts, spades};
enum Man {Jake, Nik, Bob, Arni};
const int jack =10;
const int queen=11;
const int king =12;
const int ace = 13;
 
 
 
 
class card
{
private:
    int number;
    Suit suit;
public:
    card()
    {};
    void set(int n, Suit s)
    {
        suit =s;
        number =n;
    }
    void display();
};
 
void card::display()
{
    if(number>=2 && number<10)
        cout << number;
    else
    {
        switch(number)
        {
        case jack: cout << 'J'; break;
        case queen: cout << 'Q'; break;
        case king: cout << 'K'; break;
        case ace: cout << 'A'; break;
        }
    }
    switch(suit)
    {
    case clubs: cout << static_cast<char>(5);break;
    case diamonds: cout << static_cast<char>(4);break;
    case hearts: cout << static_cast<char>(3);break;
    case spades: cout << static_cast<char>(6);break;
    }
}
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    card deck[52];
    int j;
 
    cout << endl;
    for(j=0;j<52;j++)
    {
        int num = (j%13)+2;
        Suit su = Suit(j/13);
        deck[j].set(num,su);
        
        // выводил сразу для проверки...
        /*deck[j].display();
        cout << "   ";
        if(!((j+1)%13))
            cout << endl;*/
    }
 
    cout << "Deck:\n";
    for(j=0;j<52;j++)
    {
        deck[j].display();
        cout << "   ";
        if(!((j+1)%13))
            cout << endl;
    }
 
    // перемешиваем
    srand(time(NULL));
    for(j=0;j<52;j++)
    {
        int k = rand()%52;
        card temp = deck[j];
        deck[j] = deck[k];
        deck[k] = temp;
    }
    ////////////////
 
    cout << "\nShuffel deck:\n";
    for(j=0;j<52;j++)
    {
        deck[j].display();
        cout << "   ";
        if(!((j+1)%13))
            cout << endl;
    }
 
 
    getch();
    return 0;
}
Еще вопрос, касающийся остатка от деления
C++
1
int num = (j%13)+2;
Как при j равном, скажем, единице, мы получаем число 3?
1/13 = 0,076
0,076 +2 = 2,076
Откуда 3?
Объясните пожалуйста данную арифметическую операцию.

в случае:
C++
1
if(!((j+1)%13))
я понимаю. Мол, если остаток равен нулю, то...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.08.2010, 22:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Цикл for и 56 карт (C++):

Сколькими способами из колоды (36 карт) можно выбрать неупорядоченный набор из 6 карт, удовлетворяющих условию - C++
Сколькими способами из колоды 36 карт можно выбрать неупорядоченный набор из 6 карт, чтобы в этом наборе было бы точно: 2 дамы, 1 туз, 2...

Раздача карт, оценка комбинации и выяснение сколько карт взять, сколько сбросить - C++
Всем добра! Хочу спросить, как решать задачу со сдачей, оценкой карты и после всего этого нужно ещё вычислить, сколько карт нужно...

Почему цикл на при 1 уходит в бесконечный цикл? - C++
#define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; int main() { int x=0, y=0,...

Цикл: цикл for вообще никак не воспринимается транслятором - C++
Пишу программу, которая производит различные действия с одномерным массивом. Возникла следующая проблема: цикл for вообще никак не...

Задание на цикл с параметром и цикл с постусловием - C++
Помогите пожалуйста написать программу с этими циклами. 1. Вычислить и напечатать таблицу значений функции Z= (e^-x)sinx для 0&lt;=x&lt;=П,...

Цикл for/Цикл while Помогите срочно пожалуйста... - C++
1.Вычислить и вывести на экран в виде таблицы значения функции F от x1 до x2 с шагом dx. где a, b и c - действительные числа. 2.Цикл...

19
fasked
Эксперт С++
4951 / 2531 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
18.08.2010, 23:15 #2
Цитата Сообщение от half-node Посмотреть сообщение
int num = (j%13)+2
Цитата Сообщение от half-node Посмотреть сообщение
1/13 = 0,076
мне кажется, что код немного не соответствует тому, что вы считаете. в коде берется остаток от деления, а вы считаете как деление.
0
half-node
21 / 18 / 1
Регистрация: 12.08.2010
Сообщений: 206
19.08.2010, 09:59  [ТС] #3
Цитата Сообщение от fasked Посмотреть сообщение
мне кажется, что код немного не соответствует тому, что вы считаете. в коде берется остаток от деления, а вы считаете как деление.
остаток от деления при 1/13 = 076... почему для меня и загадка...откуда единица появляется.

по основному вопросу есть идеи?)
0
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
19.08.2010, 10:02 #4
half-node, остаток от деления 1 на 13 будет равен 1:
1|13
0|0
1 <- это и есть остаток
Читаем, что такое остаток от деления.
0
half-node
21 / 18 / 1
Регистрация: 12.08.2010
Сообщений: 206
19.08.2010, 10:08  [ТС] #5
Цитата Сообщение от Nameless One Посмотреть сообщение
half-node, остаток от деления 1 на 13 будет равен 1:
1|13
0|0
1 <- это и есть остаток
Читаем, что такое остаток от деления.
Я ошибаюсь, или можно это как-то объяснить человеческим языком?)
что значит 0|0?
0
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
19.08.2010, 10:10 #6
Вспомни, как в школе ты делил числа в столбик. Это я так схематично попытался это изобразить
По ссылке все расписано человеческим языком.
0
half-node
21 / 18 / 1
Регистрация: 12.08.2010
Сообщений: 206
19.08.2010, 10:12  [ТС] #7
А...Все, спасибо. По крайней мере "зацепка"
По поводу основного вопроса, откуда отображение еще одной карты в каждой масти?
Тут нужно сделать пояснение: прорисовывается только
C++
1
2
3
4
5
6
7
switch(suit)
        {
        case clubs: cout << static_cast<char>(5);break;
        case diamonds: cout << static_cast<char>(4);break;
        case hearts: cout << static_cast<char>(3);break;
        case spades: cout << static_cast<char>(6);break;
        }
эта часть. Т.е. картинка масти. Ни цифры слева, ни т.п. нет
0
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
19.08.2010, 10:16 #8
half-node, а что вообще должна твоя программа делать, я так и не понял.
0
half-node
21 / 18 / 1
Регистрация: 12.08.2010
Сообщений: 206
19.08.2010, 10:17  [ТС] #9
Создает колоду карт, в количестве 52 штуки.
Каждой присваивается масть.
Выводим на экран.
Потом эта колода перемешивается...и выводится на экран.

такая вот бесполезная
0
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
19.08.2010, 10:19 #10
half-node, щас сделаем
0
fasked
Эксперт С++
4951 / 2531 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
19.08.2010, 10:43 #11
Цитата Сообщение от half-node Посмотреть сообщение
Я ошибаюсь, или можно это как-то объяснить человеческим языком?
иначе говоря, это операция деления по модулю. или просто взятие модуля (не путать с тем, что в школе называли модулем числа, то есть операцией abs (абсолютной величины). как только это не называется
0
half-node
21 / 18 / 1
Регистрация: 12.08.2010
Сообщений: 206
19.08.2010, 10:47  [ТС] #12
Цитата Сообщение от fasked Посмотреть сообщение
иначе говоря, это операция деления по модулю. или просто взятие модуля. как только это не называется
Если взять число 0.076 по модулю, оно разве не будет равно нулю? )
0
fasked
Эксперт С++
4951 / 2531 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
19.08.2010, 10:50 #13
Цитата Сообщение от half-node Посмотреть сообщение
Если взять число 0.076 по модулю, оно разве не будет равно нулю? )
модульная арифметика применима только к целым числам
0
half-node
21 / 18 / 1
Регистрация: 12.08.2010
Сообщений: 206
19.08.2010, 10:51  [ТС] #14
Цитата Сообщение от fasked Посмотреть сообщение
модульная арифметика применима только к целым числам
Вы меня окончательно запутали )))

Добавлено через 36 секунд
Хотя, с остатком я кажется понял. Просто чуть позже попрактикуюсь, дабы понять
0
fasked
Эксперт С++
4951 / 2531 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
19.08.2010, 10:54 #15
Цитата Сообщение от half-node Посмотреть сообщение
Вы меня окончательно запутали
В первом столбике остаток от деления, во втором деление (для целых чисел)
Код
0 % 5 = 0 || 0 / 5 = 0
1 % 5 = 1 || 1 / 5 = 0
2 % 5 = 2 || 2 / 5 = 0 
3 % 5 = 3 || 3 / 5 = 0
4 % 5 = 4 || 4 / 5 = 0
5 % 5 = 0 || 5 / 5 = 1
6 % 5 = 1 || 6 / 5 = 1
7 % 5 = 2 || 7 / 5 = 1
и так далее. тенденция ясна?
0
19.08.2010, 10:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.08.2010, 10:54
Привет! Вот еще темы с ответами:

Колода карт из 36 карт, сколькими способами можно достать 5 карт? - Комбинаторика
Колода карт из 36 карт. Сколькими способами можно достать 5 карт так, чтобы среди них были пиковые карты?

Из колоды карт (36 карт) наудачу берут пять карт - Теория вероятностей
Здравствуйте! С теорией вероятностей всегда имел проблему, не могу никак сообразить. Задание такое: Из колоды карт (36 карт) наудачу...

Сколькими способами из колоды в 36 карт можно выбрать неупорядоченный набор из 5 карт - Комбинаторика
Помогите пожалуйста разобраться с задачей. Сколькими способами из колоды в 36 карт можно выбрать неупорядоченный набор из 5 карт, так,...

Сколькими способами из колоды 36 карт можно выбрать неупорядоченный набор из 5 карт - Комбинаторика
сколькими способами из колоды 36 карт можно выбрать неупорядоченный набор из 5 карт чтобы в этом наборе было бы точно: 2 дамы, король пик,...


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

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

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