float COZIR::HeatIndex(float temperature, float percentHumidity, bool isFahrenheit)
{
  float hi, a1, a2;

  if(!isFahrenheit) temperature = Fahrenheit();

  hi = 0.5 * (temperature + 61.0 + ((temperature - 68.0) * 1.2) + (percentHumidity * 0.094));

  a1 = ((13.0 - percentHumidity) * 0.25) * sqrt((17.0 - abs(temperature - 95.0)) * 0.0588);
  a2 = ((percentHumidity - 85.0) * 0.1) * ((87.0 - temperature) * 0.2);
  if(hi>= 80){
    hi = -42.379+ (2.0490152 * temperature) +
                    (10.14333127 * percentHumidity) -
                    (0.22475541 * temperature * percentHumidity) -
                    (0.00683783 * temperature * temperature) -
                    (0.05481717 * percentHumidity * percentHumidity) +
                    (0.00122874 * temperature * temperature * percentHumidity) +
                    (0.00085282 * temperature * percentHumidity * percentHumidity) -
                    (0.00000199 * temperature * temperature * percentHumidity * percentHumidity);

    //case1
    if((percentHumidity < 13) && (temperature >= 80.0) && (temperature <= 112.0)) hi -= a1;
    else if ((percentHumidity > 85) && (temperature >= 80.0) && (temperature <= 87.0)) hi += a2;

  }

  return isFahrenheit? hi : convertFtoC(hi);
}
//boolean isFahrenheit: True == Fahrenheit; False == Celcius
float DHT::computeHeatIndex(float temperature, float percentHumidity, bool isFahrenheit) {
  // Using both Rothfusz and Steadman's equations
  // http://www.wpc.ncep.noaa.gov/html/heatindex_equation.shtml
  float hi;

  if (!isFahrenheit)
    temperature = convertCtoF(temperature);

  hi = 0.5 * (temperature + 61.0 + ((temperature - 68.0) * 1.2) + (percentHumidity * 0.094));

  if (hi > 79) {
    hi = -42.379 +
             2.04901523 * temperature +
            10.14333127 * percentHumidity +
            -0.22475541 * temperature*percentHumidity +
            -0.00683783 * pow(temperature, 2) +
            -0.05481717 * pow(percentHumidity, 2) +
             0.00122874 * pow(temperature, 2) * percentHumidity +
             0.00085282 * temperature*pow(percentHumidity, 2) +
            -0.00000199 * pow(temperature, 2) * pow(percentHumidity, 2);

    if((percentHumidity < 13) && (temperature >= 80.0) && (temperature <= 112.0))
      hi -= ((13.0 - percentHumidity) * 0.25) * sqrt((17.0 - abs(temperature - 95.0)) * 0.05882);

    else if((percentHumidity > 85.0) && (temperature >= 80.0) && (temperature <= 87.0))
      hi += ((percentHumidity - 85.0) * 0.1) * ((87.0 - temperature) * 0.2);
  }

  return isFahrenheit ? hi : convertFtoC(hi);
}
Beispiel #3
0
float DHT::computeHeatIndex(float temperature, float percentHumidity, bool isFahrenheit)
{
  float heatIndex;

  if (!isFahrenheit)
    temperature = convertCtoF(temperature);

  heatIndex = 0.5 * (temperature + 61.0 + ((temperature - 68.0) * 1.2) + (percentHumidity * 0.094));

  if (heatIndex > 79)
  {
    heatIndex = -42.379 +
             2.04901523 * temperature +
            10.14333127 * percentHumidity +
            -0.22475541 * temperature*percentHumidity +
            -0.00683783 * pow(temperature, 2) +
            -0.05481717 * pow(percentHumidity, 2) +
             0.00122874 * pow(temperature, 2) * percentHumidity +
             0.00085282 * temperature*pow(percentHumidity, 2) +
            -0.00000199 * pow(temperature, 2) * pow(percentHumidity, 2);

    if((percentHumidity < 13) && (temperature >= 80.0) && (temperature <= 112.0))
      heatIndex -= ((13.0 - percentHumidity) * 0.25) * sqrt((17.0 - abs(temperature - 95.0)) * 0.05882);

    else if((percentHumidity > 85.0) && (temperature >= 80.0) && (temperature <= 87.0))
      heatIndex += ((percentHumidity - 85.0) * 0.1) * ((87.0 - temperature) * 0.2);
  }
  
  //boolean isFahrenheit: True == Fahrenheit; False == Celcius
  return isFahrenheit ? heatIndex : convertFtoC(heatIndex);
}
Beispiel #4
0
int main()
{
     int choixMenu, h, m, s; //ENTIERS
     float tempC, tempF, distKM, distMI, volumeL, volumeG; //REELS

     do //DEBUT DE LA BOUCLE REPETER
     {
         AfficherMenu();
         printf("\nVotre choix ? ");
         scanf("%d", &choixMenu);
         printf("\n");

         //STRUCTURE CONDITIONNELLE
         switch (choixMenu)
         {
             case 1: // SI CHOIXMENU EST EGAL A 1 ALORS
                 printf("Saisir heure(s)\n");
                 scanf("%d", &h);
                 printf("Saisir minute(s)\n");
                 scanf("%d", &m);
                 printf("Saisir seconde(s)\n");
                 scanf("%d", &s);

                 printf("%d h, %d min, %d sec = %d secondes", h, m, s, convertHMStoS(h,m,s));
                 break; //ON SORT DU SWITCH

             case 2:
                 printf("Saisir secondes\n");
                 scanf("%d", &s);
                 printf("%d secondes =", s);
                 //ON ENVOIE L'ADRESSE DE H M ET S
                 decoupeSecondes(&h, &m, &s);
                 printf(" %d heures et %d minutes et %d secondes", h, m, s);
                 break;

             case 3:
                printf("saisir la temperature en degre C\n");
                scanf("%f", &tempC);
                printf("%1.2f degre C = %1.2f degre F", tempC, convertCtoF(tempC));
                break;

             case 4:
                printf("saisir la temperature en degre F\n");
                scanf("%f",&tempF);
                printf("%1.2f degre F = %1.2f degre C", tempF, convertFtoC(tempF));
                break;

             case 5:
                printf("saisir une distance en km\n");
                scanf("%f", &distKM);
                printf("%1.2f km = %1.2f miles", distKM, convertKMtoMI(distKM));
                break;

             case 6:
                printf("saisir une distance en milles\n");
                scanf("%f", &distMI);
                printf("%1.2f mi = %1.2f km",distMI, convertMItoKM(distMI));
                break;

             case 7:
                printf("saisir un volume en litres\n");
                scanf("%f", &volumeL);

                printf("%1.2f L = %1.2f G", volumeL, convertLtoG(volumeL));
                break;

             case 8:
                printf("saisir un volume en gallons\n");
                scanf("%f", &volumeG);

                printf("%1.2f G = %1.2f L", volumeG, convertGtoL(volumeG));
                break;

             case 9:
                printf("Au revoir\n");

         }

         if (choixMenu < 1 || choixMenu > 9)
            printf("Erreur de saisie");

     }   while (choixMenu != 9); //JUSQU'AU TEMPS QUE CHOIXMENU EGAL A 9

     return 0;
}
Beispiel #5
0
float DHT::getHeatIndex() {
	return convertFtoC(computeHeatIndex(convertCtoF(readTemperature()), readHumidity()));
}