Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Onigiri en 5 Octubre 2012, 14:51 pm



Título: Ayuda con un problema;
Publicado por: Onigiri en 5 Octubre 2012, 14:51 pm
Veran tengo que ingresar par de temperaturas diarias máx. y min.
El proceso terminara cuando ambas son cero.
Ahora; lo que quiere que se informe es la cantidad de días cuyas temperaturas se han leido, la media maxima y la media minima.
se hallar esto; seria un acumulado/contador pero como las temperaturas que ingreso seran consecutivas cambiaria constantemente mi media en ambos casos. y como guardaria el registro de días?.

Ésto es lo que hice hasta el momento
Código
  1. #include <conio.h>
  2. #include <iostream.h>
  3. main()
  4. {int mx,mn,cd,cmn,pmn,tmx,amx;
  5. cd=cmn=tmx=amx=0;
  6. cout<<"\nIngresar temperatura maxima = ";
  7. cin>>mx;
  8. cout<<"\nIngresar temperatura minima = ";
  9. cin>>mn;
  10. while((mx!=0&&mn!=0))
  11.  
  12.  {cd=cd+1;  /*Contador de dias*/
  13.   if(mn<0) {cmn=cmn+1;
  14.             pmn=(cmn*100)/cd;
  15.             } /*En caso de que la temp. min. sea menor a 0; cuento
  16.              y hago ya un porcentaje preliminar.*/
  17.   if(mx>tmx){tmx=mx;} /*Pregunto si la temp. ahora ingresada supera
  18.                        a tmx y sino guardo*/
  19.  
  20.  }
  21.  cout<<"\nEl porcentaje de inferiores representa el = "<<pmn;
  22.  cout<<"\nLa temperatura max. ingresada fue = "<<tmx;
  23.  getch();
  24.  }
  25.  

Para las medias haria ésto
Código
  1. amx=amx+mx;
  2.   amn=amn+mn;
  3.   mmx=amx/cd;
  4.   mmn=amn/cd;

Pero como guardo un registro de esos dias
Agradeceria mucho cualquier ayuda D;


Título: Re: Ayuda con un problema;
Publicado por: xiruko en 5 Octubre 2012, 15:28 pm
puedes hacer una estructura que contenga la temperatura maxima y minima de cada dia:

Código
  1. struct datos {
  2.     float tmax;
  3.     float tmin;
  4. };

y en el main declaras un array de esta estructura:

Código
  1. #define MAX 30;
  2.  
  3. int main() {
  4.  
  5.     struct datos dias[MAX];
  6.     //...

y asi tendrias los registros de todos los dias para luego procesar la informacion de la manera que quieras. he puesto que MAX sea 30 por poner algo, asi ahi pon el valor que necesites. o sino, puedes hacerlo con memoria dinamica y que cada dia que pase el array de la estructura se vaya haciendo mas grande cuando lo necesites.

no se... ya comentaras si necesitas algo asi. un saludo!


Título: Re: Ayuda con un problema;
Publicado por: Onigiri en 5 Octubre 2012, 16:14 pm
Muchas gracias por tu ayuda!
;)


Título: Re: Ayuda con un problema;
Publicado por: leosansan en 5 Octubre 2012, 23:04 pm
Veran tengo que ingresar par de temperaturas diarias máx. y min.
El proceso terminara cuando ambas son cero.
Creo que podrías tratarlo con arrays. Como no introduces el número de días previamente, habrá que sobredimensionar el array, cosa que hago en el "define" a 100. Puedes cambiar ese valor a tu caso. Te propongo un código algo diferente, ya que calculo tanto temperaturas máxima y mínimas de las máxima y mínima. Mejor lo ves en "acción":
Código
  1. #include <iostream>
  2. #include <stdio.h>
  3. #define MAX 100
  4. using namespace std;
  5. int main()
  6. {
  7.    int dias=1,i,n=1;
  8.    float max_max=-273,max_min=400,max_media=0,min_max=-273,
  9.        min_min=400,min_media=0,max[MAX],min[MAX],suma_max=0,
  10.        suma_min=0,max_menor_cero=0,min_menor_cero=0;
  11.    cout << "\n\n\t\tIngresar en temperatura maxima 1122 para SALIR"<< endl;
  12.    for (i=0;i<MAX;i++)
  13.        {
  14.            cout << "\nIngresar temperatura maxima = ";
  15.            cin >> max[i];
  16.            cout<<"\nIngresar temperatura minima = ";
  17.            cin >> min[i];
  18.            if (min[i]==0 && max[i]==0) break;
  19.            if (max[i]<0) max_menor_cero++;
  20.            if (max[i]>max_max) max_max=max[i];
  21.            if (max[i]<max_min) max_min=max[i];
  22.            suma_max+=max[i];
  23.            if (min[i]<0) min_menor_cero++;
  24.            if (min[i]<min_min) min_min=min[i];
  25.            if (min[i]>min_max) min_max=min[i];
  26.            suma_min+=min[i];
  27.        }
  28.    cout<<"\nEl numero de dias medidos es = "<<i<< endl;
  29.    cout<<"\nLa temperatura max_max ingresada fue = "<<max_max<< endl;
  30.    cout<<"\nLa temperatura max_min ingresada fue = "<<max_min<< endl;
  31.    cout<<"\nLa temperatura min_min ingresada fue = "<<min_min<< endl;
  32.    cout<<"\nLa temperatura min_max ingresada fue = "<<min_max<< endl;
  33.    cout<<"\nLa temperatura media_max  es = "<<suma_max/(i)<< endl;
  34.    cout<<"\nLa temperatura media_min  es = "<<suma_min/(i)<< endl;
  35.    cout<<"\nPorcentaje de dias (= "<<  max_menor_cero <<") de max inferior a cero es =" <<max_menor_cero*100/(i)<< endl;
  36.    cout<<"\nPorcentaje de dias (= "<<  min_menor_cero <<") de min inferior a cero es =" <<min_menor_cero*100/(i)<< endl;
  37.    cout<<"\n\nPresione cualquier tecla para salir"<< endl;
  38.    getchar ();getchar ();
  39.    return 0;
  40.  }
Espero te sea útil. Saludos!