Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Xgirl12 en 2 Noviembre 2012, 04:58 am



Título: Programa en C no termina bien el ciclo
Publicado por: Xgirl12 en 2 Noviembre 2012, 04:58 am
Hola, que tal. De nuevo ando pidiendo su ayuda para hacer funcionar bien este programa que tiene que hacer lo siguiente:

Se requiere un programa que calcule el promedio de temperaturas que registra una ciudad, las temperaturas se introducirán en grados Farenheit°F y no se conoce de antemano el número de temperaturas que el usuario introducirá.

Yo aqui doy un valor centinela de -460 para que cuando el usuario introduzca un número menor, automáticamente empiece el ciclo con la operación y me de el promedio, pero no lo hace. Aunque ponga -120, me sigue pidiendo que introduzca la temperatura.
Les dejo el código que estoy usando y espero me puedan ayudar.

Es un programa sencillo, supongo, pero apenas me ando enseñando, ya llevo tiempo, espero comprendan.

/*
Descripción: Calcula el promedio de las temperaturas que el usuario ingresa.
*/
#include<stdio.h>
#include<stdlib.h>
#define centinela -460

/* Función Principal*/

main ()
{ /*Declaración de acumuladores y contadores*/
float tempF,promF, sumaF=0;
int c=0;

/* Lectura de la primera temperatura */
printf ("Programa que calcula el promedio de temperaturas en grados Fahrenheit\n\n\n");
printf ("\n Ingrese la primer temperatura registrada:");
scanf ("%f",&tempF);

/* Codificación del ciclo */
while (tempF>= centinela )
{

/* Se registra la temperatura que se leyó */
c = c + 1;

/* Se acumula la temperatura en la suma */
sumaF=sumaF+tempF;

/* Se lee la siguiente temperatura */
printf ("\n\nIngrese la siguiente temperatura (si desea terminar ingrese un número menor a %d): ", centinela);
scanf ("%f",&tempF);
}

/* Promedio de Temperaturas Fahrenheit */
promF=sumaF/c;
printf ("\nPromedio de temperaturas Celsius=%.2f\n", promF);
system("pause");


return 0;
}


De antemano gracias.


Título: Re: Programa en C no termina bien el ciclo
Publicado por: Caster en 2 Noviembre 2012, 09:19 am
El problema es que -120 es mayor que -460, un numero menor que -460 seria -461 por ejemplo, y de ahi aumentando en 1 negativamente, creo que es ese tu fallo si entendi bien tu pregunta.

Saludos


Título: Re: Programa en C no termina bien el ciclo
Publicado por: BatchianoISpyxolo en 2 Noviembre 2012, 13:45 pm
Disculpa, pero creo que no es bueno escoger a un número como centinela. Tu programa ya está restringido a no poder utilizar ese valor de temperatura.

Entonces habría que hacer un array de strings y conversiones, etc, etc. A tu elección.

Por lo otro, Caster tiene razón. A menos que el usuario introduzca un número en el rango [-oo, -460), el ciclo continuará.


Título: Re: Programa en C no termina bien el ciclo
Publicado por: Xgirl12 en 4 Noviembre 2012, 04:28 am
Muchas gracias por sus comentarios.

Y si Caster, tienes toda la razón, je, yo no se que estaba pensando cuando estaba introduciendo los números, gracias por la observación.

Y BatchianoISpyxolo, estoy poniéndolo así porque todavía no se manejar los array y esas cosas, apenas estoy aprendiendo, pero de nuevo les agradezco a ambos por haber contestado.

Salu2.
 ;D