Probleme syntaxe ? [résolu]

Probleme syntaxe ? [résolu] - C - Programmation

Marsh Posté le 24-09-2013 à 20:17:53    

Bonjour !!
 
Voila je suis tout nouveau dans la programmation, j'ai commencé il y a seulement 2 jours !
 
Je m'amuse à réaliser des exercices de débutant mais déjà ici je ne comprends pas quelque chose !!
Je voulais déjà tester avec un petit algorithme tout simple pour me dire la valeur minimal et la valeur maximal d'un tableau.
 
Cependant malgré cela, la valeur minimal ne change jamais ! et est égale toujours à 0 ! Savez vous pourquoi ? J'ai fais exprès de créer deux "IF" pour être sur que ça ne soit pas un problème de construction d'algorithme.
 
Merci d'avance des réponses !
 
Voici mon code :
 
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
 
int main()
{
  int n,i;
  float tableau[n];
  float val_min, val_max, etendue;
   
  val_max = tableau[0];
  val_min = tableau[0];
   
  printf("Entrer le nombre de valeurs: \n" );
  scanf("%d",&n);
   
   
 
  for(i=0;i<n;i++)
    {
      printf("Entrer la valeur reelle : \n" );
      scanf("%f",&tableau[i]);
    }
     
     
  for(i=0;i<n;i++)
  {
       if(tableau[i]<val_min)
       {
            val_min=tableau[i];
       }
       if(tableau[i]>val_max)
       {
            val_max=tableau[i];
       }
 
 
                                                   
  }
 
  printf("La plus grande valeur est : %.2f et la plus petite valeur est : %.2f\n",val_max, val_min);
     
   
  system("PAUSE" );
  return 0;
}


Message édité par mgm0047a le 24-09-2013 à 23:25:25
Reply

Marsh Posté le 24-09-2013 à 20:17:53   

Reply

Marsh Posté le 24-09-2013 à 21:36:02    

Bonsoir !
 
Ne cherchez pas très loin, l'erreur doit être ici :  

Code :
  1. int n,i;
  2.   float tableau[n];


 
En créant les valeurs comme ça, comment voulez-vous que le compilateur sache quelle taille donner au tableau ?
 
Refaites votre allocation et cela devrait aller mieux.
 
Bonne continuation !

Reply

Marsh Posté le 24-09-2013 à 21:40:05    

Pas trop mal pour un débutant. Il y a juste quelques expressions mal placées dans le code:

Code :
  1. float tableau[n];


 
À l'endroit où est placé cette déclaration, "n" n'est pas initialisé. Donc peut valoir n'importe quoi, bien qu'en mode débug, ça vaudra probablement 0. Il faut donc placer cette instruction après que "n" soit initialisé, soit donc après :

Code :
  1. scanf("%d",&n);


 
Pareil pour ces deux lignes :

Code :
  1. val_max = tableau[0];
  2. val_min = tableau[0];


 
Quand elles sont appelées, tableau[0] n'est pas initialisé, donc à placer après la boucle d'initialisation.
 

Reply

Marsh Posté le 24-09-2013 à 23:23:14    

Ah d'accord très bien !! Je vous remercie :)

Reply

Sujets relatifs:

Leave a Replay

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