Arithmetique en c et cpp

Fermé
debutant - 4 avril 2009 à 11:24
 bissoux - 5 avril 2009 à 01:33
Bonjour,
je voudrais bien savoir comment ça marche les opertation arithmetique en langage c et cpp :
exp :
n= o
n<=5 n++
n = 6 j ai compris la premiere .

n=p=0 ;
n<=8 n+=p++ ;
n= 10 . pourquoi

n=p=0 ;
p<=5 n+=p++;
n=15 pourquoi ?

et j'ai une autre question :
exp : quel est le but de cette affichage en c ?
int n = 12 ;
int p =45 ;
float x= 12.34;

main( )
{
printf ( " A : %4d %10f\n ,n,X)
}
merci .
A voir également:

4 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
4 avril 2009 à 12:03
Salut,
n<=5 Qu'est-ce que tu attends de cette instruction ?

printf ( " A : %4d %10f\n ,n,X)
Permet d'afficher n sur 4 caractères et X sur 10 en complétant par des espaces si nécessaire.
0
bonjour , je voulais te remercie pour ton aide , je te souhaite une tres bonne soiree .
merci.
0
bonjour ,
merci de ta reponse ,
mais il reste un truc j'attends pas quelque chose de cette instruction mais je veux connaitre la logique de calcul .
merci .
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
4 avril 2009 à 12:22
Oui, mais
n<=5 n++;
n'est pas une instruction correcte.

C'est pour ça que je te demande ce que t'appelles n<=5.
Si tu souhaites mettre 5 dans n, il faut faire n=5. Et effectivement n++ permet d'incrémenter n. Donc n devient égal à 6. Mais si tu utilises n<=5, alors que n vaut 0, cela comparera 0<=5 qui est vrai, donc l'instruction renverra 1. Et comme tu récupères pas le résultat, l'instruction est complètement inutile.

Donc qu'entends-tu par n<=5 ? (tu voulais dire n=5 ou pas ?).
0
bonjour ,
je prends un autre exemple ok ;

n=p=0;
while ( n<=5) n + = p++ ;
printf (B : n = %d\n , n);
j'ai B : n = 10 ? pourquoi comment on a eu ce resultat tu te m'esxpliquer la logique de calcul ;
j ai un autre exemple :
n=p=0;
while ( n <=8) n +=++p;
printf("c : n= %d\n" , n);
ici n = 15 comment
merci pour ton aide .
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
4 avril 2009 à 13:32
Ah, avec le while, ça change tout ^^.


n=p=0;
while ( n<=5) n += p++ ; //attention pas d'espace entre le + et =.
printf (B : n = %d\n , n);


Tant que n est inférieur ou égal à 5, on fait n=n+p; et p=p+1;
Ce qui donne successivement :
n=0+0=0 puis p=0+1=1
n=0+1=1 puis p=1+1=2
n=1+2=3 puis p=2+1=3
n=3+3=6 puis p=3+1=4
On arrête là car n est supérieur à 5.
Donc n vaut 6 et non 10.

De même pour l'autre exemple, n vaudra 10 et non 15.

C'est lors de la prochaine itération (ou n+p) qu'on aura 10 et 15.

Cdlt
0
debutant > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
4 avril 2009 à 15:47
salut ,
excuse moi je vais te deranger encore une fois est-ce-que tu peux m'explique comment de :
n=p=0;
while ( n<=5) n += p++ implique n=n+p; et p=p+1 ?
et est-ce que les choses vont changer si je mets à la plaça de p++ ,++p.
merci .
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841 > debutant
4 avril 2009 à 16:02
while ( n<=5) n += p++ implique n=n+p; et p=p+1 ?

n+=p++ signfie n=n+p++.
Et p++ signifie p=p+1 en renvoyant la valeur avant incrémentation (post-incrémentation).
Donc en gros, c'est comme si tu faisais : n=n+p; p=p+1.

et est-ce que les choses vont changer si je mets à la plaça de p++ ,++p.
Oui, là il s'agit de pré-incrémentation. Mais dans ton exemple, n aura la même valeur. Par contre p n'aura pas la même valeur.

Donc si on reprend chacune des étapes appliquées à :
n=p=0;
while ( n<=5) n += ++p ;
printf (B : n = %d\n , n);

Cela donne :
p=0+1=1 et n=0+1=1
p=1+1=2 et n=1+2=3
p=2+1=3 et n=3+3=6

Ici p vaut 3, alors que p vaut 4 en mettant p++.

Cdlt
0