C/Visual C - Hay una suma de 2 variables que no me funciona bien, no se donde esta el error

 
Vista:
sin imagen de perfil
Val: 11
Ha aumentado su posición en 8 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Hay una suma de 2 variables que no me funciona bien, no se donde esta el error

Publicado por Juan Pablo (4 intervenciones) el 04/11/2020 15:47:28
Tengo 2 variables, la variable del saldo del usuario: saldoUser(que contiene 100euros) y el saldo de la apuesta que lo decide el usuario: saldoApuesta

El programa trata de simular una ruleta del casino, si el usuario acierta la apuesta nº1(rojo/negro), se le tiene que devolver su apuesta *1, entonces su saldo seria de 100+=(saldoApuesta*1).

Pero no encuentro el error, pk no me hace bien la suma/resta del saldo.
Gracias por todo de antemano!!

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
// BIBLIOTECAS / //
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <string.h>
#define TIP
#define COL
 
//FUNCIONES
int girar(int a[], int b, int c){
    for(c=0; c<=3; c++){
        a[c]=rand()%38;
        }
        b=rand()%38;
        printf("\nLa bola esta girando por la ruleta...pasa por el numero: %d, por el: %d y ahora pasa por el: %d, finalmente el numero ganador es....el...: %d",a[1],a[2],a[3],b);
        return b;
}
 
//PROGRAMA PRINCIPAL
int main(void){
    int accion_menu=0, accion_apuesta=0, accion_color=0, accion_par_impar=0, turno=-5, saldoUser=100, saldoApuesta, hora = time(NULL), num_win=0, i=0;
    int TAPET[3]={{0},{0},{0}};
    int COLOR[38]={ //1=Rojo 2=Negro 3=Verde
                        {3},
                        {1},
                        {2},
                        {1},
                        {2},
                        {1},
                        {2},
                        {1},
                        {2},
                        {1},
                        {2},
                        {2},
                        {1},
                        {2},
                        {1},
                        {2},
                        {1},
                        {2},
                        {1},
                        {1},
                        {2},
                        {1},
                        {2},
                        {1},
                        {2},
                        {1},
                        {2},
                        {1},
                        {2},
                        {2},
                        {1},
                        {2},
                        {1},
                        {2},
                        {1},
                        {2},
                        {1},
                        {3}};
    srand (time(NULL));
    printf("/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /\n");
    printf("/ /  Fecha de inicio del rompecabezas(02/11/2020), Juego de la ruleta   / /\n");
    printf("/ /                        R U L E T A   C A S I N O!                   / /\n");
    printf("/ /*********************************************************************/ /\n");
    printf("/ /**                                                                 **/ /\n");
    printf("/ /**     ********   *      *  **      ****** ******** *******  *     **/ /\n");
	printf("/ /**     **      *  *      *  **      **        **    *     *  *     **/ /\n");
	printf("/ /**     ********   *      *  **      **        **    *     *  *     **/ /\n");
	printf("/ /**     **   *     *      *  **      ****      **    * * * *  *     **/ /\n");
	printf("/ /**     **    *    *      *  **      **        **    *     *  *     **/ /\n");
	printf("/ /**     **     *    ******   ******* ******    **    *     *  +     **/ /\n");
	printf("/ /**                                                                 **/ /\n");
    printf("/ /*********************************************************************/ /\n");
    printf("/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /\n\n");
    //switch
    for(turno==0; turno<=10; turno--){
    //Comprovación saldo y turnos haber si puede seguir jugando.
        if(saldoUser==0){
                printf("\n ________________________________________________________________________\n");
                printf("|                                                                        |\n");
                printf("|           Lo sentimos, su saldo es insuficiente,                       |\n");
                printf("|           no puede seguir jugando en nuestro casino.                   |\n");
                printf("|________________________________________________________________________|\n");
                return 0;
        }
        else if(turno==0){
                printf("\n ________________________________________________________________________\n");
                printf("|                                                                        |\n");
                printf("|           Lo sentimos, ha agotado sus 10 jugadas,                      |\n");
                printf("|           no puede seguir jugando en nuestro casino.                   |\n");
                printf("|________________________________________________________________________|\n");
                return 0;
        }
    //Menú para cerrar el programa, comprovar el historial o hacer una nueva apuesta(eleccion del usuario)
        printf("\n     #Que es lo que deseas hacer?\n");
        printf("          1.Quiero hacer una nueva apuesta.\n");
        printf("          2.Quiero consultar los resultados.\n");
        printf("          3.Salir del programa: RULETA CASINO.\n");
        printf("         La accion seleccionada es el numero: ");
        scanf("%d",&accion_menu);
    //Menú diderentes apuestas que puese hacer el usuario
        switch(accion_menu){
            case 1:
                system("cls");
                printf("\n  Hagan juego!\n");
                printf("\n     #Que apuesta desas hacer?\n");
                printf("          1.Apostar a Rojo/Negro.\n");
                printf("          2.Apostar a Par/Impar\n");
                printf("          3.Apostar a Pasa/Falta.\n");
                printf("          4.Apostar a una Dozena.\n");
                printf("          5.Apostar a una Columna.\n");
                printf("          6.Apostar a dos Dozenas.\n");
                printf("          7.Apostar a dos Columnas.\n");
                printf("          8.Apostar a Seisena.\n");
                printf("          9.Apostar a Quadro.\n");
                printf("          10.Apostar a Transversal.\n");
                printf("          11.Apostar a Cavallo.\n");
                printf("          12.Arriesgarse a un full Pleno.\n");
                printf("         La apuesta seleccionada es el numero: ");
                scanf("%d",&accion_apuesta);
                system("cls");
            //Comprovación si tiene suficiente saldo para la apuesta.
                printf("Cuanto deseas apostar? ");
                scanf("%d",&saldoApuesta);
                while(saldoUser < saldoApuesta){
                    if(saldoUser < saldoApuesta) printf("Lo siento, no tienes suficiente saldo.");
                    printf("Cuanto deseas apostar? ");
                    scanf("%d",&saldoApuesta);
 
                }
            //Acción apuesta en funcion de la opción seleccionada
                if(accion_apuesta==1){
                    printf("Que deseas apostar? Rojo = 1 / Negro = 2\n");
                    printf("Su eleccion es: ");
                    scanf("%d",&accion_color);
                    printf("No va mas!\n");
                }
                else if(accion_apuesta==2){
                    printf("Que deseas apostar? Par = 1 / Impar = 2\n");
                    printf("Su eleccion es: ");
                    scanf("%d",&accion_par_impar);
                }
                else if(accion_apuesta==3){
 
                }
                num_win=girar(TAPET,num_win,i);
                if((accion_color==COLOR[num_win]) && (accion_apuesta==1)){
                    printf("\n ________________________________________________________________________\n");
                    printf("|                                                                        |\n");
                    printf("|        Ha acertado el color y ha ganado la apuesta.                    |\n");
                    printf("|________________________________________________________________________|\n");
                    saldoUser+=(saldoApuesta*1);
                    printf("Su saldo ahora es de %d\n",saldoUser);
                }
                else if((accion_color!=COLOR[num_win]) && (accion_apuesta==1)){
                    printf("\n ________________________________________________________________________\n");
                    printf("|                                                                        |\n",num_win);
                    printf("|        No ha acertado el color y ha perdido la apuesta.                |\n");
                    printf("|________________________________________________________________________|\n");
                    saldoUser-=(saldoApuesta*1);
                    printf("Su saldo ahora es de %d\n",saldoUser);
                }
                if((accion_apuesta==2)){
                    if((num_win%2==0) && (accion_par_impar==1)){
                        printf("\n ________________________________________________________________________\n");
                        printf("|                                                                        |\n");
                        printf("|        Ha acertado el numero es par y ha ganado la apuesta.            |\n");
                        printf("|________________________________________________________________________|\n");
                        saldoUser+=(saldoApuesta*1);
                        printf("Su saldo ahora es de %d\n",saldoUser);
                    }
                    else if((num_win%2!=0) && (accion_par_impar==2)){
                        printf("\n ________________________________________________________________________\n");
                        printf("|                                                                        |\n");
                        printf("|        No ha acertado el numero es impar y ha perdido la apuesta.      |\n");
                        printf("|________________________________________________________________________|\n");
                        saldoUser-=(saldoApuesta*1);
                        printf("Su saldo ahora es de %d\n",saldoUser);
                    }
                }
                break;
            case 2:
                break;
            case 3:
                return 0;
            default:
                printf("\n ________________________________________________________________________\n");
                printf("|                                                                        |\n");
                printf("|           Esta opcion no es valida, ingrese un dato valido.            |\n");
                printf("|________________________________________________________________________|\n");
                break;
        }
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Rodrigo
Val: 350
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Hay una suma de 2 variables que no me funciona bien, no se donde esta el error

Publicado por Rodrigo (119 intervenciones) el 04/11/2020 16:35:09
Sugiero incluir cuales son los valores que aparecen y cuales son los que esperas.

Por otro lado, por que multiplicas por 1?
(saldoApuesta*1)
es lo mismo que
saldoApuesta
sin parentesis.

No entiendo bien la relevancia del uso de la multiplicacion por 1 y los parentesis. Podrias explicar mas por que el uso de este tipo de expresion?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 11
Ha aumentado su posición en 8 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Hay una suma de 2 variables que no me funciona bien, no se donde esta el error

Publicado por Juan Pablo (4 intervenciones) el 04/11/2020 17:15:01
Tengo diferentes apuestas y la recompensa va cambiando:

Apuesta Nº1: Recompensa 1€ x 1€ apostado

Apuesta Nº4: Recompensa 2€ x 1€ apostado

Apuesta Nº7: Recompensa 0.5€ x 1€ apostado

Apuesta Nº8: Recompensa 5€ x 1€ apostado

Apuesta Nº9: Recompensa 8€ x 1€ apostado

Apuesta Nº10: Recompensa 11€ x 1€ apostado

Quería utilizar la misma operación para cada apuesta y que se vea claro.

1
En la imagen se ve como apuesto 100€, mi saldo deberia subir a 200€ pero solo me suma 27€ (que es un numero random generado en la única función que tengo "girar" y deberia guardarse en un array "TAPET" no en saldoApuesta)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 350
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Hay una suma de 2 variables que no me funciona bien, no se donde esta el error

Publicado por Rodrigo (119 intervenciones) el 04/11/2020 22:36:18
Deberias corregir al menos el que en la funcion girar() estas imprimiendo a[1], a[2] y a[3] y los indices validos deberian ser 0, 1 y 2.

Ninguno de los parametros de la funcion girar lo usas fuera de la funcion.
Todos los parametros podrian ser variables locales.

Es raro el nombre saldoApuesta, por que no solo "apuesta" ?

Podrias imprimir el valor del saldo antes tambien para ver cuan bien esta el calculo despues.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 11
Ha aumentado su posición en 8 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Hay una suma de 2 variables que no me funciona bien, no se donde esta el error

Publicado por Juan Pablo (4 intervenciones) el 05/11/2020 08:38:12
3
Los datos son correctos....
4
He arreglado lo del índice del array pero sigue igual, así que he comentado la función le he dado un valor y me hace bien el calculo, en la funcion pasa algo raro...(si no quitare el array con los 3 números randoms y ala)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 350
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Hay una suma de 2 variables que no me funciona bien, no se donde esta el error

Publicado por Rodrigo (119 intervenciones) el 05/11/2020 09:56:15
En la linea 11 de tu programa, el ciclo usa indices de 0 a 3, pues el ciclo hace c <= 3.
Eso esta sobreescribiendo algo en la memoria y esto hace que tu programa tenga comportamiento raro.
Cambia eso tambien.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 11
Ha aumentado su posición en 8 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Hay una suma de 2 variables que no me funciona bien, no se donde esta el error

Publicado por Juan Pablo (4 intervenciones) el 05/11/2020 11:11:54
Ya funciona, muchas gracias! tendre cuidado con los bucles con arrays
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar