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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda búsqueda en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda búsqueda en C  (Leído 2,709 veces)
JJShadiw

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Duda búsqueda en C
« en: 18 Noviembre 2010, 11:51 am »

Hola a todos. Estoy realizando un programa en C el cual pide la temperatura a lo largo de 24 horas (almacenadas en una tabla unidimensional con 24 valores), para luego realizar:

a) La media
b) Mostrar la temperatura máxima y la hora a la que se produjo

A la hora de realizar la media y mostrar la máxima lo hago bien, pero tengo problemas para que me muestre la hora a la que se produjo. Para mostrar la temperatura máxima ordeno los valores de la tabla de manera creciente, pero si hago esto, el valor más grande (el último) no corresponde con la hora del día en que fue, ya que ha sido cambiado de posición.

Este es el cógido que llevo hasta ahora:

Código
  1. #include <stdio.h>
  2. #define N 25
  3.  
  4. void main(){
  5.    float temp[N],suma,aux;
  6.    int i,j,k,menor;
  7.    printf("Introduzca las temperaturas por cada hora (de 0 a 24 h):\n");
  8.    for(i=0;i<N;i++)
  9.    scanf("%f",&temp[i]);
  10.    suma=0;
  11.    for(i=0;i<N;i++)
  12.    suma=suma+temp[i];
  13.    printf("La temperatura media a lo largo del dia es de %f C",suma/25);
  14.    for(i=0;i<N;i++){
  15.        for(j=i+1,menor=i;j<N;j++){
  16.            if(temp[j]<temp[menor])
  17.            menor=j;
  18.            }
  19.        aux=temp[i];
  20.        temp[i]=temp[menor];
  21.        temp[menor]=aux;
  22.        }

Así consigo que se me ordeno, pero como digo, no sé de qué manera almacenar el valor de i (que coincide con las horas) donde se encuentra la mayor temperatura en otra variable para que me la muestre luego.

Muchas gracias!


En línea

satu


Desconectado Desconectado

Mensajes: 301

Siempre aprendiendo


Ver Perfil WWW
Re: Duda búsqueda en C
« Respuesta #1 en: 18 Noviembre 2010, 15:14 pm »

Hola

La solución sería buscar el máximo valor del vector en lugar de ordenarlo, es decir, en lugar de
Código
  1. for(i=0;i<N;i++){
  2.        for(j=i+1,menor=i;j<N;j++){
  3.            if(temp[j]<temp[menor])
  4.            menor=j;
  5.            }
  6.        aux=temp[i];
  7.        temp[i]=temp[menor];
  8.        temp[menor]=aux;
  9.        }
  10.  

deberías hacer:
Código
  1. aux=temp[0];
  2. k=0;
  3. for(i=0; i<N; i++)
  4.    if(temp[i]>aux)
  5.        k=i;
  6. printf("La hora con mayor temperatura del dia es: %d", k);
  7.  

Espero haberte ayudado.

Saludos


En línea

Breakbeat como forma de vida
Garfield07


Desconectado Desconectado

Mensajes: 1.121


¡Este año voy a por todas! JMJ 2011


Ver Perfil WWW
Re: Duda búsqueda en C
« Respuesta #2 en: 18 Noviembre 2010, 21:01 pm »

Personalmente y sin ganas de ofender creo que tu programa no esta muy bien estructurado que se diga...

Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5. float temp[25], suma = 0, aux;
  6. int i;
  7.  
  8. printf("Introduzca las temperaturas por cada hora (de 0 a 24 h): ");
  9. for(i=0;i<25;i++)
  10. scanf("%f",&temp[i]);
  11.  
  12. for(i=0;i<25;i++)
  13. suma=suma+temp[i];
  14.  
  15. printf("La temperatura media a lo largo del dia es de %f.\n",suma/25);
  16.  
  17. printf ("La temperatura mas alta es ");
  18. aux = temp [0];
  19. for (i = 1; i<25; i++)
  20. if (temp [i] > aux) aux = temp [i];
  21. printf ("%f.\n", aux);
  22. return 0;
  23. }
  24.  
En línea



* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo
satu


Desconectado Desconectado

Mensajes: 301

Siempre aprendiendo


Ver Perfil WWW
Re: Duda búsqueda en C
« Respuesta #3 en: 18 Noviembre 2010, 22:52 pm »

Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5. float temp[25], suma = 0, aux;
  6. int i, k;
  7.  
  8. printf("Introduzca las temperaturas por cada hora (de 0 a 24 h): ");
  9. for(i=0;i<25;i++)
  10. scanf("%f",&temp[i]);
  11.  
  12. for(i=0;i<25;i++)
  13. suma=suma+temp[i];
  14.  
  15. printf("La temperatura media a lo largo del dia es de %f.\n",suma/25);
  16.  
  17. aux = temp [0];
  18. for (i = 1; i<25; i++)
  19. if (temp [i] > aux)
  20.                        {
  21.                        aux = temp [i];
  22.                        k=i;
  23.                        }
  24.        printf ("La temperatura mas alta es %f. grados y se produjo a las %d horas\n", aux, k);
  25. return 0;
  26. }
  27.  
En línea

Breakbeat como forma de vida
Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Duda búsqueda en C
« Respuesta #4 en: 18 Noviembre 2010, 23:17 pm »

Una pregunta que me lleva rondando desde que he visto el código. ¿Por qué declarar un vector de 25 posiciones? Me parece ver un error de planteamiento aquí:

Hay 24 horas en un día, de 0 a 24. Lo cual nos deja con 24 "espacios" entre las horas en punto: 0 a 1, 1 a 2... 23 a 24/0, de la forma que está planteado para que haya una transición de 24 a 0, otra hora más.
En línea

JJShadiw

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Duda búsqueda en C
« Respuesta #5 en: 18 Noviembre 2010, 23:44 pm »

Muchas gracias a todos, por fin he conseguido que me indique la hora a la que se produce el máximo valor =)

Sagrini, gracias por el "refinamiento" del código. Llevo programando en C desde hace sólo 1 mes y medio (una asignatura de mi carrera, Biotecnología) y aún me cuesta ponerlo "bonito" del todo, aunque todo se andará

Akai, uso un vector de 25 posiciones ya que debo poner también la temperatura a las 24 horas de ese día (a la primera hora del día siguiente) y empezando desde la posición 0, necesitos 25 sitios para llegar a las 24 horas (es decir, pongo la temperatura a cada hora justa, no a lo largo de cada hora)
« Última modificación: 18 Noviembre 2010, 23:47 pm por JJShadiw » En línea

Garfield07


Desconectado Desconectado

Mensajes: 1.121


¡Este año voy a por todas! JMJ 2011


Ver Perfil WWW
Re: Duda búsqueda en C
« Respuesta #6 en: 19 Noviembre 2010, 23:58 pm »

Tu code estaba hecho, yo solo cambie algunas cosas para aligerar code xD.
Tampoco te creas que hemos tocado mucho jaja...
En línea



* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo
do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Duda búsqueda en C
« Respuesta #7 en: 20 Noviembre 2010, 06:51 am »

Akai, uso un vector de 25 posiciones ya que debo poner también la temperatura a las 24 horas de ese día (a la primera hora del día siguiente) y empezando desde la posición 0, necesitos 25 sitios para llegar a las 24 horas (es decir, pongo la temperatura a cada hora justa, no a lo largo de cada hora)

Perdon, pero eso es mentira, si un dia tiene 24 horas, no te hacen falta 25 posiciones ya que 24 = 00:00

Si buscas temperaturas mas alla de un dia:

a- te han planteado mal el problema
b- eres tu quien lo ha entendido mal

De todas todas, como bien ha dicho akai, un dia solo tiene 24 horas. Desde las 00:00 (tambien entendida como 24:00) hasta las 23. El resto de las horas que puedas pensar que tiene un dia no son nada mas que  un malentendido (por parte de quien? ahi ya no entro).

¡Saludos!
« Última modificación: 20 Noviembre 2010, 19:47 pm por do-while » En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda algoritmo búsqueda primero en anchura y búsqueda primero el mejor
Programación General
painkillerpucela 1 3,383 Último mensaje 20 Noviembre 2012, 13:37 pm
por Oblivi0n
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines