elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


  Mostrar Mensajes
Páginas: 1 ... 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 [34] 35 36 37 38
331  Programación / Programación C/C++ / Re: Problema al usar la función fscanf para leer datos en un vector. en: 15 Abril 2012, 22:12 pm
mmm no. si un numero fue guardado, en el archivo, como float o double no tiene nada que ver. EL tema es con que precision queres recuperar esos datos; como vos definiste a tu arreglo magnetizaciones de tipo double lo correcto es usar %lf, ahora si el arreglo hubiese sido float usarias %f

Saludos
332  Programación / Programación C/C++ / Re: Problema al usar la función fscanf para leer datos en un vector. en: 15 Abril 2012, 20:50 pm
Hola! asi como esta el codigo no veo ningun error. En ves de usar %f proba con %lf ya que es un double sino subi todo el codigo

Saludos
333  Programación / Programación C/C++ / Re: Juego del gato en: 14 Abril 2012, 02:28 am
Claro eso seria optimizar el codigo pero primero lo basico xD. Ademas de lo que dijo s00rk tambien podrias comprobar que el usuario no ingrese un numero menor a 1 y mayor a 3

Saludos
334  Programación / Programación C/C++ / Re: Juego del gato en: 14 Abril 2012, 01:14 am
Hola! nose porque pusiste las dos funciones en una, o tipiaste mal??

Tomando como ejemplo el primero programa que hiciste solo necesitas un par de cambios:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4.  
  5. #define MAX_FILA 3
  6. #define MAX_COLUM 3
  7. #define MAX_JUG 2
  8. #define MAX_TURNO 9
  9.  
  10. void turno_jugador();
  11. void imprimir_tablero(char gato[MAX_FILA][MAX_COLUM]);
  12.  
  13. int main()
  14. {
  15.    printf("Juego del Gato v1.0\n");
  16.    turno_jugador();
  17.    return 0;
  18. }
  19.  
  20. void imprimir_tablero(char gato[MAX_FILA][MAX_COLUM])
  21. {
  22.    int i,j;
  23.    for(i=0;i<MAX_FILA;i++)
  24.    {
  25.        for(j=0;j<MAX_COLUM;j++)
  26.        {
  27.            if((gato[i][j]=='X')||(gato[i][j]=='O'))
  28.               printf("%c",gato[i][j]);
  29.            else
  30.               printf(" ");
  31.               printf("|");
  32.        }
  33.        printf("\n");
  34.           printf("______");
  35.        printf("\n");
  36.    }
  37. }
  38.  
  39. void turno_jugador()
  40. {
  41.    int fila,columna,i,turno=1;
  42.    char jugador[]={'X','O'},letra;
  43.    char gato[MAX_FILA][MAX_COLUM];
  44.    do
  45.    {
  46.        for(i=0;i<MAX_JUG;i++)
  47.        {
  48.            printf("Es turno del jugador %c\n",jugador[i]);
  49.            printf("Dime la fila (1 a 3): ");
  50.            scanf("%d",&fila);
  51.            printf("Dime la columna(1 a 3): ");
  52.            scanf("%d",&columna);
  53.            letra=jugador[i];
  54.            gato[fila-1][columna-1]=letra; // guardo la letra del jugador en la matriz
  55.            imprimir_tablero(gato); // paso la matriz a la funcion
  56.            turno++;
  57.        }
  58.    }while(turno<=MAX_TURNO);
  59. }

Cambie el prototipo de la funcion imprimir_tablero().
Defini una matriz en turno_jugador() donde le guardo la letra correspondiente.
Y cambie la condicion de imprimir las letras

Saludos
335  Programación / Programación C/C++ / Re: Ayuda con estos códigos (Actualizado 13/04/2012) en: 14 Abril 2012, 00:56 am
Practicamente no hay ninguna diferencia, el tipo_jugador antes de la llave es el nombre de la estructura y el tipo_jugador despues de la llave es el nuevo tipo de dato definido por vos, en este caso lleva el mismo nombre

Saludos
336  Programación / Programación C/C++ / Re: Ayuda con estos códigos (Actualizado 13/04/2012) en: 13 Abril 2012, 20:58 pm
Hola! el programa te anda?? porque a mi me funciona bien...

Código
  1. typedef struct tipo_alumno{ //En este caso tipo_alumno es opcional
  2.    tipo1 miembro1;
  3.    tipo2 miembro2;
  4.    ...
  5.    tipoN miembroN;
  6. } var1, var2,...;
Lo que estas haciendo aca es declarar tipos de datos no variables; var1 y var2 no son variables, esto es por el typedef. Para crear una variable vas a tener que declarar, ej:
Código
  1. var1 MI_ESTRUCTURA; // MI_ESTRUCTURA es la variable

No es lo mismo hacer lo anterior q hacer:
Código
  1. struct tipo_alumno{ // En este caso tipo_alumno tambien es opcional
  2.    tipo1 miembro1;
  3.    tipo2 miembro2;
  4.    ...
  5.    tipoN miembroN;
  6. } var1, var2,...;
Aca si var1 y var2 son variables declaradas de forma global

Otra forma es no declarando variable globales:
Código
  1. struct tipo_alumno{ // [b]En este caso tipo_alumno  tiene que ir si o si[/b]
  2.    tipo1 miembro1;
  3.    tipo2 miembro2;
  4.    ...
  5.    tipoN miembroN;
  6. };
Para declarar una variable en este caso seria:
Código
  1. main()
  2. {
  3.  struct tipo_alumno MI_ESTRUCTURA; // esta variable es local al main
  4.   ......
  5. }


Ahora cual es la forma mas conveniente depende de cada uno, en mi caso no trabajo con variables globales y tampoco uso el typedef. Es por eso q prefiero el tercer ejemplo, me parece mas facil de entender

Espero te sirva, Saludos
337  Programación / Programación C/C++ / Re: Juego del gato en: 13 Abril 2012, 02:12 am
Hola!  algunos errores y cosas para mejorar:
1º en la funcion turno_jugador() al inicializar turno=1 dentro del do-while lo que estas haciendo es generar un ciclo infinito, si bien turno se incremento dentro del for, al salir del for, turno se vuelve a inicializar en 1 por ende nunca termina. Deberias hacerlo fuera del do-while.

2º printf("%c",letra,gato[j]);
¿por que en los printf de la funcion imprimir_tablero() le pasas como argumento el arreglo gato? si no lo estas utilizando para nada no es necesario ponerlo

3º  if(j<MAX_COLUM)
               printf("|");
La condicion del if no es necesaria, esa misma condicion esta en el for. Solo basta con poner printf("|"); Al igual q if(i<MAX_FILA)

4º el programa pide filas y columnas del 1 a 3, osea el usuario va ingresar un numero entre 1 y 3, pero los arreglos se inician en 0, en algun momento deberias restarle 1 a esos numeros ingresado por el usuario; sino no se va a imprimir bien

5º Lo mas importante es lo que dijo Ferno, deberias pasar una matriz a la funcion imprimir_tablero() pero antes(o despues ) debes guardar "letra" en la matriz. Ademas debes cambiar esta condicion:
            if((fila==i)&&(columna==j))
               printf("%c",letra,gato[j]);
por una donde puedas imprimir todas la letras en el tablero y no solo una

Cualquier cosa segui preguntando, saludos
338  Programación / Programación C/C++ / Re: Ayuda en C. Unir char a char[] en: 9 Abril 2012, 23:39 pm
Hola! como itoa no es estandar, lo que podrias hacer es buscar la posicion donde se encuentra el caracter '\0' y ahi guardes ese caracter que queres concatenar. No te olvides que despues del caracter guardado tenes que guardar el '\0' al final

Saludos

PD: acordate que el arreglo tiene q ser lo suficientement grande como para guardar un caracter mas(si trabajas con punteros vas a tener q reservar memoria)
339  Programación / Programación C/C++ / Re: ¿Por que se queda Parado? en: 9 Abril 2012, 23:25 pm
Hola! no entiendo como eso te compilo, yo lo probe y no me dejo. Lo errores q tenes estan en los printf,ejemplo:
printf ("Mi Programa>IP:"%f, ip ">Port:"%d, port ">Paht:"%s, paht); // esto no esta permitido, no se puede concatenar de esa manera
La declaracion correcta es:
printf ("Mi Programa>IP: %f >Port:%d >Paht:%s",ip,port, paht);

El resto debe ser:
printf ("Mi Programa>IP:%f", ip);
printf ("Mi Programa>IP:%f >Port:%d",ip, port);

Revisa el uso de printf

Saludos
340  Programación / Programación C/C++ / Re: problema para realizar este programa en: 8 Abril 2012, 21:14 pm
Y cual es tu duda???

Saludos
Páginas: 1 ... 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 [34] 35 36 37 38
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines