Autor
|
Tema: maximo y minimo (Leído 11,457 veces)
|
m@o_614
Desconectado
Mensajes: 389
|
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 #include <stdio.h> #include <stdlib.h> #define SEMANA 7 int main() { int i,dia_mayor,dia_menor; float temperatura[SEMANA],v[SEMANA],suma=0,promedio,mayor,menor; mayor = temperatura[0]; menor = temperatura[0]; for(i=0;i<SEMANA;i++) { printf("Dame la temperatura del dia \n"); scanf("%f",&temperatura [i ]); suma+=temperatura[i]; if(temperatura[i]>mayor) { mayor = temperatura[i]; dia_mayor = i; } else if(temperatura[i]<menor) { menor = temperatura[i]; dia_menor = i; } } promedio = suma/SEMANA; printf("a) La temperatura promedio es %.2f\n",promedio ); printf("c) La mayor temperatura es %.2f y ocurrio el dia %d\n",mayor ,dia_mayor ); printf("d) La menor temperatura es %.2f y ocurrio el dia %d\n",menor ,dia_menor ); printf("b) Un vector de las diferencias de cada temperatura con respecto al promedio\n"); for(i=0;i<SEMANA;i++) { v[i] = temperatura[i]-promedio; printf("v[%d] = %.2f\n",i ,v [i ]); } return 0; }
gracias
|
|
|
En línea
|
|
|
|
naderST
|
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
Mensajes: 1.314
|
...................................... .y no sé por qué si las variables están bien inicializadas ................................... mayor = temperatura[0]; menor = temperatura[0]; ............................
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: ................................... mayor =-200; menor =200; ............................
Saluditos!. ....
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
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í: #include <float.h> /* FLT_MAX y FLT_MIN */ /* ... */ float menor = FLT_MAX; 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
|
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í: #include <float.h> /* FLT_MAX y FLT_MIN */ /* ... */ float menor = FLT_MAX; 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
Mensajes: 1.314
|
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
Mensajes: 389
|
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 int main() { int i,hora_a,hora_b; float temperatura[DIA],media=0,m,mayor=0,menor=temperatura[0]; for(i=0;i<DIA;i++) { printf("Dame la temperatura de la hora %d\n",i ); scanf("%f",&temperatura [i ]); media += temperatura[i]; if(temperatura[i]>mayor) { mayor = temperatura[i]; hora_a = i; } else if(temperatura[i]<menor) { menor = temperatura[i]; hora_b = i; } } m = media/DIA; printf("La Temperatura media fue %.2f,la mas alta %.2f a las %d hrs y la mas baja %.2f.",m ,mayor ,hora_a ,menor ); return 0; }
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
|
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
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
Mensajes: 1
|
Lograste resolver ese problema bro??
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Python] - Mínimo y máximo
Scripting
|
Meta
|
2
|
21,086
|
1 Diciembre 2010, 12:50 pm
por Novlucker
|
|
|
BUSCAR EL VALOR MAXIMO Y MINIMO DEL ARBOL BINARIO
Programación C/C++
|
falconez
|
5
|
17,433
|
28 Julio 2014, 19:02 pm
por falconez
|
|
|
Tabla Java valor minimo y maximo
Java
|
tcubanito
|
1
|
2,728
|
7 Agosto 2014, 13:39 pm
por NikNitro!
|
|
|
Maximo y minimo de un vector (Funciones)
Programación C/C++
|
TheShocker
|
2
|
6,922
|
27 Diciembre 2014, 20:48 pm
por TheShocker
|
|
|
MOVIDO: maximo y minimo en batch
Programación General
|
Eleкtro
|
0
|
2,004
|
27 Septiembre 2015, 09:07 am
por Eleкtro
|
|