elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  maximo y minimo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: maximo y minimo  (Leído 10,816 veces)
m@o_614


Desconectado Desconectado

Mensajes: 389


Ver Perfil
maximo y minimo
« en: 2 Marzo 2013, 20:15 pm »

saludos tengo un programa que me tiene que calcular el promedio, el mayor y el menor, etc. de un vector de temperaturas, el problema es que no me calcula bien la menor temperatura y no sé por qué si las variables están bien inicializadas

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define SEMANA 7
  4.  
  5. int main()
  6. {
  7.    int i,dia_mayor,dia_menor;
  8.    float temperatura[SEMANA],v[SEMANA],suma=0,promedio,mayor,menor;
  9.    mayor = temperatura[0];
  10.    menor = temperatura[0];
  11.    for(i=0;i<SEMANA;i++)
  12.    {
  13.        printf("Dame la temperatura del dia \n");
  14.        scanf("%f",&temperatura[i]);
  15.        suma+=temperatura[i];
  16.        if(temperatura[i]>mayor)
  17.        {
  18.            mayor = temperatura[i];
  19.            dia_mayor = i;
  20.        }
  21.        else if(temperatura[i]<menor)
  22.        {
  23.            menor = temperatura[i];
  24.            dia_menor = i;
  25.        }
  26.    }
  27.    promedio = suma/SEMANA;
  28.    printf("a) La temperatura promedio es %.2f\n",promedio);
  29.    printf("c) La mayor temperatura es %.2f y ocurrio el dia %d\n",mayor,dia_mayor);
  30.    printf("d) La menor temperatura es %.2f y ocurrio el dia %d\n",menor,dia_menor);
  31.    printf("b) Un vector de las diferencias de cada temperatura con respecto al promedio\n");
  32.    for(i=0;i<SEMANA;i++)
  33.    {
  34.        v[i] = temperatura[i]-promedio;
  35.        printf("v[%d] = %.2f\n",i,v[i]);
  36.    }
  37.  
  38.    return 0;
  39. }
  40.  

gracias ;D


En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: maximo y minimo
« Respuesta #1 en: 2 Marzo 2013, 20:31 pm »

El valor de temperatura[0] puede ser cualquiera, ya que en ese momento no has leído las temperaturas. Entonces digamos que menor toma el valor 1 y en el vector de temperaturas el menor valor que introduce el usuario es 20, ningún valor será menor que 1, por lo tanto vas a tener resultados no deseados.


En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: maximo y minimo
« Respuesta #2 en: 2 Marzo 2013, 22:13 pm »

......................................
.y no sé por qué si las variables están bien inicializadas

Código
  1.   ...................................
  2. mayor = temperatura[0];
  3. menor = temperatura[0];
  4.   ............................
  5.  


Como te indica naderST, las variables mayor y menor están inicializadas con valores "basura" o impredecibles ya que no se han asignado hasta ese momento.

Por ejemplo, sería más correcto:


Código
  1.   ...................................
  2. mayor =-200;
  3. menor =200;
  4.   ............................
  5.  

Saluditos!. ....
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: maximo y minimo
« Respuesta #3 en: 3 Marzo 2013, 17:24 pm »

Siguiendo la linea de leosansan se puede asignar a la variable "menor" el valor máximo posible para el tipo float y a la variable "mayor" el mínimo. Mas o menos así:
Código
  1. #include <float.h> /* FLT_MAX y FLT_MIN */
  2.  
  3. /* ... */
  4.  
  5. float menor = FLT_MAX;
  6. float mayor = FLT_MIN;

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: maximo y minimo
« Respuesta #4 en: 3 Marzo 2013, 18:22 pm »

Siguiendo la linea de leosansan se puede asignar a la variable "menor" el valor máximo posible para el tipo float y a la variable "mayor" el mínimo. Mas o menos así:
Código
  1. #include <float.h> /* FLT_MAX y FLT_MIN */
  2.  
  3. /* ... */
  4.  
  5. float menor = FLT_MAX;
  6. float mayor = FLT_MIN;

Un saludo

Creo que aquí tendríamos un problema ya que mayor tomaría el valor de 0, pero podría pasar que todas las temperaturas sean negativas y no te daría la mayor. En este caso yo prefiero leer la primera temperatura y asignar ese valor a mayor y menor y luego leer las demás temperaturas e ir comprobando.
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: maximo y minimo
« Respuesta #5 en: 3 Marzo 2013, 19:29 pm »


Creo que aquí tendríamos un problema ya que mayor tomaría el valor de 0, pero podría pasar que todas las temperaturas sean negativas y no te daría la mayor....................


Para empezar no veo necesario el uso de librerías porque sí, ya que en este caso se están tomando temperaturas del medio ambiente, creo que los valores que propuse son más que suficientes.

Y naderST observa que al definir como mayor=-200, la primera temperatura que tome pasará a ser mayor y a la vez menor y ya luego se irán comparando con éstas, que en el fondo es lo que tú propones.

Saluditos!. ...
En línea

m@o_614


Desconectado Desconectado

Mensajes: 389


Ver Perfil
Re: maximo y minimo
« Respuesta #6 en: 3 Marzo 2013, 21:10 pm »

muchas gracias a todos por sus respuestas

creí que estaba inicializando las variables correctamente porque en otro programa muy parecido que también tenía que calcularme el mayor y el menor elemento lo hice así y esta vez si me funcionó, y no se porqué en uno si y en el otro no

Código
  1. int main()
  2. {
  3.    int i,hora_a,hora_b;
  4.    float temperatura[DIA],media=0,m,mayor=0,menor=temperatura[0];
  5.  
  6.    for(i=0;i<DIA;i++)
  7.    {
  8.        printf("Dame la temperatura de la hora %d\n",i);
  9.        scanf("%f",&temperatura[i]);
  10.        media += temperatura[i];
  11.        if(temperatura[i]>mayor)
  12.        {
  13.             mayor = temperatura[i];
  14.             hora_a = i;
  15.        }
  16.        else if(temperatura[i]<menor)
  17.        {
  18.            menor = temperatura[i];
  19.            hora_b = i;
  20.        }
  21.  
  22.    }
  23.    m = media/DIA;
  24.    printf("La Temperatura media fue %.2f,la mas alta %.2f a las %d hrs y la mas baja %.2f.",m,mayor,hora_a,menor);
  25.    return 0;
  26. }

este es el código que es parecido y que si calcula los valores correctamente, sin importar que menor este inicializado con un valor basura

En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: maximo y minimo
« Respuesta #7 en: 3 Marzo 2013, 21:24 pm »

Con esos valores que inicializas puede ocurrirte que si estas tomando las temperaturas estos dias en diversos lugares de Huesca te salga la mayor como cero, cuando en realidad podría ser menos cinco "la mayor", fíjate que hace mucho frío. Y si estas tomando para calcular la menor en diversos puntos de Canarias estos dias te saldría cero, cuando en realidad sería de quince.

De ahí que por seguridad inicializo don -200 y 200, que es pasarse ya que con -50 y 50 va bien.

Léelo bien y corrige ese fallo.

Saluditos!. ....
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: maximo y minimo
« Respuesta #8 en: 4 Marzo 2013, 03:26 am »

Creo que aquí tendríamos un problema ya que mayor tomaría el valor de 0, pero podría pasar que todas las temperaturas sean negativas y no te daría la mayor.
Tienes razón. Pensaba en utilizar esas macros de forma similar a INT_MIN e INT_MAX (pero no, en este caso no sirve, Ouch!).

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
XXTOxic_LUISxX

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: maximo y minimo
« Respuesta #9 en: 26 Abril 2021, 22:22 pm »

Lograste resolver ese problema bro??
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python] - Mínimo y máximo
Scripting
Meta 2 20,848 Último mensaje 1 Diciembre 2010, 12:50 pm
por Novlucker
BUSCAR EL VALOR MAXIMO Y MINIMO DEL ARBOL BINARIO
Programación C/C++
falconez 5 16,985 Último mensaje 28 Julio 2014, 19:02 pm
por falconez
Tabla Java valor minimo y maximo
Java
tcubanito 1 2,513 Último mensaje 7 Agosto 2014, 13:39 pm
por NikNitro!
Maximo y minimo de un vector (Funciones)
Programación C/C++
TheShocker 2 6,638 Último mensaje 27 Diciembre 2014, 20:48 pm
por TheShocker
MOVIDO: maximo y minimo en batch
Programación General
Eleкtro 0 1,773 Último mensaje 27 Septiembre 2015, 09:07 am
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines