Ayuda con un problema;

Iniciado por Onigiri, 5 Octubre 2012, 14:51 PM

0 Miembros y 1 Visitante están viendo este tema.

Onigiri

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 (cpp) [Seleccionar]
#include <conio.h>
#include <iostream.h>
main()
{int mx,mn,cd,cmn,pmn,tmx,amx;
cd=cmn=tmx=amx=0;
cout<<"\nIngresar temperatura maxima = ";
cin>>mx;
cout<<"\nIngresar temperatura minima = ";
cin>>mn;
while((mx!=0&&mn!=0))

  {cd=cd+1;  /*Contador de dias*/
   if(mn<0) {cmn=cmn+1;
             pmn=(cmn*100)/cd;
             } /*En caso de que la temp. min. sea menor a 0; cuento
             y hago ya un porcentaje preliminar.*/
   if(mx>tmx){tmx=mx;} /*Pregunto si la temp. ahora ingresada supera
                       a tmx y sino guardo*/

  }
  cout<<"\nEl porcentaje de inferiores representa el = "<<pmn;
  cout<<"\nLa temperatura max. ingresada fue = "<<tmx;
  getch();
  }


Para las medias haria ésto
Código (cpp) [Seleccionar]

amx=amx+mx;
   amn=amn+mn;
   mmx=amx/cd;
   mmn=amn/cd;


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

xiruko

puedes hacer una estructura que contenga la temperatura maxima y minima de cada dia:

struct datos {
     float tmax;
     float tmin;
};


y en el main declaras un array de esta estructura:

#define MAX 30;

int main() {

     struct datos dias[MAX];
     //...


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!

Onigiri

Muchas gracias por tu ayuda!
;)

leosansan

Cita de: 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.
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":
#include <iostream>
#include <stdio.h>
#define MAX 100
using namespace std;
int main()
{
   int dias=1,i,n=1;
   float max_max=-273,max_min=400,max_media=0,min_max=-273,
       min_min=400,min_media=0,max[MAX],min[MAX],suma_max=0,
       suma_min=0,max_menor_cero=0,min_menor_cero=0;
   cout << "\n\n\t\tIngresar en temperatura maxima 1122 para SALIR"<< endl;
   for (i=0;i<MAX;i++)
       {
           cout << "\nIngresar temperatura maxima = ";
           cin >> max[i];
           cout<<"\nIngresar temperatura minima = ";
           cin >> min[i];
           if (min[i]==0 && max[i]==0) break;
           if (max[i]<0) max_menor_cero++;
           if (max[i]>max_max) max_max=max[i];
           if (max[i]<max_min) max_min=max[i];
           suma_max+=max[i];
           if (min[i]<0) min_menor_cero++;
           if (min[i]<min_min) min_min=min[i];
           if (min[i]>min_max) min_max=min[i];
           suma_min+=min[i];
       }
   cout<<"\nEl numero de dias medidos es = "<<i<< endl;
   cout<<"\nLa temperatura max_max ingresada fue = "<<max_max<< endl;
   cout<<"\nLa temperatura max_min ingresada fue = "<<max_min<< endl;
   cout<<"\nLa temperatura min_min ingresada fue = "<<min_min<< endl;
   cout<<"\nLa temperatura min_max ingresada fue = "<<min_max<< endl;
   cout<<"\nLa temperatura media_max  es = "<<suma_max/(i)<< endl;
   cout<<"\nLa temperatura media_min  es = "<<suma_min/(i)<< endl;
   cout<<"\nPorcentaje de dias (= "<<  max_menor_cero <<") de max inferior a cero es =" <<max_menor_cero*100/(i)<< endl;
   cout<<"\nPorcentaje de dias (= "<<  min_menor_cero <<") de min inferior a cero es =" <<min_menor_cero*100/(i)<< endl;
   cout<<"\n\nPresione cualquier tecla para salir"<< endl;
   getchar ();getchar ();
   return 0;
 }

Espero te sea útil. Saludos!