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

Колода карт - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Делегат на C++03 http://www.cyberforum.ru/cpp-beginners/thread753604.html
Сойдет за простейшую реализацию делегата? Файл Delegate.h: #include <vector> class Delegate { std::vector<void(*)()> farr; public: Delegate (); ~Delegate ();
C++ Найти седловую точку целочисленной матрицы Найти седловую точку целочисленной матрицы с числом строк не более 12, числом столбцов не более 20. Найти произведение ненулевых элементов столбца, в котором окажется седловая точка. Формат числа +-ц. http://www.cyberforum.ru/cpp-beginners/thread753603.html
Метод Карацубы умножения длинных чисел C++
Реализован клас длинных чисел, с перегруженными операциями сложения, вычитания, умножения столбиком и реализован метод умножения Карацубы. Оба умножения дают правильный ответ,но метод Карацубы работает в десятки раз дольше даже на числах которые состоят из больше чем 100 цифр, хотя он должен работать быстрее. В чем ошибка? Вот код: #include<iostream> #include<string> #include<vector>...
Удаление строки в массиве C++
Не получается удалить строку в массиве int xy; //массив для хранения координат вершин на экране ... int q=0; // строка новой матрицы int s=0; // столбец новой матрицы int xynew; // сюда переписываем новый массив без удаленной вершины for(int i=0, q=0; i<kv; i++) { if (veryd==!i) // veryd номер строки которую надо удалить
C++ Аргумент типа int не совместим с параметрами типа int* http://www.cyberforum.ru/cpp-beginners/thread753587.html
помогите, ошибка в программе "аргумент типа int не совместим с параметрами типа int*" #include <stdio.h> #include <conio.h> #include <stdlib.h> #define k 5 int sum(int *a, int n) { if (n==1) return a; else return a+sum(a,n-1);
C++ Написать программу, которая находит в массиве значения, повторяющиеся два и более раз, и показывает их на экран Подскажите, пожалуйста, как вывести повторяющиеся два или более раз числа в массиве. подробнее

Показать сообщение отдельно
eoLithic
0 / 0 / 0
Регистрация: 05.01.2013
Сообщений: 32
05.01.2013, 21:22     Колода карт
Здравствуйте. Имеется код программы, которая тасует колоду карт и вытягивает необходимое количество карт из колоды. Пример взят из книги Оверленда "С++ без страха".
Вопросы в комментариях.

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
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cmath>
using namespace std;
 
void draw_a_card();
int select_next_available ( int n );
 
char *suits[4] = { "hearts", "diamonds", "spades", "clubs" };
char *ranks[13] = { "Ace", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King" };
int card_drawn[52];
int cards_remaining = 52;
 
int main()
{
    int n, i;
    
    srand( time( 0 ) ); // А вот эту запись можно писать где угодно в программе
                             //  чтобы активизировать действительно "случайный" генератор чисел?
                             // Или же в определенном месте?
    while( 1 )
    {
           cout<<"Enter number of cards you want to draw ( 0 to exit ): ";
           cin>>n;
           if ( n == 0 ) break;
           for ( i = 0; i < n; i++ )
               draw_a_card();
               }
   system("pause");
}
 
void draw_a_card()
{
     int r, s, card, n;
     
     n = rand() % cards_remaining--;
     card = select_next_available( n );
     r = card % 13;  // Не понял логику автора, зачем так извращаться, если можно просто написать
     s = card / 13;   //                   rand() % 13;     и    rand() % 4;
     
     cout<<ranks[r]<<" of "<<suits[s]<<endl;
     }
 
int select_next_available( int n )
{
    int i = 0;
    
    while( card_drawn[i] ) // Вот тут мой мозг сломался: что за чудо-условие цикла? Продолжать пока не card_drawn[i]?
           i++;                  // Фиг с ним, если бы было в массиве что-то было, можно было принять это как булево
                                  // значение, но ведь массив card_drawn вообще не инициализирован!
    while( n-- > 0 )
    {
           i++;
           while( card_drawn[i] )
                  i++;
                  }
    card_drawn[i] = true;  // Разве можно присвоить типу int булево значение?
    return i;
}
Заранее спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru