Stavo facendo un programma per vedere quanto funzionasse il conteggio delle carte nel blackjack. Per chi non lo sapesse nel conteggio del blackjack si attribuisce un valore ad ogni carta e si fa una somma per arrivare ad un conto. Il funzionamento è semplice, faccio pescare 26 carte del mazzo e poi una carta. Quindi se il conteggio è alto allora mi aspetto una carta con valore negativo e se il conteggio è negativo allora mi aspetto una carta con valore positivo. Il metodo in questione è stato inventato da me e testandolo c'è stato un problema: praticamente il conteggio di -1 e +1 e -2 porta uno strano risultato, allora ho fatto scrivere anche ogni valore di carta e mi sono usciti dei numeri che se sommati non portano il conteggio che porta al computer. Come ultima cosa, ho fatto anche scrivere al computer se la 26esima carta è in linea con il ragionamento di prima, con un si se va bene ed un no se non va bene. Ecco il programma:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>ù
int carta (void);
int uscita = 0;
int mazzo [52] = {2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11};
int conto = 0;
int main (void){
srand(time(NULL));
int lanci;
int prob;
int b = 0;
for(lanci = 0; lanci <= 26; lanci++){
if(lanci != 26){
conto = conto + (carta());
printf("%d\n", carta());
}
else if (lanci == 26){
if(conto > 0 && carta() == -1){
b ++;
}
else if(conto < 0 && carta() == 1){
b ++;
}
}
}
if (b == 1){
printf("si, %d", conto);
}
else{
printf("no, %d", conto);
}
}
int carta(void){
uscita = 2 + rand() % 10;
int a;
for(a = 0; a < 52; a++){
if(mazzo[a] == uscita){
if (mazzo[a] < 10){
mazzo[a] = 0;
return 1;
}
if (mazzo[a] == 10){
mazzo[a] = 0;
return -1;
}
if (mazzo[a] == 11){
mazzo[a] = 0;
return -2;
}
}
else{
continue;
}
}
}