Langage c

Bonjour,

j ai un exco a faire et j voudrai votre aide: exco:ecrire un programme c qui lit une série note au clavier et qui affiche la moyenne des notes .
la fin de la boucle se faira en tapant la note -1.on doit avoir a l'affichage:
_la moyenne des notes est:
_le maximum des notes est:
_le minimum des notes est:
_le nbre de notes >= a 10 est:
_le nbre de notes <= a 10 est:
nb:une note est comprise entre 0 et 20.

8 réponses

  1. Modérateur
    Salut,

    Poste ton code et tu seras conseiller en fonction des erreurs sur lesquelles tu bloques.

    @+
    1. #include<stdio.h>
      #include<conio.h>
      main()
      {
      int i,N,nsm,nim;
      float s,n,m,man,min;
      i=1;
      s=0;
      man=-1;
      min=0;
      nsm=0;
      nim=0;
      printf("entrez le nbre de notes\n");
      scanf("%d",&N);
      for(i=1;i<=N;i++)
      {
      printf("entrez la note%d\n",i);
      scanf("%f",&n);
      s=s+1;
      m=s/N;
      }
      if(n>man)
      {
      man=n;
      }
      else if(n<min)
      {
      min=n;
      }
      else if(n>=10)
      {
      nsm=nsm+1;
      }
      else if(n<=10)
      {
      nim=nim+1;
      }
      else if(n=-1)
      i=i+1;
      printf("la moyenne est%f\n",m);
      printf("le maximum des notes est%f:\n",man);
      printf("le minimum des notes est%f\n",min);
      printf("le nbre de notes >= a 10 est%d\n",nsm);
      printf("le nbre de notes <= a 10 est%d",nim);
      getch();
      return 0;
      }
      1. la fin de boucle se fait en tapant -1
      2. ya juste a changer sa boucle e, mettant un while(n!=-1) et à la fin de la boucle refaire un scanf("%f",&n);
    2. #include<stdio.h>

      main()
      {
      int nsm,nim;
      int cpt=0;
      float s,n,m,man,min;
      s=0;
      man=0;
      min=20;
      nsm=0;
      nim=0;
      m=0;
      printf("entrez une note\n");
      scanf("%f",&n);
      while(n!=-1)
      {
      if(n>man)
      {
      man=n;
      }
      if(n<min)
      {
      min=n;
      }
      if(n>=10)
      {
      nsm=nsm+1;
      }
      if(n<=10)
      {
      nim=nim+1;
      }
      s=s+n;
      cpt++;
      printf("entrez une note\n");
      scanf("%f",&n);
      }

      m=s/cpt;
      printf("la moyenne est%f\n",m);
      printf("le maximum des notes est%f:\n",man);
      printf("le minimum des notes est%f\n",min);
      printf("le nbre de notes >= a 10 est%d\n",nsm);
      printf("le nbre de notes <= a 10 est%d",nim);
      return 0;
      }

      j'ai modifié ton code de base, mais vite fais, tu peux faire plus d'amélioration(regrouper tous les printf en un printf, faire les cas ou n>20 ou n<-1, ...)
      1. mais comment regrouper tous les printf en un printf, faire les cas ou n>20 ou n<-1 et merci pour votre aide
        1. tu fais les test dans ta boucle et tu met un continue (continue sa sert à ce que la boucle passe à l'itération suivant sans passer par ce qu'il y a après continue)

          pour printf, imaginons que t'aies a=5, b=2
          au lieux de faire
          printf("la valeur de a est : %d\n",a);
          printf("la valeur de b est : %d\n",b);

          et ben tu fais : printf("la valeur de a est %d\nla valeur de b est %d\n", a, b);
        2. Contributeur
          Ce n'est pas de l'amélioration. Ca nuit à la lisibilité plus qu'autre chose. Et cela ne changera rien à l'exécution. En revanche, faire une fonction d'affichage, ça rendrait le code plus clair.
        3. ça nuit rien du tout il fau être habitué à faire du langage optimisé, ce que je viens de dire c'est le minimum, ça sert à rien de faire 10 pages si on peut en faire qu'une, et ça reste toujours lisible, il n'est pas interdit de mettre des commentaire à coté, tous les programmeurs le font, pour ceux qui utilisent le programme, mais aussi pour eux même
          le mieux effectivement c'est de faire une fonction d'affichage, après faut voir où il en est dans son apprentissage
        4. Contributeur
          Euh non, tous les programmeurs ne font pas ça, et heureusement.
          Enfin bon, chacun sa préférence après tout.
          En revanche : main() c'est pas bon. C'est : int main(void) et là c'est pas une préférence.
      2. sa ne marche toujour pas et j mescuse de vous retarder sur sa
        1. Contributeur
          Ne t'excuse pas ;-))).
          C'est quoi qui ne marche pas ? Ca ne compile pas ? Ca ne fait pas ce que tu veux ? Précise stp.
      3. ok mais
        sa ne compile pas
        1. Contributeur
          Va falloir préciser plus que ça si tu veux qu'on t'aide... Comme dire le message d'erreur que t'obtiens, à quelle ligne, etc.
          Sinon hormis le : main() à remplacer par le int main (void)
          ton programme doit compiler.
      4. le site du zero en 2/3 mois tu sera un pro du C (en 2 jours j'ai réussi à simuler une commande mc do sans la correction) ya presque tous les language ;)
        1. avec le site du zero tu deviens pas un pro, mais tu connaitra pas mal de chose déjà c'est sur
        2. perso, avec le siteduzero, j'ai apris a m'interesser au C et a la programmation, mais si tu veux vraiment aller en profondeur, il existe des livres sur le C en anglais qui couvrent tout le langage (The C Programing language et Beginning C: From Novice to Professional (je l'ai vraiment aime)).