Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
15 / 3 / 0
Регистрация: 18.01.2023
Сообщений: 282

Дурацкая ошибка

24.01.2023, 20:38. Показов 2166. Ответов 30
Метки нет (Все метки)

Я что-то туплю не могу решить проблему
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#include <iostream>
#include <array>
#include <algorithm>
#include <vector>
#include <cstdlib>
#include <string>
 
 
enum Dignities
{
    TWO,
    THREE,
    FOUR,
    FIVE,
    SIX,
    SEVEN,
    EIGHT,
    NINE,
    TEN,
    JACK,
    LADY,
    KING,
    ACE,
    LENGTHOFDIGNITIES,
};
    
 
 enum  Suits
{
        CLUBS,
        DIAMONDS,
        HEARTS,
        PEAKS,
        LENGTHOFSUITS,
};
 
 
struct Card
{
    Suits suitOfCard;
    Dignities digniriesOfCard;
};
 
void printCard(const Card& ref)
{
    switch (ref.digniriesOfCard)
    {
    case TWO:
        std::cout << "2" << '\n';
        break;
    case THREE:
        std::cout << "3" << '\n';
        break;
    case FOUR:
        std::cout << "4" << '\n';
        break;
    case FIVE:
        std::cout << "5" << '\n';
        break;
    case SIX:
        std::cout << "6" << '\n';
        break;
    case SEVEN:
        std::cout << "7" << '\n';
        break;
    case EIGHT:
        std::cout << "8" << '\n';
        break;
    case NINE:
        std::cout << "9" << "\n";
        break;
    case TEN:
        std::cout << "10" << '\n';
        break;
    case JACK:
        std::cout << "J" << '\n';
        break;
    case LADY:
        std::cout << "L" << '\n';
        break;
    case KING:
        std::cout << 'K' << '\n';
        break;
    case ACE:
        std::cout << "A" << '\n';
        break;
    default:
        std::cout << "Unknow..."; 
        break;
    }
    switch (ref.suitOfCard)
    {
    case CLUBS:
        std::cout << "C" << '\n';
        break;
    case HEARTS:
        std::cout << "H" << '\n';
        break;
    case DIAMONDS:
        std::cout << "D" << '\n';
        break;
    case PEAKS:
        std::cout << "P" << '\n';
        break;
    default:
        std::cout << "Unknow" << '\n';
        break;
    }
}
 
void arr()
{
 std::array<int, 52> deck{};
 for (int i = 0; i < LENGTHOFSUITS; i++)
 {
     for (int j = 0; j < LENGTHOFDIGNITIES; j++)
     {
         deck[j] = j;
         deck[i] = i;
         std::cout << deck[static_cast<Suits>(i), static_cast<Dignities>(j)];
     }
 }
}
 
 
int main()
{
    Card ref;
    printCard(ref);
    arr();
    return 0;
}
По идее программа должна была вывести названия всех карт , но проблема как я понимаю началась в arr() где не получается вывести массив и переконвертировать его в перечисление.
Также я решил добавить второй цикл чтобы вывести все в сумме, однако там также какая-то проблема
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.01.2023, 20:38
Ответы с готовыми решениями:

дурацкая проблема
Привет, у меня такая проблемка: В одном из фреймов у меня несколько изображений. Нажимаю на какое-либо изображение и в трёх других...

ACER Aspire 5755 G-2674 G дурацкая бяка с кулером и охлаждением
итак все было отлично ничего не ковырял ,седня включил ноут и понеслось первое кулер при включении поле нескольких секунд начинает сильно...

При сохранении файла в автокаде, вместо нормального, стандартного окна "сохранить как" появляется дурацкая линия рядом с курсором
КАК СДЕЛАТЬ, ЧТОБЫ ПРИ СОХРАНЕНИИ ФАЙЛА АВТОКАДА ПОЯВЛЯЛОСЬ НОРМАЛЬНОЕ ОКНО &quot;сохранить как&quot; ???

30
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
26.01.2023, 20:23
Человек Челов, не знаю как это касается Verevkin.
Но есть правила и меры приличия.
Правила форума CyberForum.ru
4. Порядок создания тем
9. Используйте тэги форматирования текста и редактор формул для удобства восприятия ваших сообщений другими пользователями.
Вы сами отталкиваете форумчан от помощи вам.

Добавлено через 1 минуту
Цитата Сообщение от Человек Челов Посмотреть сообщение
я на форме пару дней, учусь только пока
Поздравляю.
Как оформить код при помощи тэгов в сообщении на форуме

Добавлено через 1 минуту
Цитата Сообщение от Человек Челов Посмотреть сообщение
я на форме пару дней, учусь только пока
Цвет текста вы научились менять, а код в теги вкладывать нет ?
Плохие у вас приоритеты... Но удачи.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13206 / 6841 / 1822
Регистрация: 18.10.2014
Сообщений: 17,302
26.01.2023, 20:31
Цитата Сообщение от Человек Челов Посмотреть сообщение
я на форме пару дней, учусь только пока
Какая разница, сколько дней на форуме? Как можно прийти на форум по программированию и не выяснить самым первым делом, как тут принято оформлять код? Как в голове может первым возникнуть какой-то другой вопрос, кроме этого?

Цитата Сообщение от Человек Челов Посмотреть сообщение
при выполнении действий программа выдает одни и те же значения карт.
Что это значит?

Цитата Сообщение от Человек Челов Посмотреть сообщение
bool maxscore = 21;
???

Цитата Сообщение от Человек Челов Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
void shuffleDeck(std::array<Card, 52>deck)
{
  rand();
  for (int jj = 0; jj <= 52; jj++)
  {
    int max = 52;
    int rand = getRandomNumber(jj, max);
    Swap(jj, rand);
  }
}
Распространенные ошибки

Зачем в начале этой функции делается холостой вызов rand()?
0
15 / 3 / 0
Регистрация: 18.01.2023
Сообщений: 282
26.01.2023, 20:34  [ТС]
TheCalligrapher, в задачнике так написано было

Добавлено через 34 секунды
т.е напишите ранд в начале функции чтобы дисперсия увеличилась
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13206 / 6841 / 1822
Регистрация: 18.10.2014
Сообщений: 17,302
26.01.2023, 20:35
Цитата Сообщение от Человек Челов Посмотреть сообщение
в задачнике так написано было
Что именно "в задачнике так написано было"?

Цитата Сообщение от Человек Челов Посмотреть сообщение
т.е напишите ранд в начале функции чтобы дисперсия увеличилась
Чушь какая-то... Но это мелочи.
0
15 / 3 / 0
Регистрация: 18.01.2023
Сообщений: 282
26.01.2023, 20:41  [ТС]
SmallEvil, потому что он меня сталкерит за что-то задеть пытается, а цвета я только что научился расставлять

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
void shuffleDeck(std::array<Card, 52>deck)
{
  rand();
  for (int jj = 0; jj <= 52; jj++)
  {
    int max = 52;
    int rand = getRandomNumber(jj, max);
    Swap(jj, rand);
  }
}
Добавлено через 28 секунд
все спасибо, теперь понял

Добавлено через 1 минуту
TheCalligrapher, программа создает рандомное значение выпавшей карты, однако при повторном запуске используется только это число

Добавлено через 56 секунд
извините за нескромный вопрос,но можно ли отредактировать код?
хочу правильно отформатировать код

Добавлено через 59 секунд
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
#include <iostream>
#include <iostream>
#include <array>
#include <algorithm>
#include <vector>
#include <cstdlib>
#include <string>
 
 
enum Ranks
{
TWO,
THREE,
FOUR,
FIVE,
SIX,
SEVEN,
EIGHT,
NINE,
TEN,
JACK,
QUEEN,
KING,
ACE,
LENGTHOFRANKS,
};
 
 
enum Suits
{
CLUBS,
DIAMONDS,
HEARTS,
SPADES,
LENGTHOFSUITS,
};
 
 
struct Card
{
Suits suitOfCard;
Ranks rankOfCard;
};
 
int getRandomNumber(int min, int max)
{
static const double fraction = 1.0 / (static_cast<double>(RAND_MAX) + 1.0);
return static_cast<int>(rand() * fraction * (max - min + 1) + min);
}
void printCard(const Card& ref)
{
switch (ref.rankOfCard)
{
case TWO:
std::cout <<"2" <<'\n';
break;
case THREE:
std::cout << "3" <<'\n';
break;
case FOUR:
std::cout << "4" <<'\n';
break;
case FIVE:
std::cout << "5" <<'\n';
break;
case SIX:
std::cout << "6" << '\n';
break;
case SEVEN:
std::cout << "7" << '\n';
break;
case EIGHT:
std::cout << "8" <<'\n';
break;
case NINE:
std::cout << "9" << "\n";
break;
case TEN:
std::cout << "10" << '\n';
break;
case JACK:
std::cout << "J" << '\n';
break;
case QUEEN:
std::cout << "L" <<'\n';
break;
case KING:
std::cout << 'K' << '\n';
break;
case ACE:
std::cout <<"A" << '\n';
break;
default:
std::cout << "Unknow...";
break;
}
switch (ref.suitOfCard)
{
case CLUBS:
std::cout << "C" << '\n';
break;
case HEARTS:
std::cout << "H" <<'\n';
break;
case DIAMONDS:
std::cout << "D" << '\n';
break;
case SPADES:
std::cout << "S" <<'\n';
break;
default:
std::cout <<"Unknow" << '\n';
break;
}
}
 
int getCardValue(const Card& ref2)
{
 
switch (ref2.rankOfCard)
{
case TWO:
return 2;
case THREE:
return 3;
case FOUR:
return 5;
case FIVE:
return 5;
case SIX:
return 6;
case SEVEN:
return 7;
case EIGHT:
return 8;
case NINE:
return 9;
case TEN:
return 10;
case JACK:
return 10;
case QUEEN:
return 10;
case KING:
return 10;
case ACE:
return 11;
default:
std::cout << "Unknow...";
break;
}
}
void printDeck(const std::array<Card, 52>& deck)
{
for (const auto& iii : deck)
{
printCard(iii);
std::cout << " ";
}
}
 
int Swap(int& firstCard, int& anAnotherCard)
{
int k = firstCard;
firstCard = anAnotherCard;
k = firstCard;
return k;
}
 
void shuffleDeck(std::array<Card, 52>deck)
{
rand();
for (int jj = 0; jj <= 52; jj++)
{
int max = 52;
int rand = getRandomNumber(jj, max);
Swap(jj, rand);
}
}
 
int userChoice()
{
int choice;
std::cout << "Do you want stand or hit?" << '\n';
std::cout << "If you want to hit, press 1, else press 0" << '\n';
std::cin >> choice;
return choice;
}
 
int PCchoice(int PCscore, Card* cardPtr)
{
std::cout << "Diler's motion " << '\n';
while (PCscore <= 17)
{
PCscore = getCardValue(*cardPtr++);
++PCscore;
}
userChoice();
return 0;
}
 
bool playBlackJeck(std::array<Card, 52> deck)
{
bool maxscore = 21;
shuffleDeck(deck);
Card* cardPtr = &deck[0];
int PCscore = getCardValue(*cardPtr++);
int gamerScore = getCardValue(*cardPtr++);
do {
int choice = userChoice();
if (choice == 1)
{
gamerScore = getCardValue(*cardPtr++);
std::cout << "Your score " << gamerScore;
}
else
{
std::cout << "Your score " << gamerScore<<
'\n';
}
std::cout << '\n';
std::cout << "Diler's motion " << '\n';
while (PCscore <= 17)
{
PCscore += getCardValue(*cardPtr++);
}
std::cout << "Diler's score " << PCscore << '\n';
} while (gamerScore <= maxscore && PCscore <= maxscore);
if (PCscore >= maxscore)
return true;
else
return false;
}
 
int main()
{
srand(time(0));
std::array<Card, 52> deck{};
int card = 0;
for (int i = 0; i < LENGTHOFSUITS; i++)
{
for (int j = 0; j < LENGTHOFRANKS; j++)
{
deck.at(card).suitOfCard = static_cast<Suits>(i);
deck.at(card).rankOfCard = static_cast<Ranks>(j);
++card;
}
}
if (playBlackJeck(deck) == true)
std::cout << "You win";
else
std::cout << "Diler win";
return 0;
}[FRIGHT]
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
26.01.2023, 20:44
Цитата Сообщение от Verevkin Посмотреть сообщение
Так и не научился код публиковать.
__________________
ты сам вообще кто?
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
26.01.2023, 21:06
Что делает функция shuffleDeck() ?
Ответ : ничего

Что делает функция Swap() ?
Ответ : не знаю, но она не обменивает значения получаемых аргументов.

Тут легче наверное заново написать.
Вы тестировали каждую отдельную функцию ?
Или просто написали все в кучу, а потом такие , , как то не так работает ?
0
15 / 3 / 0
Регистрация: 18.01.2023
Сообщений: 282
26.01.2023, 21:13  [ТС]
SmallEvil, не тестировал, но никаких предупреждений и ошибок не было, а также как я заметил ошибки в перетасовке карт не было.

Добавлено через 50 секунд
так укажите в чем проблема

Добавлено через 3 минуты
если честно, я заметил что комьюнити программистов довольно токсичное, я никого не оскорблял , и просто выложил свою проблему с желанием разобраться, да с ошибками, да с проблемами, но вместо пмощи я получаю только комментарии о том что я ничего не умею и мне вообще лучше не писать код
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
26.01.2023, 21:18
Лучший ответ Сообщение было отмечено Человек Челов как решение

Решение

Цитата Сообщение от Человек Челов Посмотреть сообщение
void shuffleDeck(std::array<Card, 52>deck)
{
  rand();
  for (int jj = 0; jj <= 52; jj++)
  {
    int max = 52;
    int rand = getRandomNumber(jj, max);
    Swap(jj, rand);
  }
}
1. В функцию передается копия массива, std::array<Card, 52> deck
так как передача производится по значению.
2.   for (int jj = 0; jj <= 52; jj++)
выход за пределы массива (если бы вы обращались по этим индексам)
потому что для массива из 52 элементов, допустимый диапазон индексов - [0, 51]
у вас же в цикле в диапазоне [0, 52]
3.     Swap(jj, rand);
Писал выше Swap делает не то что вы от него ожидаете.
Вместо обмена значениями, он просто в первый аргумент копирует второй, все.

4. Предположим вы исправили функции обмена Swap
Вы обмениваете лишь индексы (просто лоакльные целочисельные значения) а не элементы массив deck/

Добавлено через 57 секунд
Цитата Сообщение от Человек Челов Посмотреть сообщение
так укажите в чем проблема
TheCalligrapher, вам уже указал на некоторые моменты, я смотрю вы даже не читали/рассматривали их.

Добавлено через 1 минуту
Цитата Сообщение от Человек Челов Посмотреть сообщение
получаю только комментарии о том что я ничего не умею и мне вообще лучше не писать ко
без должного усердия и подготовки, наверное оно так и есть.
То есть, пишите более простые задачи, пока они не начнут получатся.
1
15 / 3 / 0
Регистрация: 18.01.2023
Сообщений: 282
26.01.2023, 23:06  [ТС]
SmallEvil, благодарю, ошибки исправил, а насчет более простых задач в корне не согласен, ибо я все самое простое уже прорешал, а также учитывая уровень моих теоретичских знаний(я в середине курса), как-то "не комильфо" не мочь решить такую, довольно несложную задачу.(извиняюсь за ошибки , очень тороплюсь).

Добавлено через 1 минуту
как решение пока не отмечу,так как проблемы с рандом еще остались,после того как найду ответ (или кто-то поможет) отмечу
0
15 / 3 / 0
Регистрация: 18.01.2023
Сообщений: 282
27.01.2023, 17:18  [ТС]
отметил
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.01.2023, 17:18

IIS- asp ошибка: HTTP 500.100 - Внутренняя ошибка сервера - ошибка ASP Internet Information Services
Привет! Конфигурация win2000pro sp2, стандартный IIS, IE 5. При попытке обратиться к сценарию(asp) получаю ошибку: &lt;пропуск&gt;...

Ошибка при чтении изменений при обмене РИБ: Ошибка при вызове метода контекста (ПрочитатьИзменения): Ошибка записи!
Доброго всем времени суток! подскажи пожалуйста как исправить ошибку: Ошибка при чтении изменений при обмене РИБ: Ошибка при вызове...

Ошибка при добавлении в файл. Ошибка 101: Ошибка записи на диск (Error 101: Disk write error).
Здравствуйте, возникла проблема такого плана. Нужно произвести добавление записи в файл, но после успешного создания и чтения вылазиет...

Ошибка подключения ftp в lan - неправильный логин/пароль, ошибка 530
Сервер w7 x64 с babyftp Golden FTP, ServerFileZilla Server Клиент w10 x64 с TCMD, filezilla client При подключении с использованием...

Ошибка разбора XML/ Ошибка при вызове метода контекста (Прочитать)
1C 8.2 Документооборот КОРП 1.2 Текст ошибки {ОбщийМодуль.АвтозаполнениеШаблоновФайловКлиентСервер.Модуль(616)}: Ошибка при вызове...


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru