Dérouler un algorithme

Résolu
dalidalila Messages postés 3 Statut Membre -  
nagaD.scar Messages postés 4500 Statut Membre -
Bonjour,
Je n'arrive pas a comprendre les sorties de ce programme:

#include <stdio.h>
#include <stdlib.h>

int main()
{  
     int s[10];
     int k=0;
     int i,j;
for(i=0;i<=9;i++)
{
    s[i]=0;
    s[k]=s[k]+2;
    for(j=0;j<=i;j++)
    {
        s[j]=s[j]+j;
    }
}
for(i=0;i<=9;i++)
{
    printf("%d\n",s[i]);
}

}

Le résultat est: 20,9,16,21,24,25,24,21,16,9.
La première sortie c'est 20 donc S[k]=10 au début ! Mais k=0 donc pourquoi s[k]=10??
Merci de m'aider ! C'est surement une question bête mais je suis débutante.

1 réponse

  1. nagaD.scar Messages postés 4500 Statut Membre 255
     
    salut,

    Rajoutes justes quelques affichages :

    
    int main()
    {  
         int s[10];
         int k=0;
         int i,j;
        for(i=0;i<=9;i++)
        {
            s[i]=0;
            printf("------ set for i  %d\n",i);
            s[k]=s[k]+2;
            printf("-- set s[%d] to %d\n",k,s[k]);
            for(j=0;j<=i;j++)
            {
                s[j]=s[j]+j;
                printf("set with j {%d} %d\n",j,s[j]);
            }
        }
        for(i=0;i<=9;i++)
        {
            printf("%d\n",s[i]);
        }
    
    }
    


    Ca va te permettre de comprendre que s[0] = 2*i au final (donc 2*10 donc 20) et de comprendre le reste par la meme occasion.

    naga
    1
    1. dalidalila Messages postés 3 Statut Membre
       
      Merci beaucoup ! Donc il fallait comprendre que s[o]=2*i ! C'est pas très évident de le dérouler sans avoir vu le résultat (les sorties) avant :/
      0
    2. nagaD.scar Messages postés 4500 Statut Membre 255
       
      question d'habitude, première chose que je me suis dis en regardant le code c'est que k n'était pas incrémenté ^^ ... et vue que la seconde boucle ne change pas s[0] vue que j=0, on fait juste i fois s[0]=s[0]+2 . bref x)
      0
    3. dalidalila Messages postés 3 Statut Membre
       
      Merci infiniment :)
      0
    4. nagaD.scar Messages postés 4500 Statut Membre 255
       
      pas de soucis, si c'est ok pour toi tu peux passer le sujet en résolu ;)
      naga
      0