SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: chenopodium en Miércoles 29 de Octubre de 2003, 14:31

Título: Re: ayuda con un programa en c, char e int
Publicado por: chenopodium en Miércoles 29 de Octubre de 2003, 14:31
Tengo el siguiente programa:

 #include <stdio.h>

struct {
  char nombre[15];
  char AR_h[2];
  char AR_min[2];
  char AR_sec[2];
  char DEC_deg[2];
  char DEC_min[2];
  char DEC_sec[2];
} registro;

int main()
{
     FILE *fichero_out;

     float AR;
     float DEC;

     fichero_out=fopen("UCM_coords_deg","a");

  if (fichero_out==NULL)
    {printf("Problemas al abrir el ficheron");
    exit(1);
    }

  do {
    printf ("Nombre UCM:"); fflush(stdout);
    gets (registro.nombre);
    if (strcmp(registro.nombre,""))
      {
   printf ("Horas de AR:"); fflush(stdout);
   gets (registro.AR_h);
   printf ("Minutos de AR:"); fflush(stdout);
   gets (registro.AR_min);
   printf ("Segundos de AR:"); fflush(stdout);
   gets (registro.AR_sec);
   printf ("Grados de DEC:"); fflush(stdout);
   gets (registro.DEC_deg);
   printf ("Minutos de DEC:"); fflush(stdout);
   gets (registro.DEC_min);
   printf ("Segundos de DEC:"); fflush(stdout);
   gets (registro.DEC_sec);
   
/* en las dos siguientes lineas es donde esta el error */

AR=15*(®istro.AR_h+®istro.AR_min/60+®istro.AR_sec/3600);
   DEC=®istro.DEC_deg+®istro.DEC_min/60+®istro.DEC_sec/360;
   fprintf(fichero_out,"%n %f %fn",®istro.nombre, AR, DEC);
      }
  } while (strcmp(registro.nombre,"")!=0);

  fclose(fichero_out);

  if (fclose(fichero_out)!=0)
    printf("Problemas al cerrar el fichero");
}

/* como he definido los valores como chart, supongo que tengo que pasarlos a int para poder operar con ellos, pero no estoy segura de saber hacerlo*/

Alguien me ayuda??

Muchas gracias
Título: Re: ayuda con un programa en c, char e int
Publicado por: mabrev en Miércoles 29 de Octubre de 2003, 19:10
Hola:

Para cambiar de tipo, lo único que tienes que hacer es poner entre paréntesis el tipo al que quieres cambiar antes del nombre de la variable cuyo tipo quieres cambiar. Por ejemplo:

char variable;
int otraVariable;

otraVariable = (int)variable;

Espero que te sea de ayuda.

Saludos.
Título: Re: ayuda con un programa en c, char e int
Publicado por: chenopodium en Miércoles 29 de Octubre de 2003, 19:26
pues me ha ayudado, pero a descubrir que el probla no estaba donde yo pensaba.

Ahora creo que estoy usando mal los punteros, porque en la linea donde me dice al compilar que invalid operands to binary, estoy tratando de operar con valores de punteros.

¿Que estoy haciendo mal?:think:
Título: Re: ayuda con un programa en c, char e int
Publicado por: Super_G en Jueves 30 de Octubre de 2003, 05:21
Primero porque utilisas "&" en los campos de "registro" en donde da ERROR, despues si tienes un numero en una cadena debes convertirla un mumero entero antes de procesarla, por lo que vi estas multiplicando y dividiendo cadenas, antes de eso debes convertirlas a enteros
Título: Re: ayuda con un programa en c, char e int
Publicado por: chenopodium en Jueves 30 de Octubre de 2003, 12:22
y como convierto una cadena a enteros?

y luego otra pregunta, porque como quiero hacer una division,  el resultado no puede ser un entero

Si me ayudais, gracias, si no, deistire
Título: Re: ayuda con un programa en c, char e int
Publicado por: mabrev en Jueves 30 de Octubre de 2003, 14:53
Hola, no hace falta que desistas, para pasar una cadena a entero puedes utilizar la función "atoi" de la libreria "string.h".

entero = atoi(cadena);

Para que el resultado de una división no te de entero, tienes que cambiar el tipo del resultado, poniendo el nuevo tipo delante y entre paréntesis:

Float resul;

resul = (float) numero1/numero2;

Espero que te sea útil.

Saludos
Título: ayuda con un programa en c, char e int
Publicado por: Super_G en Jueves 30 de Octubre de 2003, 16:28
pensaba hacre una funcion, pero eso parece muchisimo mejor abra que provarlo