Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Gamerpc en 23 Mayo 2018, 10:48 am



Título: No consigo modificar variable global
Publicado por: Gamerpc en 23 Mayo 2018, 10:48 am
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


Título: Re: No consigo modificar variable global
Publicado por: engel lex en 23 Mayo 2018, 16:46 pm
si la variable es
Código:
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


Título: Re: No consigo modificar variable global
Publicado por: Gamerpc en 23 Mayo 2018, 18:49 pm
El codigo completo es este:
Código
  1. char CASELLA_BUIDA = '.';
  2.  
  3. /* variables globales */
  4. unsigned char nd8, nd9, nd10;  
  5.  
  6. char tablero_barcos[100];        
  7. char tablero_disparos[100];    
  8.  
  9. void principal()
  10. {
  11.    multiples_partidas(tablero_barcos, tablero_disparos,  8, &nd8 );
  12.    multiples_partidas(tablero_barcos, tablero_disparos,  9, &nd9 );
  13.    multiples_partidas(tablero_barcos, tablero_disparos, 10, &nd10);
  14.    printf("n8: %i\n", &nd8);
  15.    printf("n9: %i\n", &nd9);
  16.    printf("n10: %i\n", &nd10);
  17. }
  18. void multiples_partidas(char tablero_barcos[], char tablero_disparos[],
  19.                        unsigned int dim, unsigned char *var_promedio)
  20. {
  21.    unsigned int quo, mod;
  22.    int num_partidas=0;
  23.    int disparos_totales=0;
  24.    int error=0;
  25.    while(num_partidas<150){
  26.        B_inicializa_barcos(tablero_barcos, dim);
  27.        inicializa_matriz(tablero_disparos, dim, dim, CASELLA_BUIDA, dim);
  28.        disparos_totales=disparos_totales + partida_completa(tablero_disparos, dim);
  29.        num_partidas=num_partidas+1;
  30.    }
  31.    printf("disparos totales: %i\n", disparos_totales);
  32.    error=div_mod(disparos_totales, num_partidas, &quo, &mod);
  33.    printf("quo: %i\n", quo);
  34.    printf("num partidas: %i\n", num_partidas);
  35.    printf("error: %i\n", error);
  36.    *var_promedio =quo;
  37. }

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


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro (http://foro.elhacker.net/reglas.htm)
-Engel Lex



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

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


Título: Re: No consigo modificar variable global
Publicado por: 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


Título: Re: No consigo modificar variable global
Publicado por: Gamerpc en 23 Mayo 2018, 19:07 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