IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Calcul de moyenne


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2014
    Messages : 22
    Points : 3
    Points
    3
    Par défaut Calcul de moyenne
    Bonjour,
    j'ai essayé de faire cette exercice:
    "Afficher la somme, la moyenne et le maximum d’un tableau de 20 réels"

    Et j'essai de "décortiqué" le corrigé que je ne comprends pas totalement.
    Voici le corrigé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #include<stdio.h>
    int main()
    int k,i
    float moy,t[20],s,max;réels
    printf("Rentrer 20 entiers"\n);s=0
    for(k=0;k<20;k++)
    {scanf("%f",&t[k]);
    {s=s+t[k];
    {moy=s/20;
    max= t[0];
    for(i=1;i<20;i++)
    {if(t[i]-max<0)
    {t[i]=max;
    {
    {
    Mais je ne comprends pas vraiment ce que "i" et "k" représente dans t[i] et t[k](c'est quoi t[i] et t[k]?),de manière générale,i et k sont des variables non ?
    De même je ne comprend pas trop la notation "s=s+t[k]" je vois ça comme si on me disais que 1=1+2 mais je sais que ce n'est pas ce que ça veut dire.
    Toute aide sera la bienvenu.

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 148
    Points : 28 113
    Points
    28 113
    Par défaut
    Bonjour,

    Ce que tu postes n'est pas un corrige. Tout au plus une mauvaise recopie d'un corrigé.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    #include<stdio.h>
    int main(void)
    {
      int k,i;
      float moy,t[20],s,max; /* reels */
     
      /* initialisations */
      s=0;
     
      printf ("Rentrer 20 entiers\n");
      for(k=0;k<20;k++)
      {
        scanf("%f",&t[k]); /* On ne lit pas l'entree clavier avec scanf, merci */
        s += t[k];
       }
     
      moy = s / 20;
     
      max= t[0];
      for(i=1;i<20;i++)
      {
        if(t[i]-max<0)
        {
          t[i]=max;
        }
      }
    }
    En vrac :
    le prototype de main n'est pas bon
    On ne lit pas les entrees clavier avec scanf. Voir le cours d'Emmanuel Delahaye sur les entrees bien formatees. https://emmanuel-delahaye.developpez...ees-solides-c/
    i est inutile, mais bon, c'est pas le plus grave

    Qu'est-ce que tu ne comprends pas ?
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2014
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Bonjour,
    Alors je ne comprenais pas ce que c'est t[i] et t[k] et comment on affichait le maximum.
    Mais j'ai pris le corrigé sur un ami,comme quoi on n'est jamais mieux servi que par soit même...

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 627
    Points : 10 551
    Points
    10 551
    Par défaut
    t est un tableau de 20 réels: float t[20]Et on utilise l'opérateur [] pour accéder à une case:
    t[0] -> première case
    t[1] -> deuxième case
    En C comme dans d'autres langages les indices commencent à 0 et non pas à 1

    Avec t[i] et t[k] c'est une variable entière i ou k qui va contenir l'index.
    Pourquoi on fait cela?
    Pour accéder à toutes les cases avec une boucle pour
    Ta première boucle permet de stocker 20 valeurs saisies par l'utilisateur dans les cases de ton tableau t

    Et ta deuxième boucle permet de rechercher le maximum même si cette ligne t[i]=max; est fausse et le test t[i]-max<0 faux et pourri

    Après cela se voit que c'est un code non-pro: avec des t au lieu de tab, deux entiers i et j au lieu d'un seul entier pos ou encore s au lieu de total même si cette variable est inutile

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2014
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Ok,merci,tes explication sont clairs .

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2014
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Sinon j'ai un ami qui a tenté de corrigé les faute et qui a vu que ça fonctionnait avec codeblock,voici ce qu'il a écrit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    int k,i;
    float moy,somme,max,reels;
    float table[20];
     
    printf("Rentrer 20 entiers"/n);
    somme=0;
    for(k=0;k<20;k++)
    {scanf("%f",&table[k]);
    {somme=somme+table[k];
    {moy=somme/20;
    max= table[0];
    for(i=1;i<20;i++)
    {if(table[i]-max<0)
    {table[i]=max;
    {
    {
    Mais les crochet lui pose un problème,ce qu'il a écrit-est-il bon?

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 627
    Points : 10 551
    Points
    10 551
    Par défaut
    Pas bon

  8. #8
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Damien75 Voir le message
    Sinon j'ai un ami qui a tenté de corrigé les faute et qui a vu que ça fonctionnait avec codeblock,voici ce qu'il a écrit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    int k,i;
    float moy,somme,max,reels;
    float table[20];
     
    printf("Rentrer 20 entiers"/n);
    somme=0;
    for(k=0;k<20;k++)
    {scanf("%f",&table[k]);
    {somme=somme+table[k];
    {moy=somme/20;
    max= table[0];
    for(i=1;i<20;i++)
    {if(table[i]-max<0)
    {table[i]=max;
    {
    {
    Mais les crochet lui pose un problème,ce qu'il a écrit-est-il bon?
    ça fonctionne avec codeblocks? Oo. De mon avis, ce bout de code ne compile meme pas, je vais te proposer un bout de code qui permet d'effectuer ce que tu veux une fois que ton tableau est rempli

    imaginons que ton tableau s'appelle tab
    Les variables qui contiendront le resultat seront max et moyenne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     int tab[20];
    int max = 0;
    int moyenne = 0;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int i = 0; // variable d'itération pour parcourir le tableau
    while (i < 20) // tant qu'on a pas parcouru toute les lignes du tableau
    {
      if (tab[i] > max) //Si la valeur courante dépasse la valeur maximum enregistrée
        max = tab[i]; // On stock la nouvelle valeur
      moyenne += tab[i]; // on additionne toute les valeur du tableau en additionnant à chaque tour, chaque valeur du tableau
      i++; // On incrémente le compteur pour passer à l'entrée suivante
    }
    moyenne /= 20; // On divise la valeur totale par 20 pour obtenir la moyenne de toute les valeurs
    De cette manière, à la fin du bloc, max contient la valeur max dans le tableau et moyenne, la moyenne de toute les valeurs du tableau.

    ça réponds à ton besoin?
    Pas de solution, pas de probleme

    Une réponse utile (ou +1) ->
    Une réponse inutile ou pas d'accord -> et expliquer pourquoi
    Une réponse à votre question


  9. #9
    Membre émérite
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    851
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 851
    Points : 2 293
    Points
    2 293
    Par défaut
    Citation Envoyé par gangsoleil Voir le message
    En vrac :
    le prototype de main n'est pas bon
    Je ne vois pas pourquoi... Ces 2 prototypes fonctionnent parfaitement chez moi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int main();
    int main(void);
    Ce ne sont pas les plus utilises mais ca compile. Si on voulait vraiment appeler le vrai main, il faudrait utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int main(int argc, char **argv, char **env);
    Citation Envoyé par gangsoleil Voir le message
    On ne lit pas les entrees clavier avec scanf. Voir le cours d'Emmanuel Delahaye sur les entrees bien formatees. https://emmanuel-delahaye.developpez...ees-solides-c/
    Pour un petit programme fait a la va vite, utiliser scanf n'est pas un probleme, on s'en fiche un peu de la securite dans ce genre de cas...

    @Damien75:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    float table[20];
    printf("Rentrer 20 entiers"/n);
    scanf("%f",&table[k]);
    Soit un entier n'est plus un entier, soit tu voulais plutot dire nombre flottant, non ?

Discussions similaires

  1. [VBA-E] problème de calcul de moyenne
    Par sat478 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/04/2006, 18h13
  2. [Oracle] Calcul de moyenne par module
    Par naazih dans le forum Langage SQL
    Réponses: 14
    Dernier message: 27/04/2006, 15h38
  3. Programmation Shell avec Red Hat Calcul de moyenne
    Par jcpoulard dans le forum Linux
    Réponses: 3
    Dernier message: 22/02/2006, 23h08
  4. methode qui calcul une moyenne du traffic
    Par siry dans le forum Développement
    Réponses: 7
    Dernier message: 05/05/2005, 18h16
  5. calculer une moyenne avec une requete externe
    Par allowen dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/01/2005, 17h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo