Programación General > C/C++

 [Problema] Se produce un error al ingresar solo valores Positivos. WTF?

(1/1)

juanmautn:
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.


--- Citar ---#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");
}

--- Fin de la cita ---

Espero respuestas! Gracias!

caperutxa:
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.

su -:
Otro "problema" que veo es que no incluyes stdlib.h, que es la libreria que brinda la funcion abs

juanmautn:
Voy a corregirlo, y cuento que sale! gracias!!

Navegación

[0] Índice de Mensajes

Ir a la versión completa