Moyenne,somme,maximum

Bonjour,

j'ai essayé de faire cet exercice:
"Afficher la somme, la moyenne et le maximum d'un tableau de 20 réels"

Et j'essai de comprendre le corrigé que je ne comprends pas totalement.

Voici le corrigé:
#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],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 la vrai signification.
Toute aide sera la bienvenu.

4 réponses

  1. Bonjour, i et k représentent une variable dans la boucle mais sont utilisés pour accéder à un élément particulier d'un tableau.

    Le premier élément du tableau est 0. Donc t[0] renvoie le premier élément.

    Par contre (certes c'est minime ici), d'accord pour calculer la somme à chaque passage dans la boucle mais visiblement tu fais aussi le calcul du maximum à chaque fois, ce qui n'est pas performant. Tu peux parcourir le tableau une seule fois à la fin pour calculer le maximum.
    0
    1. Contributeur
      Salut Jack65,

      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 la vrai signification.

      s=s+t[k]

      l'opérateur d'égalité c'est == en C.
      = c'est l'opérateur d'affectation.

      Cela signifie donc : affecte à la variable s la valeur de la variable s augmentée de la valeur contenue dans le tableau t à l'indice k. Donc la variable s est mise à jour, en additionnant sa valeur avec celle de t[k].

      Dal
      0
      1. Contributeur
        Ton code est plein de fautes de syntaxe. Je suppose que tu as retapé le "corrigé" à la main et inséré ces fautes par inadvertance.
        0
      2. oui je l'ai retapé à la main mais j'ai recopié exactement ce que j'ai vu,j'ai vérifié.
        0
      3. Contributeur
        Non, tu as dû mal recopier...
        Les erreurs :
        int k,i
        Il manque le point virgule en fin de ligne.

        float moy,t[20],s,max;réels
        réels n'est pas à sa place ici. Probablement // devant ou mieux /*réels*/

        printf("Rentrer 20 entiers"\n);s=0
        Il manque le point virgule en fin de ligne.
        Le \n doit se trouver avant le guillemet.

        Certaines accolades sont dans le mauvais sens.
        Et il manque le return 0; (peut-être une faute dans le bouquin ça).
        0
      4. c'est sur un ami que j'ai pris ça,il a du mal recopier je pense.
        0
    2. Oui je vois ce que tu veux dire pour le maximum,mais il y a une petite partie du corrigé que je n'ai pas mis(la fin).
      Excuse moi,mais tu veux dire que ça renvoi au premier élément?
      Donc t[1] renvoi au deuxième et ainsi de suite?
      0
      1. Oui, t[1] est le deuxième élément. t[n-1] est le n-ième élément.
        0
      2. Ok,merci pour ton aide.
        0
    3. Ah ok merci pour ton aide Dal,c'est beaucoup plus clair maintenant,merci aussi pour ton aide Rocky_123.
      0