ZorgeHT
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Дано: 1. Пример из "двух Дейтелов" по указателям на массивы - тасование колоды карт. 2. Компилятор MS VS C++ 2008 На выходе: error C2664: 'deal' : cannot convert parameter 2 from 'char *[13]' to 'const char *[]' Вопрос: что с этим делать и куда копать? Очень сильно подозреваю, что налицо несовместимость стандартов компиляторов - та книга, что у меня написана по ANSI C++ 1990-года. А MS C++ 2008 несколько новее... Код: #include "stdafx.h" #include <windows.h> #include <iostream> #include <iomanip> #include <conio.h> #include <time.h> using namespace std; void shuffle(int [][13]); void deal(const int [][13], const char *[], const char *[]); int _tmain(int argc, _TCHAR* argv[]) { SetConsoleOutputCP(1251); // это для русификации консоли char *suit[4] = {"Червей","Бубен","Треф","Пик"}; char *face[13] = {"Туз","Двойка","Тройка","Четверка","Пятерка","Шестерка","Семерка", "Восьмерка","Девятка","Десятка","Валет","Дама","Король"}; int deck[4][13] = {0}; srand(time(NULL)); shuffle(deck); deal(deck, face, suit); // вот на эту строку указывает ошибка cout << endl << "OK" << endl; _getche(); return 0; } void shuffle(int wDeck[][13]) { int row, col; for (int card = 1; card <= 52; card++) { do { row = rand() % 4; col = rand() % 13; } while ( wDeck[row][col] != 0); wDeck[row][col] = 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 < 4; row++) for (int col = 0; row < 13; col++) if (wDeck[row][col] == card) cout << setw(9) << setiosflags(ios::right) << wFace[col] << ' ' << setw(5) << setiosflags(ios::left) << wSuit[row] << (card % 2 == 0 ? '\n' : '\t'); } |
| Всего записей: 456 | Зарегистр. 18-03-2008 | Отправлено: 19:27 21-05-2010 | Исправлено: ZorgeHT, 19:30 21-05-2010 |
|