[c] Probleme afficher valeur correcte tableau

Probleme afficher valeur correcte tableau [c] - C - Programmation

Marsh Posté le 04-01-2014 à 23:00:51    

Bonjour
J'espère être dans la bonne section car ma requête se pose par rapport au langage C.
Je suis débutant, soyez indulgent  :sweat: . Je dois rendre un travail mais je bloque.
Mon programme ne m'affiche pas les valeurs que je souhaite dans mon tableau.

Code :
  1. int main(void) {
  2. //A)Déclaration des données
  3. //a)Données en entrées
  4. float temperature_min;            // temperature encodées par l'utilisateur, réel
  5. float temperature_max;
  6. int langue;
  7. int unite;              //choix de l'opérateur pour le choix de la langue et de l'unité, caractère
  8. int tab1[12];
  9. int tab2[12];
  10. int tab3[12];
  11. int tab4[12];
  12. double far;
  13. int compteuR;
  14. //b)Données modifiées
  15. double position_minima;          //La position du minima
  16. double position_maxima;          //La position du maxima
  17. int compteur;
  18. int compteur2;
  19.         //compteur d'itération pour le tableau des températures maximales, entier
  20. char *mois_anglais[12]={"January ", "February ", "March ", "April ", "May ", "June ", "July ", "August ", "September ", "October ", "November ", "December "};
  21.               /*les mois en anglais, chaîne de caractère =("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", December" )*/
  22. char *mois_fr[12]={"Janvier ", "Fevrier ", "Mars ", "Avril ", "Mai ", "Juin ", "Juillet ", "Aout ", "Septembre ", "Octobre ", "Novembre ", "Decembre "};
  23.               /*les mois en français, chaîne de caractères = ("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre" )*/
  24. //c)Données résultats
  25. double minima;             //le minima de l'année, réel
  26. double maxima;             //le maxima de l'année, réel
  27. //d)Données de travail
  28. char MSG_SAISIE_TEMP_MIN[255]="Veuillez entrer les temperatures minimales pour chaque mois de l'annee: " ;
  29.               //Message de saisie pour les températures min. de l'année
  30. char MSG_SAISIE_TEMP_MAX[255]="Veuillez entrer les temperatures maximales pour chaque mois de l'annee: " ;
  31.               //Message de saisie pour les températures max. de l'année
  32. char MSG_SAISIE_UNITE[255]="Veuillez choisir l'unité pour les temperature, 0 pour celsius 1f pour farenheit: ";
  33.               //Message de saisie pour le choix de l'unité
  34. char MSG_CHOIX_LANGUE[255]="Veuillez choisir la langue, 0 pour francais 1 pour anglais: ";
  35. char MSG_TABLEAU[255]="Le programme va vous afficher le tableau des temperatures dans la langue et l'unite choisies";
  36. minima=0;                     //Initialisation du minima et maxima
  37. maxima=0;
  38. for (compteuR=0;compteuR<12;compteuR++){       //Tableau des temp. minimales
  39. printf("%s",MSG_SAISIE_TEMP_MIN);
  40. scanf("%f",&temperature_min);
  41.  far=((temperature_min*1.8)+32);
  42.  tab1[compteuR]=temperature_min;
  43.         tab2[compteuR]=far;
  44.  if (temperature_min <= minima) {              //recherche du minima et sa position
  45.   minima=temperature_min;
  46.   position_minima=compteuR;
  47.  }
  48. }
  49. for (compteuR=0;compteuR<12;compteuR++){       //Tableau des temp. max
  50. printf("%s",MSG_SAISIE_TEMP_MAX);
  51. scanf("%lf",&temperature_max);
  52.  far=((temperature_max*1.8)+32);
  53.  tab3[compteuR]=temperature_max;
  54.         tab4[compteuR]=far;
  55.  if (temperature_max <= maxima) {              //Recherche d'un maxima et sa position
  56.   maxima=temperature_max;
  57.   position_maxima=compteuR;
  58.         }
  59. }
  60. printf("%s\n",MSG_CHOIX_LANGUE);                                                //Choix des langues
  61. scanf("%d", &langue);
  62. fflush(stdin);
  63. printf("%s\n",MSG_SAISIE_UNITE);               //Message de saisie pour l'unite
  64. scanf("%d", &unite);
  65. if ((langue==0) && (unite==0)){
  66.     puts("Ce programme affichera les mois en francais et les degrés en Celsius" );
  67.     for (compteur=0;compteur<12;compteur++){
  68.         printf(mois_fr[compteur]);
  69.         printf("\n" );
  70.     }
  71.     for (compteuR=0;compteuR<12;compteuR++){
  72.         printf("%lf %lf",tab1[compteuR],tab3[compteuR]);
  73.         printf("\n" );
  74.     }
  75. }
  76. else{
  77.     if ((langue==1) && (unite==0)){
  78.         puts("Ce programme affichera les mois en anglais et les degrés en celsius" );
  79.         for (compteur=0;compteur<12;compteur++){
  80.         printf(mois_anglais[compteur]);
  81.         printf("\n" );
  82.         }
  83.         for (compteuR=0;compteuR<12;compteuR++){
  84.             printf("%lf %lf",tab1[compteuR],tab3[compteuR]);
  85.             printf("\n" );
  86.             }
  87.     }
  88. else{
  89.     if ((langue==0) && (unite==1)){
  90.         puts("Ce programme affichera les mois en francais et les temperatures en farenheit" );
  91.         for (compteur=0;compteur<12;compteur++){
  92.         printf(mois_fr[compteur]);
  93.         printf("\n" );
  94.         }
  95.         for (compteuR=0;compteuR<12;compteuR++){
  96.             printf("%lf %lf",tab2[compteuR],tab4[compteuR]);
  97.             printf("\n" );
  98.         }
  99.     }
  100. else{
  101.     if ((langue==1) && (unite==1)){
  102.        puts("Ce programme affichera les mois en anglais et les temperatures en farenheit" );
  103.         for (compteur=0;compteur<12;compteur++){
  104.         printf(mois_anglais[compteur]);
  105.         printf("\n" );
  106.         }
  107.         for (compteuR=0;compteuR<12;compteuR++){
  108.             printf("%lf %lf",tab2[compteuR],tab4[compteuR]);
  109.             printf("\n" );
  110.         }
  111.     }
  112. }
  113. }
  114. }
  115. return (EXIT_SUCCESS);
  116. }


Quand je souhaite afficher les valeurs enregistrées manuellement, il écrit toujours 0.00000.
Si vous aviez une idée de mon erreur...ça me serait bien utile!

Reply

Marsh Posté le 04-01-2014 à 23:00:51   

Reply

Marsh Posté le 04-01-2014 à 23:17:26    

Bonsoir !
 
Vous utilisez "%lf" pour lire un flottant, alors que ce dernier sert à lire un double. Vous devez utiliser "%f" pour saisir un flottant.
 
A priori, cela n'a pas d'importance pour le printf, mais pour le scanf, oui.
 
Bonne continuation !

Reply

Marsh Posté le 05-01-2014 à 05:02:27    

J'ai changé les double en float. Il y a toujours un probleme concernant les lignes ou j'ai chaque fois printf("%f %f",...)
Le warning : format %f expects arguments of type 'double' but arguments 2 has type 'int'.


Message édité par Thaybow7 le 05-01-2014 à 05:03:38
Reply

Marsh Posté le 05-01-2014 à 05:13:43    

En effet, les tableaux tab1, tab2, tab3 et tab4 sont déclarés comme tableaux d'entiers, et vous les affichez (et stockez dedans les valeurs que vous saisissez) comme des doubles, l'erreur vient de là.
 
Bonne continuation !

Reply

Marsh Posté le 05-01-2014 à 05:23:53    

Ok j'ai changé avec %d comme les tableau sont des entiers. C'est déjà mieux. Mais par contre, il ne m'affiche pas les valeurs avec des décimales. Sur la variable far je multiplie par 1.8. Je n'ai que des chiffres ronds dans mon tableau

Reply

Marsh Posté le 05-01-2014 à 06:16:05    

C'est normal, si le tableau contient des entiers, les valeurs sont entières, pas décimales ...
 
Vous devez utiliser des tableaux de flottants.
 
Bonne continuation !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed