SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: juanmautn en Domingo 1 de Abril de 2012, 15:31
-
Hola Gente! Soy nuevo en el Site, y por lo poco que ví esta muy cool!
pero bueno, les planteo mi problema. el algoritmo este, funciona solo al ingresar valores positivos y negativos, de otra manera produce error... :fire:
Les dejo el codigo y el enunciado, por si alguien es tan amable de decirme cual es el problema porque yo no lo encuentro.-
Enunciado: Como resultado de un experimento un laboratorio obtuvo 18 valores de temperatura, todos distintos de cero. Se debe realizar un programa para ingresar dichos valores y luego determinar e informar:
a) La mayor temperatura ingresada y cual fue su número de orden durante el ingreso.
b) Ídem para la menor temperatura.
c) El promedio de las temperaturas negativas. Si no hubiera temperaturas negativas indicarlo con un cartel aclaratorio.
#include <stdio.h>
void main(){
int i, ordmin, ordmax, tneg=0, acum=0;
float tem, min, max, promneg;
for(i=1;i<=18;i++){
printf("Ingrese valor de temp. Nro %d:",i);
scanf("%f", &tem);
if(i==1){
max=tem;ordmax=i;
}
if(i>=2){
if(max>tem){
if(i==2){min=tem; ordmin=i;
}else
if(min>tem){
min=tem;ordmin=i;
if(min<0){
abs(min);
tneg=tneg+min;acum=acum+1;
}
}
}else{
max=tem; ordmax=i;
}
}
} promneg=(tneg/acum);
printf("La temperatura maxima fue: %.2f y se ingreso en %d lugar\n",max, ordmax);
printf("La temperatura minima fue: %.2f y se ingreso en %d lugar\n",min, ordmin);
switch(tneg){
case 0: printf("NO hubo temperaturas negativas!!\n");break;
default: printf("El promedio de las temperaturas negativas es: %.2f\n",promneg);
}
system("PAUSE");
}
Espero respuestas! Gracias!
-
El problema, que no es problema, reside en que la variable tem está definida como float.
Si ingresas por teclado algo diferente a un número, el programa intenta asignar un carácter a una variable float, obteniendo la excepción en tiempo de ejecución.
Puedes evitarlo declarando la variable como string y al capturarla del teclado, convertirla a float en el caso que esta sea un número.
-
Otro "problema" que veo es que no incluyes stdlib.h, que es la libreria que brinda la funcion abs
-
Voy a corregirlo, y cuento que sale! gracias!!