No consigo modificar variable global

Iniciado por Gamerpc, 23 Mayo 2018, 10:48 AM

0 Miembros y 1 Visitante están viendo este tema.

Gamerpc

Hola a todos,

Hace poco que he empezado a programar en C y me ha surgido un problema, a ver si alguien me puede ayudar.

He declarado esto en c:

unsigned char nd8;

como variable global, y quiero modificar su valor mediante una función, esta:

void multiples_partidas unsigned char *var_promedio);

en el que var_promedio es la variable global.

en esta función tengo:

quo= 50;

y para modificar la variable global uso

*var_promedio =quo;

pero su valor no se modificar.

Pd: en el compilador no me da ningún error.

Un saludo y gracias de antemano

engel lex

si la variable es
unsigned char nd8;

entonces lo unico que la modificará es algo tal que cambie su valor... es decir nd8 = algo (ya sea por referencia, puntero, etc) pero donde nd8 sea relacionada, en lo poco que muestras parece que no usas nd8 de nuevo
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Gamerpc

#2
El codigo completo es este:
Código (cpp) [Seleccionar]
char CASELLA_BUIDA = '.';

/* variables globales */
unsigned char nd8, nd9, nd10;  

char tablero_barcos[100];        
char tablero_disparos[100];    

void principal()
{
   multiples_partidas(tablero_barcos, tablero_disparos,  8, &nd8 );
   multiples_partidas(tablero_barcos, tablero_disparos,  9, &nd9 );
   multiples_partidas(tablero_barcos, tablero_disparos, 10, &nd10);
   printf("n8: %i\n", &nd8);
   printf("n9: %i\n", &nd9);
   printf("n10: %i\n", &nd10);
}
void multiples_partidas(char tablero_barcos[], char tablero_disparos[],
                       unsigned int dim, unsigned char *var_promedio)
{
   unsigned int quo, mod;
   int num_partidas=0;
   int disparos_totales=0;
   int error=0;
   while(num_partidas<150){
       B_inicializa_barcos(tablero_barcos, dim);
       inicializa_matriz(tablero_disparos, dim, dim, CASELLA_BUIDA, dim);
       disparos_totales=disparos_totales + partida_completa(tablero_disparos, dim);
       num_partidas=num_partidas+1;
   }
   printf("disparos totales: %i\n", disparos_totales);
   error=div_mod(disparos_totales, num_partidas, &quo, &mod);
   printf("quo: %i\n", quo);
   printf("num partidas: %i\n", num_partidas);
   printf("error: %i\n", error);
   *var_promedio =quo;
}


Lo único que hace el main es llamar a principal();


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex



No sabia que los códigos deben ir en etiquetas GeSHi sorry

tampoco doble post... usa el botón modificar

engel lex

tu problema no está en la algoritmia... está en el uso de los printf... se usan sin & si no,en lugar de imprimir el valor imprimes su dirección
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Gamerpc

Cita de: engel lex en 23 Mayo 2018, 19:01 PM
tu problema no está en la algoritmia... está en el uso de los printf... se usan sin & si no,en lugar de imprimir el valor imprimes su dirección

Menudo error... que empanamiento.

Muchas gracias por la ayuda