Que fait ce programme ?

pocketbiz Messages postés 3 Date d'inscription mercredi 29 décembre 2010 Statut Membre Dernière intervention 1 janvier 2011 - 29 déc. 2010 à 16:00
pocketbiz Messages postés 3 Date d'inscription mercredi 29 décembre 2010 Statut Membre Dernière intervention 1 janvier 2011 - 1 janv. 2011 à 18:06
Bonjour,

quelqu'un pourrait m'expliquer ce que fait ce programme. je sais qu'il donne:
b=3
b=9
b=3
b=23.

merci d'avance :)
________________________________

#include<stdio.h>
int fonc1(int);
int fonc2(int);
int main ()

{
int a=1,b=2,compteur;
for(compteur=1;compteur<=2;++compteur)
{b+=fonc1(a)+fonc2(b);
printf("b=%d\n",b);
}
getchar();
return 0;

}

int fonc1(int a)
{
int b;
b=fonc2(a);
printf("b=%d\n",b);
return b;
}

int fonc2(int a)
{
int b=1;
b+=1;
return (b+a);
}


c'est dans un polycopié d'exercices optionnels.

il faut dire ce que cela affiche, j'ai trouvé bêtement ce qu'il affiche en le compilant et en l'exécutant mais j'aimerai savoir ce que calcule ce programme.

pas dans le sens de trouver un nom à ce qu'il trouve, mais juste savoir comment le programme fonctionne, calcule ...
je vois ce que donne les 2 fonctions fonc1 et fonc2 mais je ne comprend pas:

int a=1,b=2,compteur;
for(compteur=1;compteur<=2;++compteur)
{b+=fonc1(a)+fonc2(b);
printf("b=%d\n",b);
}

fonc2(b) ? le compteur vient faire quoi dedans ?

4 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
29 déc. 2010 à 19:18
int a=1,b=2,compteur;
for(compteur=1;compteur<=2;++compteur)
{b+=fonc1(a)+fonc2(b);
printf("b=%d\n",b);
}


Le compteur n'est là que pour effectuer 2 fois la séquence:
b += fonc1(a) + fonc2(b);
printf("b=%d\n",b);


Ça équivaut strictement à:
int main ()
{
  int a=1,b=2;
  b+=fonc1(a)+fonc2(b);
  printf("b=%d\n",b);
  b+=fonc1(a)+fonc2(b);
  printf("b=%d\n",b);
  getchar();
  return 0;
} 


________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
pocketbiz Messages postés 3 Date d'inscription mercredi 29 décembre 2010 Statut Membre Dernière intervention 1 janvier 2011
1 janv. 2011 à 15:20
merci, et

{
int a=1,b=2,compteur;
for(compteur=1;compteur<=2;++compteur)
{b+=fonc1(a)+fonc2(b);
printf("b=%d\n",b);
}
getchar();
return 0;
}


b b + fonc1(1) + fonc2(2) 2+3+4=9 (donne b=9 avec le programme)
b 9 + fonc1(1) + fonc2(9) 9+4+4=17 (donne b=23 avec le programme)

int fonc1(int a)
{
int b;
b=fonc2(a);
printf("b=%d\n",b);
return b;
}


b fonc2(1) 3
b fonc2(1) 4

int fonc2(int a)
{
int b=1;
b+=1;
return (b+a);
}


b 1+1 2 -> b+a = 2+1=3
b 2+1 3 -> b+a = 3+1=4



où est l'erreur ?
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
1 janv. 2011 à 15:31
fonc2(9) => 11 et pas 4
Attention, ce n'est pas parce que la variable s'appelle b, que c'est la même.

Ceci:
int fonc2(int a)
{
int b=1;
b+=1;
return (b+a);
}


Est totalement et absolument identique à ça:
int fonc2(int x)
{
int y=1;
y+=1;
return (b+x);
}


ou encore:
int fonc2(int x)
{
  return x + 2;
}


________________________________________________________________________
Historique de mes créations, et quelques articles:[ http://0217021.free.fr/portfolio
http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
pocketbiz Messages postés 3 Date d'inscription mercredi 29 décembre 2010 Statut Membre Dernière intervention 1 janvier 2011
1 janv. 2011 à 18:06
j'ai compris mnt !

bonnes fêtes et merci !
0
Rejoignez-nous