SoloCodigo
Programación General => C/C++ => Mensaje iniciado 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
-
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.
-
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:
-
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
-
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
-
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
-
pensaba hacre una funcion, pero eso parece muchisimo mejor abra que provarlo