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

—++ дл€ начинающих

¬ойти
–егистраци€
¬осстановить пароль
 
guitarman
0 / 0 / 0
–егистраци€: 13.07.2013
—ообщений: 10
#1

ќшибка. ѕрограмма с ƒейтелов, котора€ тасует и раздает карты - C++

14.07.2013, 18:50. ѕросмотров 545. ќтветов 11
ћетки нет (¬се метки)

ѕрограмма C++ из книги ƒейтелов, котора€ тасует и раздает игральные карты. —реда разработки - wxDev-C++.
ѕереписана с книги правильно и найти ошибку, к сожалению, не получаетс€.
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 <iomanip>
#include <stdlib.h>
#include <time.h>
 
using namespace std;
 
void shuffle(int [][13]);
void deal(const int [][13], const char *[], const char *[]);
 
main()
{
    setlocale(LC_ALL, "Russian");
    
    char *suit[4] = {"√Ч√•√∞√Ґ√®", "√Б√≥√°√*√ї", "√Т√∞√•√і√ї", "√П√®√™√®"};
    char *face[13] = {"√Т√≥√І", "√Д√Ґ√Ѓ√©√™√*", "√Т√∞√Ѓ√©√™√*", "√Ч√•√≤√Ґ√•√∞√™√*",
                      "√П√њ√≤√•√∞√™√*", "√Ш√•√±√≤√•√∞√™√*", "√С√•√ђ√•√∞√™√*",
                      "√В√Ѓ√±√Љ√ђ√•√∞√™√*", "√Д√•√Ґ√њ√≤√™√*", "√Д√•√±√њ√≤√™√*",
                      "√Б√*√Ђ√•√≤", "√Д√*√ђ√*", "√К√Ѓ√∞√Ѓ√Ђ√Љ"};
    int deck[4][13] = {0};
    
    srand(time(NULL));
    
    shuffle(deck);
    deal(deck, face, suit);
    
    return 0;
}
 
void shuffle(int wDeck[][13])
{
    int row, column;
    
    for (int card = 1; card <= 52; card++) {
        row = rand() % 4;
        column = rand() % 13;
        
        while (wDeck[row][column] != 0) {
            row = rand() % 4;
            column = rand() % 13;
        }
        wDeck[row][column] = card;
    }
}
 
void deal(const int wDeck[ ][13], const char *wFace[ ],
          const char *wSuit[ ])
{
    for (int card = 1; card <= 52; card++)
    
        for (int row = 0; row <= 3; row++)
            
            for (int column = 0; column <= 12; column++)
                if (wDeck[row][column] == card)
                    cout << setw(9) << setiosflags(ios::right)
                         << wFace[column] << " √ђ√*√±√≤√® "
                         << setw(5) << setiosflags(ios::left)
                         << wSuit[row]
                         << (card % 2 == 0 ? '/n' : '/t');
}
Similar
Ёксперт
41792 / 34177 / 6122
–егистраци€: 12.04.2006
—ообщений: 57,940
14.07.2013, 18:50     ќшибка. ѕрограмма с ƒейтелов, котора€ тасует и раздает карты
ѕосмотрите здесь:

ќшибка в программе из книги ƒейтелов - C++
ѕрограмма из книжки ƒейтелов. —реда разработки - wxDev-C++. ¬ыдаЄт ошибку, никак не могу еЄ найти. #include &lt;iostream&gt; #include...

ѕрограмма котора€ выводит им€ (ошибка в программе) - C++
Ќаписал программу: #include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; int main() { int name; cout &lt;&lt;...

ѕрограмма котора€ измен€ет динамический массив строк - Ќаписал, но есть ошибка - C++
¬сем доброго времени суток. ¬ общем сделал программу, котора€ вкратце делает следующее: 1) —оздает динамических массив строк char **m ...

Ћифт ƒейтелов - C++
 то во врем€ изучени€ —++ по книге ƒейтелов моделировал лифт, сколько времени зан€ло, думаю забить и учить дальше...

ѕрограмма про карты - C++
ƒана программа #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using namespace std; enum Suit { clubs, diamonds,...

«адача из книги ƒейтелов - C++
—толкнулс€ с решением следующей программы, в мысли приходит только примитивное и решени€ с огромным количеством строк.  ак можно...

Ќужны упражнени€ из книги ƒейтелов - C++
¬сем привет! ѕытаюсь своими силами изучить с++, пользуюсь книгой ƒейтлов и компил€тором VS Studio 2013 ...скиньте пожалуйста ответы к...

ѕосле регистрации реклама в сообщени€х будет скрыта и будут доступны все возможности форума.
Valentina
68 / 68 / 3
–егистраци€: 13.05.2012
—ообщений: 130
14.07.2013, 18:56     ќшибка. ѕрограмма с ƒейтелов, котора€ тасует и раздает карты #2
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 <iomanip>
#include <stdlib.h>
#include <time.h>
 
using namespace std;
 
void shuffle(int [][13]);
void deal(const int [][13], const char *[13], const char *[4]);
 
int main()
{
    setlocale(LC_ALL, "Russian");
    
    const char *suit[4] = {"„ерви", "Ѕубны", "“рефы", "ѕики"};
    const char *face[13] = {"“уз", "ƒвойка", "“ройка", "„етверка",
                      "ѕ€терка", "Ўестерка", "—емерка",
                      "¬осьмерка", "ƒев€тка", "ƒес€тка",
                      "Ѕалет", "ƒама", " ороль"};
    int deck[4][13] = {0};
    
    srand(time(NULL));
    
    shuffle(deck);
    deal(deck, face, suit);
    system("pause");
    return 0;
}
 
void shuffle(int wDeck[][13])
{
    int row, column;
    
    for (int card = 1; card <= 52; card++) {
        row = rand() % 4;
        column = rand() % 13;
        
        while (wDeck[row][column] != 0) {
            row = rand() % 4;
            column = rand() % 13;
        }
        wDeck[row][column] = card;
    }
}
 
void deal(const int wDeck[ ][13], const char *wFace[13],
          const char *wSuit[4])
{
    for (int card = 1; card <= 52; card++)
    
        for (int row = 0; row <= 3; row++)
            
            for (int column = 0; column <= 12; column++)
                if (wDeck[row][column] == card)
                    cout << setw(9) << setiosflags(ios::right)
                         << wFace[column] << " масти "
                         << setw(5) << setiosflags(ios::left)
                         << wSuit[row]
                         << (card % 2 == 0 ? '/n' : '/t');
}
guitarman
0 / 0 / 0
–егистраци€: 13.07.2013
—ообщений: 10
14.07.2013, 18:59  [“—]     ќшибка. ѕрограмма с ƒейтелов, котора€ тасует и раздает карты #3
Ќа сколько заметил, то вы указали в одномерных массивах количество элементов. Ќо ведь дл€ одномерных массивов это не €вл€етс€ об€зательным. ќбъ€сните в чЄм состоит ошибка.
Valentina
68 / 68 / 3
–егистраци€: 13.05.2012
—ообщений: 130
14.07.2013, 19:06     ќшибка. ѕрограмма с ƒейтелов, котора€ тасует и раздает карты #4
у вас ошибка
cannot convert parameter 2 from 'char *[13]' to 'const char *[]',
должно быть одинаково
guitarman
0 / 0 / 0
–егистраци€: 13.07.2013
—ообщений: 10
14.07.2013, 19:30  [“—]     ќшибка. ѕрограмма с ƒейтелов, котора€ тасует и раздает карты #5
»звините, но € все же не вижу логической ошибки в моЄм коде. ƒа и ваш вариант программы у мен€ странно работает.
0x10
2459 / 1631 / 238
–егистраци€: 24.11.2012
—ообщений: 4,012
14.07.2013, 19:44     ќшибка. ѕрограмма с ƒейтелов, котора€ тасует и раздает карты #6
guitarman, конкретнее. „то значит "странно работает"?
Schizorb
509 / 461 / 16
–егистраци€: 07.04.2012
—ообщений: 865
«аписей в блоге: 1
«авершенные тесты: 1
14.07.2013, 19:44     ќшибка. ѕрограмма с ƒейтелов, котора€ тасует и раздает карты #7
—леши у вас не в ту сторону.

C++
1
card % 2 == 0 ? '\n' : '\t'
guitarman
0 / 0 / 0
–егистраци€: 13.07.2013
—ообщений: 10
14.07.2013, 20:37  [“—]     ќшибка. ѕрограмма с ƒейтелов, котора€ тасует и раздает карты #8
—пасибо за слеши. „то-то € совсем невнимательный
C++
1
2
3
4
5
       const char *suit[4] = {"„ерви", "Ѕубны", "“рефы", "ѕики"};
          const char *face[13] = {"“уз", "ƒвойка", "“ройка", "„етверка",
                      "ѕ€терка", "Ўестерка", "—емерка",
                      "¬осьмерка", "ƒев€тка", "ƒес€тка",
                      "Ѕалет", "ƒама", " ороль"};
ћожно таким образом устранить ошибку(дописав в объ€влении const). Ќо € не могу пон€ть почему не работает вариант программы, который указан в книге. ¬едь там говоритс€, что использовать const при передачи данных в функцию можно и нужно, чтобы не допустить изменени€ вход€щих данных. ƒл€ этого не об€зательно переменные в main должны быть тоже const.
ѕочему возникает ошибка?
Valentina
68 / 68 / 3
–егистраци€: 13.05.2012
—ообщений: 130
14.07.2013, 20:39     ќшибка. ѕрограмма с ƒейтелов, котора€ тасует и раздает карты #9
¬от нормальный вариант программы
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
#include <iostream.h> 
#inclucle <iomahip.h> 
 #include <stdlib.h> 
#include <time.h> 
void shuffle (int [][13]); 
void deal(const int [][13], const char *[], const char *[]); 
main ( ) 
{
char *suit[4] = {"„ерви", "Ѕубны ", "“рефы ", "ѕики" } ; 
char *face[13] = {"“уз", "ƒвойка", "“ройка", "„етверка", 
"ѕ€терка", "Ўестерка", "—емерка", 
"¬осьмерка", "ƒев€тка", "ƒес€тка", 
"¬алет", "ƒама", " ороль"}; 
int deck[4] [13] = {0}; 
srand(time(NULL)); 
shuffle (deck) ; 
deal(deck, face, suit); 
return 0; 
 void shuffle (int wDeck[][13]) 
 { 
int row, column; 
for (int card = 1; card <= 52; card++) { 
row = rand() % 4; 
column = rand () % 13; 
while (wDeck [row] [column] != 0) { 
row = rand () % 4 ; 
column = rand() % 13; 
}
wDeck[row] [column] = card; 
}
}
 
void deal(const int wDeck[ ] [13], const char *wFace[ ], 
const char *wSuit( ]) 
for (int card = 1; card <= 52; card++) 
for (int row = 0; row <= 3; row++) 
for (int column = 0; column <= 12; column++) 
if (wDeckfrow] (column] == card)  
cout << setw(9) << setiosflags(ios::right) 
<< wFace[column] << " масти " 
<< setwE) << setiosflags(ios::left) 
<< wSuit[row] 
<<(card % 2 == 0 ? '\n' : '\t'); 
}
guitarman
0 / 0 / 0
–егистраци€: 13.07.2013
—ообщений: 10
14.07.2013, 21:02  [“—]     ќшибка. ѕрограмма с ƒейтелов, котора€ тасует и раздает карты #10
Valentina, этот вариант программы отличаетс€ от моего только изменЄнными слешами. » такой вариант программы выдаЄт у мен€ ошибку.
increator
0 / 0 / 0
–егистраци€: 13.07.2013
—ообщений: 3
14.07.2013, 21:32     ќшибка. ѕрограмма с ƒейтелов, котора€ тасует и раздает карты #11
ѕомен€й wxDwvCpp на что то нормальное. ¬ помойку wxDevCpp.

” мен€ в VS2003 все нормально компилируетс€.
MoreAnswers
Ёксперт
37091 / 29110 / 5898
–егистраци€: 17.06.2006
—ообщений: 43,301
14.07.2013, 21:34     ќшибка. ѕрограмма с ƒейтелов, котора€ тасует и раздает карты
≈ще ссылки по теме:

«адачка из первой главы ƒейтелов. - C++
ѕрограмма вводит три целых числа с клавиатуры, печатает сумму, среднее значение, произведение, наименьшее и наибольшее из этих чисел. ...

Ќеправильна€ работа программы по учебнику ƒейтелов - C++
¬сем доброго времени суток. »зучаю книгу ƒейтелов &quot; ак программировать на —/—++&quot; , попутно выполн€€ написанные там программы ¬озникла...

—оздание класса (упражнение из книги ƒейтелов) - C++
¬ книге ƒейтелов в разделе &quot;”пражнени€&quot; есть такое задание: &quot;—оздайте класс с именем Account, которым мог бы воспользоватьс€ банк дл€...

«адача из книги ƒейтелов  ак программировать на C++ - C++
«адание: модифицируйте приложение, чтобы оно подтверждало действительность ввода.ѕри любом вводе, даже если введено не 1 и не 2,...

√де вз€ть решени€ задач из книги ƒейтелов - C++
«драствуйте. ќткуда € могу найти решени€ задач по ƒейтел?


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

»ли воспользуйтесь поиском по форуму:
Valentina
68 / 68 / 3
–егистраци€: 13.05.2012
—ообщений: 130
14.07.2013, 21:34     ќшибка. ѕрограмма с ƒейтелов, котора€ тасует и раздает карты #12
вот
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 <iomanip>
#include <stdlib.h>
#include <time.h>
 
using namespace std;
 
void shuffle(int [][13]);
void deal(const int [][13], const char *[ ], const char *[ ]);
 
int main()
{
    setlocale(LC_ALL, "Russian");
    
    const char *suit[4] = {"„ерви", "Ѕубны", "“рефы", "ѕики"};
    const char *face[13] = {"“уз", "ƒвойка", "“ройка", "„етверка",
                      "ѕ€терка", "Ўестерка", "—емерка",
                      "¬осьмерка", "ƒев€тка", "ƒес€тка",
                      "Ѕалет", "ƒама", " ороль"};
    int deck[4][13] = {0};
    
    srand(time(NULL));
    
    shuffle(deck);
    deal(deck, face, suit);
    system("pause");
    return 0;
}
 
void shuffle(int wDeck[][13])
{
    int row, column;
    
    for (int card = 1; card <= 52; card++) {
        row = rand() % 4;
        column = rand() % 13;
        
        while (wDeck[row][column] != 0) {
            row = rand() % 4;
            column = rand() % 13;
        }
        wDeck[row][column] = card;
    }
}
 
void deal(const int wDeck[ ][13], const char *wFace[],
          const char *wSuit[])
{
    for (int card = 1; card <= 52; card++)
    
        for (int row = 0; row <= 3; row++)
            
            for (int column = 0; column <= 12; column++)
                if (wDeck[row][column] == card)
                    cout << setw(9) << setiosflags(ios::right)
                         << wFace[column] << " масти "
                         << setw(5) << setiosflags(ios::left)
                         << wSuit[row]
                         << (card % 2 == 0 ? '\n' : '\t');
}
функцию можна объ€вить
C++
1
void deal(const int [][13], const char *[ ], const char *[ ]);
Yandex
ќбъ€влени€
14.07.2013, 21:34     ќшибка. ѕрограмма с ƒейтелов, котора€ тасует и раздает карты
ќтвет —оздать тему
ќпции темы

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