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

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

¬осстановить пароль –егистраци€
 
guitarman
0 / 0 / 0
–егистраци€: 13.07.2013
—ообщений: 10
14.07.2013, 18:50     ќшибка. ѕрограмма с ƒейтелов, котора€ тасует и раздает карты #1
ѕрограмма 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++ ѕрограмма про карты
C++ «адачка из первой главы ƒейтелов.
Ћифт ƒейтелов C++
ѕрограмма котора€ измен€ет динамический массив строк - Ќаписал, но есть ошибка C++
C++ ѕрограмма котора€ выводит им€ (ошибка в программе)
ѕосле регистрации реклама в сообщени€х будет скрыта и будут доступны все возможности форума.
Valentina
66 / 66 / 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
66 / 66 / 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
2425 / 1597 / 232
–егистраци€: 24.11.2012
—ообщений: 3,919
14.07.2013, 19:44     ќшибка. ѕрограмма с ƒейтелов, котора€ тасует и раздает карты #6
guitarman, конкретнее. „то значит "странно работает"?
Schizorb
 јватар дл€ Schizorb
508 / 460 / 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
66 / 66 / 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++ Ќаписать программу, котора€ предлагает пользователю ввести пор€дковый номер карты из колоды и выводит в консоль масть и достоинство карты
C++ Ќаписать программу, котора€ предлагает пользователю ввести пор€дковый номер карты из колоды и выводит в консоль масть и достоинство карты.  олода,

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

»ли воспользуйтесь поиском по форуму:
Valentina
66 / 66 / 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     ќшибка. ѕрограмма с ƒейтелов, котора€ тасует и раздает карты
ќтвет —оздать тему
ќпции темы

“екущее врем€: 18:43. „асовой по€с GMT +3.
 ибер‘орум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
–ейтинг@Mail.ru