Forums Rue-Montgallet.com
Rue-Montgallet.comRue-Hardware.comRue-Occasion.comRue-DVD.comRue-Jeuxvideo.comRue-AudioVideo.comRue-Telephone.comForums
S'inscrire | S'identifier |
| Recherche avancée | Aide
 
 

Il y a 73 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

Petit code en C a débugé :/

 
n°19114
creatix
Profil : Jeune recrue
Posté le 05-12-2007 à 12:12:14  profilanswer
 

Bonjour,
 
J'aurai besoin d'un peu d'aide pour mon code.
 

Code :
  1. #include <stdio.h>
  2. int main (int argc, const char * argv[])
  3. {
  4. int n=7; // la fin du compteur
  5. int i;
  6. int h=0;
  7. int j=0;
  8. int k=0;
  9. int sommecarre=0;
  10. //première méthode de boucle
  11. printf("Boucle FOR \n" );
  12. for ( i = 0; i <= n; i++ ) // on compte jusqu'a ce que i = n en partant de 0 avec une boucle for
  13. {
  14. printf("valeur : %d \n", i);
  15. }
  16. // 2éme méthode de boucle
  17. printf("Boucle DO WHILE \n" );
  18.  do // on compte jusqu'a ce que h = n en partant de 0 avec une boucle do while
  19.  {
  20.  printf("valeur : %d \n", h);
  21.   h = h++;
  22.  } while (h <= n); 
  23. // 3éme méthode de boucle
  24. printf("Boucle WHILE \n" );
  25. while (j <= n) // on compte jusqu'a ce que j = n en partant de 0 avec une boucle do while
  26. {
  27.  printf("valeur : %d \n", j);
  28.  j = j++;
  29. }
  30. // objectif: somme des nombres entiers naturels pairs inférieurs à n
  31. printf("PARTIE 2\n" );
  32. do
  33. {
  34.  //sommecarre=sommecarre+k^2;
  35.  //printf("valeur de la somme provisoire des carres : %d \n", sommecarre);
  36.  printf("valeur du carré %d \n", k^2);
  37.  k=k+2;
  38. }
  39. while (k<n);
  40. //printf("valeur de la somme des carres : %d \n", sommecarre);
  41.     return 0;
  42. }


 
Le problème c'est dans la 2éme partie, la somme se passe pas très bien il me donne pour la valeur du carré donc pour la somme sa ne va pas très bien marcher a mon avie.  
 
valeur du carré 2  
valeur du carré 0  
valeur du carré 6  
valeur du carré 4
 
Donc il y a un problème :/ mais je voie pas vraiment où? (je débute le C)
 
Sinon juste comme ça, mon code c'est bon? la structure les espaces... il est "propre"?

n°19118
kurt11
Profil : Habitué
Posté le 05-12-2007 à 23:06:11  profilanswer
 

Je n'ai pas vraiment compris ce que tu voulais/dois faire... Donc un petite explication sera la bienvenue.
 
Sinon pour la "propreté" de ton programme, n'oublie pas d'indenter, de faire de "belle" boucle do/while (cf. 3 ème méthode), tu peux remplacer les "x = x++" par "x++" (normalement, en tout cas ça se fait en C++ mais en C je ne sais plus).


---------------
[:zzzinv] Membre de la team Mozilla Firefox et Opera
n°19120
cmoila
Profil : Membre
Posté le 05-12-2007 à 23:26:19  profilanswer
 

pour la présentation, ton prog est assez clair (par rapport a ce qu'on a déjà vu ici).
Je ferais les memes remarques que kurt:
- l'indentation pour un débutant est très importante. Mets 2 blancs pour la 1ere indentation dans la fonction et ensuite mets en 4 pour toutes les autres. Cela rendra la structure de ton prog plus facile à lire. Ensuite (dans 3 ou 4 ans) tu passeras a des indentations courtes, pour des algo très tarabiscotés.

 

- déclares tes variables locales le plus près de l'endroit ou elle sont utilisées. Pour les boucles, juste avant ou dans la def de boucle pour for.

 


Pour reprendre la discussion C/C++, la seule chose qui n'est pas C++ dans ton prog c'est l'utilisation de "printf". Et encore printf est très utilisé en C++, car il est très efficace pour les formatages compliqués. Mais pour ton cas le flux de sortie C++ serait plus simple. par ex pour cette ligne :

 

en C :
   printf("valeur du carré %d \n", k^2);

 

en C++ :
   cout << "valeur du carré"  << k^2  << endl;

 

QUI est plus simple ? "cout" voulant dire "console out". "endl" ="end ligne". En plus tu peux pas te tromper de "formateur" car c'est le type de l'argument qui permet au compilateur de faire le choix a ta place. ca veut dire que si tu changes le type de la variable k, tu mets un reel a la place de l'integer, et bien ta ligne d'affichage en C++ continue a fonctionner sans modif, alors que le printf en C, plante !

 


Message édité par cmoila le 05-12-2007 à 23:52:49
n°19121
cmoila
Profil : Membre
Posté le 05-12-2007 à 23:36:38  profilanswer
 

// objectif: somme des nombres entiers naturels pairs inférieurs à n
printf("PARTIE 2\n" );
do
{
    //sommecarre=sommecarre+k^2;
    //printf("valeur de la somme provisoire des carres : %d \n", sommecarre);
    printf("valeur du carré %d \n", k^2);
    k = k + 2;  
}  
while ( k < n );
 
Mais tu veux faire quoi exactement ? La somme des carrés ou des nombres pair ?
 
 
h = h++;   cela revient a mettre une affectation inutile. le compilateur interprète comme 2 instructions de suite :
h = h + 1;
h = h;
 
bien sur    h = h;   n'est pas très utile ;-)
 
et   k = k + 2;    est plus propre sous la forme     k += 2;


Message édité par cmoila le 05-12-2007 à 23:56:54
n°19169
filoche
Profil : Jeune recrue
Posté le 30-01-2008 à 08:37:06  profilanswer
 

kurt11 a écrit :

Je n'ai pas vraiment compris ce que tu voulais/dois faire... Donc un petite explication sera la bienvenue.
 
Sinon pour la "propreté" de ton programme, n'oublie pas d'indenter, de faire de "belle" boucle do/while (cf. 3 ème méthode), tu peux remplacer les "x = x++" par "x++" (normalement, en tout cas ça se fait en C++ mais en C je ne sais plus).


 
Pourquoi toutes ces variables qui ne servent à rien !?
as tu un ouvrage sur la programmation en C ; il te serait utile.
si tu réponds OK je t'envoie le code pour résoudre ton petit problème.
 
PS: ça fait plaisir de rencontrer des fans de programmation comme toi ;accroche toi ,les bases du C ne sont pas faciles mais quand on commence à les maitriser alors on prend son PIED !

n°19172
kurt11
Profil : Habitué
Posté le 03-02-2008 à 10:44:09  profilanswer
 

filoche a écrit :


 
Pourquoi toutes ces variables qui ne servent à rien !?
as tu un ouvrage sur la programmation en C ; il te serait utile.
si tu réponds OK je t'envoie le code pour résoudre ton petit problème.
 
PS: ça fait plaisir de rencontrer des fans de programmation comme toi ;accroche toi ,les bases du C ne sont pas faciles mais quand on commence à les maitriser alors on prend son PIED !


Je ne sais pas si tu t'es trompé pour la cotation mais je n'ai pas vraiment compris  :heink: . Perso je n'ai pas de problème, c'est creatix qui en a un.


---------------
[:zzzinv] Membre de la team Mozilla Firefox et Opera

Aller à :
Ajouter une réponse