Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - durasno

#331
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
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 C/C++ / Re: Juego del gato
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 C/C++ / Re: Juego del gato
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:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

#define MAX_FILA 3
#define MAX_COLUM 3
#define MAX_JUG 2
#define MAX_TURNO 9

void turno_jugador();
void imprimir_tablero(char gato[MAX_FILA][MAX_COLUM]);

int main()
{
    printf("Juego del Gato v1.0\n");
    turno_jugador();
    return 0;
}

void imprimir_tablero(char gato[MAX_FILA][MAX_COLUM])
{
    int i,j;
    for(i=0;i<MAX_FILA;i++)
    {
        for(j=0;j<MAX_COLUM;j++)
        {
            if((gato[i][j]=='X')||(gato[i][j]=='O'))
               printf("%c",gato[i][j]);
            else
               printf(" ");
               printf("|");
        }
        printf("\n");
           printf("______");
        printf("\n");
    }
}

void turno_jugador()
{
    int fila,columna,i,turno=1;
    char jugador[]={'X','O'},letra;
    char gato[MAX_FILA][MAX_COLUM];
    do
    {
        for(i=0;i<MAX_JUG;i++)
        {
            printf("Es turno del jugador %c\n",jugador[i]);
            printf("Dime la fila (1 a 3): ");
            scanf("%d",&fila);
            printf("Dime la columna(1 a 3): ");
            scanf("%d",&columna);
            letra=jugador[i];
            gato[fila-1][columna-1]=letra; // guardo la letra del jugador en la matriz
            imprimir_tablero(gato); // paso la matriz a la funcion
            turno++;
        }
    }while(turno<=MAX_TURNO);
}


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
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
Hola! el programa te anda?? porque a mi me funciona bien...

typedef struct tipo_alumno{ //En este caso tipo_alumno es opcional
    tipo1 miembro1;
    tipo2 miembro2;
    ...
    tipoN miembroN;
} 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:
var1 MI_ESTRUCTURA; // MI_ESTRUCTURA es la variable

No es lo mismo hacer lo anterior q hacer:
struct tipo_alumno{ // En este caso tipo_alumno tambien es opcional
    tipo1 miembro1;
    tipo2 miembro2;
    ...
    tipoN miembroN;
} var1, var2,...;

Aca si var1 y var2 son variables declaradas de forma global

Otra forma es no declarando variable globales:
struct tipo_alumno{ // [b]En este caso tipo_alumno  tiene que ir si o si[/b]
    tipo1 miembro1;
    tipo2 miembro2;
    ...
    tipoN miembroN;
};

Para declarar una variable en este caso seria:
main()
{
  struct tipo_alumno MI_ESTRUCTURA; // esta variable es local al main
   ......
}



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 C/C++ / Re: Juego del gato
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
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
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
Y cual es tu duda???

Saludos