petit prog en C qui ne marche pas

petit prog en C qui ne marche pas - C++ - Programmation

Marsh Posté le 27-06-2002 à 22:08:45    

bonjour  
je suis debutant en c , j'ai ecris un petit prog avec une procedure qui ne tourne pas, j'ai beau le lire et le relire je ne trouve pas la solution . quelqu'un serait il pret a jeter un coup d'oeil?

Reply

Marsh Posté le 27-06-2002 à 22:08:45   

Reply

Marsh Posté le 27-06-2002 à 22:10:50    

help....

Reply

Marsh Posté le 27-06-2002 à 22:11:39    

Mets le sur le forum ... ça ira plus vite !!!


Message édité par Olivier51 le 27-06-2002 à 22:12:00
Reply

Marsh Posté le 27-06-2002 à 22:12:49    

ok
 
 
 /* Somme et produit de 2 nombres   */
 /* avec utilisation d'une procedure*/
 /*    */
 /* 27 juin 2002                  
 
 
 #include <stdio.h>
 
 char *cmd = "pause";
 
 
 void passe(int a,int b ,int c,int d);
 main()
 {
 int z,t,s,p,u,v,suv,puv;
 clrscr();
 printf("\n\t\t SAISIR LE PREMIER CHIFFRE" );
 printf("\n\t\t\t" );
 scanf("%d",&z);
 printf("\n\t\t SAISIR LE DEUXIEMME CHIFFRE" );
 printf("\n\t\t\t" );
 scanf("%d",&t);
 passe(z,t,s,p);
 printf("\n\t\t LA SOMME EST:",s);
 printf("\n\t\t LE PRODUIT EST:",p);
 printf("\n\t\t SAISIR LE TROISIEME CHIFFRE" );
 printf("\n\t\t\t" );
 scanf("%d",&u);
 printf("\n\t\t SAISIR LE QUATRIEME CHIFFRE" );
 printf("\n\t\t\t" );
 scanf("%d",&v);
 passe(u,v,suv,puv);
 printf("\n\t\t LA SOMME EST:",suv);
 printf("\n\t\t LE PRODUIT EST:",puv);
        printf("\n\t\t" );
 system(cmd);
 }
 
 void passe(int a,int b,int c,int d)
 { c=a+b;
   d=a*b;
         }


Message édité par jean pierre decombes le 27-06-2002 à 22:13:47
Reply

Marsh Posté le 27-06-2002 à 22:17:43    

Explique brièvement le problème, ou message du compilateur, ça ira encore beaucoup plus vite ...

Reply

Marsh Posté le 27-06-2002 à 22:17:50    

Voir le chapitre sur le passage d'argument par pointeur.

Reply

Marsh Posté le 27-06-2002 à 22:20:13    

en fait il tourne mais on dirait qu'il n'y a rien dans mes variables.
du genre LA SOMME EST:(rien)
j'ai essaye de mettre un printf apres la saisie des valeurs et ca sort rien non plus...

Reply

Marsh Posté le 27-06-2002 à 22:23:00    

Oui, comme le disais Verdoux, c'est le passage des paramètres en argument qui ne vas pas, il faut que tu résonnes sur des pointeurs :
void passe(int a,int b,int *c,int *d)
 
plus tout les changements qui vont avec ...

Reply

Marsh Posté le 27-06-2002 à 22:24:16    

il faut que je mette une etoile sur tous ls pointeurs c'est ca?

Reply

Marsh Posté le 27-06-2002 à 22:30:19    

Oui exactement

Reply

Marsh Posté le 27-06-2002 à 22:30:19   

Reply

Marsh Posté le 27-06-2002 à 22:32:42    

Olivier51 a écrit a écrit :

Oui exactement




une referance n'est il pas plus propre ? et plus sur ?


---------------
télétunestel ouimélétuness sitélétunes mélétunetron [:koulip31] [:suri]
Reply

Marsh Posté le 27-06-2002 à 22:35:25    

Effectivement, maintenent tout dépend de ce qu'on veut faire


---------------
Le Tyran
Reply

Marsh Posté le 27-06-2002 à 22:35:33    

merci
 :)

Reply

Marsh Posté le 27-06-2002 à 22:37:16    

C'est vrai que dans ce cas une référence ferait l'affaire, et éviterait de faire plein de changement.

Reply

Marsh Posté le 27-06-2002 à 23:01:45    

sauf erreur de ma part, la fonction main() ne doit elle pas se trouver à la fin du code, apres toutes les autres fonctions ? (ça n'a rien a voir mais bon)


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 27-06-2002 à 23:04:18    

Non, tu n'es vraiment pas obligé

Reply

Marsh Posté le 27-06-2002 à 23:12:32    

koulip31 a écrit a écrit :

 
une referance n'est il pas plus propre ? et plus sur ?  




Y a pas de référence en C.

Reply

Marsh Posté le 28-06-2002 à 10:46:56    

T'appelles ça comment : void passe(int a,int b,int &c,int &d) ?

Reply

Marsh Posté le 28-06-2002 à 22:28:05    

Olivier51 a écrit a écrit :

T'appelles ça comment : void passe(int a,int b,int &c,int &d) ?




Code :
  1. /* test.c */
  2. void toto(int& i) {}
  3. int main() {
  4. int i = 0;
  5. toto(i);
  6. return 0;
  7. }


 
> gcc test.c
test.c:1: parse error before `&'
>


Message édité par verdoux le 28-06-2002 à 22:28:34
Reply

Marsh Posté le 28-06-2002 à 22:30:24    

Verdoux a écrit a écrit :

 
Y a pas de référence en C.




exact !
référence = C++ uniquement


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 28-06-2002 à 23:20:55    

jean pierre decombes a écrit a écrit :

 
..........
 printf("\n\t\t LA SOMME EST:",suv);
 printf("\n\t\t LE PRODUIT EST:",puv);
        printf("\n\t\t" );
 system(cmd);
 }
.........




 
Tes printf il manque pas un truc?
c'est pas plutot:
        printf("\n\t\t LA SOMME EST: %d",suv);
        printf("\n\t\t LE PRODUIT EST: %d",puv);
sinon c'est normal que sa affiche rien  :D  

Reply

Marsh Posté le 28-06-2002 à 23:51:43    

Olivier51 a écrit a écrit :

T'appelles ça comment : void passe(int a,int b,int &c,int &d) ?




 
void toto(int *a)
{
   *a = 2;
}
 
main()
{
  int a=1;
  toto(&a);             /* une adresse non? */
  printf("%d\n", a);
}
 
>./a.out
2
>


---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 29-06-2002 à 00:07:49    

jean pierre decombes a écrit a écrit :

ok
 
 
 /* Somme et produit de 2 nombres   */
 /* avec utilisation d'une procedure*/
 /*    */
 /* 27 juin 2002                  
 
 
 #include <stdio.h>
 
 char *cmd = "pause";
 
 
 void passe(int a,int b ,int c,int d);
 main()
 {
 int z,t,s,p,u,v,suv,puv;
 clrscr();
 printf("\n\t\t SAISIR LE PREMIER CHIFFRE" );
 printf("\n\t\t\t" );
 scanf("%d",&z);
 printf("\n\t\t SAISIR LE DEUXIEMME CHIFFRE" );
 printf("\n\t\t\t" );
 scanf("%d",&t);
 passe(z,t,s,p);
 printf("\n\t\t LA SOMME EST:",s);
 printf("\n\t\t LE PRODUIT EST:",p);
 printf("\n\t\t SAISIR LE TROISIEME CHIFFRE" );
 printf("\n\t\t\t" );
 scanf("%d",&u);
 printf("\n\t\t SAISIR LE QUATRIEME CHIFFRE" );
 printf("\n\t\t\t" );
 scanf("%d",&v);
 passe(u,v,suv,puv);
 printf("\n\t\t LA SOMME EST:",suv);
 printf("\n\t\t LE PRODUIT EST:",puv);
        printf("\n\t\t" );
 system(cmd);
 }
 
 void passe(int a,int b,int c,int d)
 { c=a+b;
   d=a*b;
         }




 

Code :
  1. #include <stdio.h>
  2. int somme_produit(int a, int b, int* somme, int* produit);
  3. int main(void)
  4. {
  5. int a=0;
  6. int b=0;
  7. int somme=0;
  8. int produit=0;
  9. /* Lecture de a et de b */
  10. [...]
  11. /* Calculs */
  12. if (somme_produit(a,b, &somme, &produit) != 1)
  13.   {
  14.    fprintf(stderr, "Y'a une couille !!!\n" );
  15.    return $code_quand_ya_un_probleme_et_je_ne_sais_plus_si_c'est_1_ou_0_ou_autre;
  16.   }
  17. /* Affichage */
  18. [...]
  19. /* Fin */
  20. return $code_qui_faut_quand_tout_marche_bien;
  21. }
  22. int somme_produit(int a, int b, int* somme, int* produit)
  23. {
  24. if (somme == NULL) return 0;
  25. if (produit == NULL) return 0;
  26. (*somme)=a+b;
  27. (*produit)=a*b;
  28. return 1;
  29. }


Message édité par darkoli le 29-06-2002 à 00:09:23

---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
Reply

Marsh Posté le 29-06-2002 à 10:05:29    

Ok, c'est peut-être parce que j'utilise des compilateurs C++ pour programmer en C ...
 
Pourtant il me semble que quand je programme avec TIGCC (pour programmer en C sur la TI89 et 92+) les référence marchent, et le compilateur est basé sur GCC !!!
 
A moins que l'erreur vienne de ta syntaxe, moi j'écrirais plutôt :  
void toto(int &i) {}  
que :
void toto(int& i) {}  

Reply

Marsh Posté le 29-06-2002 à 10:09:06    

Olivier51 a écrit a écrit :

 
void toto(int &i) {}  
que :
void toto(int& i) {}  
 




 
C la même chose


---------------
Le Tyran
Reply

Marsh Posté le 29-06-2002 à 10:44:51    

Olivier51 a écrit a écrit :

Ok, c'est peut-être parce que j'utilise des compilateurs C++ pour programmer en C ...
 
Pourtant il me semble que quand je programme avec TIGCC (pour programmer en C sur la TI89 et 92+) les référence marchent, et le compilateur est basé sur GCC !!!
 
A moins que l'erreur vienne de ta syntaxe, moi j'écrirais plutôt :  
void toto(int &i) {}  
que :
void toto(int& i) {}  
 




 
Ils ont dû ajouter des trucs non standards (pour le C).


---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
Reply

Marsh Posté le 29-06-2002 à 10:54:03    

je confirme, les références c'était une nouveauté du C++, selon ce que j'ai appris à l'école.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 02-07-2002 à 01:15:38    

C'est sûr !
-références
-class
-fonctions membres
-patrons
Tout ça c'est des nouveautés du C++ par rapport au C.
 
Si on fait du C avec un compilateur C++, comment sait-on qu'on ne fait que du C ?


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 02-07-2002 à 02:36:53    

#include <stdio.h>  
 

Code :
  1. char *cmd = "pause";
  2. void passe(int a,int b ,int c,int d); /* pkoi cette ligne ? */
  3. main()
  4. {
  5. int z,t,s,p,u,v,suv,puv;
  6. clrscr();
  7. printf("\n\t\t SAISIR LE PREMIER CHIFFRE" );
  8. printf("\n\t\t\t" );
  9. scanf("%d",&z);
  10. printf("\n\t\t SAISIR LE DEUXIEMME CHIFFRE" );
  11. printf("\n\t\t\t" );
  12. scanf("%d",&t);
  13. passe(z,t,s,p);
  14. printf("\n\t\t LA SOMME EST:",s);
  15. printf("\n\t\t LE PRODUIT EST:",p);
  16. printf("\n\t\t SAISIR LE TROISIEME CHIFFRE" );
  17. printf("\n\t\t\t" );
  18. scanf("%d",&u);
  19. printf("\n\t\t SAISIR LE QUATRIEME CHIFFRE" );
  20. printf("\n\t\t\t" );
  21. scanf("%d",&v);
  22. passe(u,v,suv,puv);
  23. printf("\n\t\t LA SOMME EST:",suv);
  24. printf("\n\t\t LE PRODUIT EST:",puv);
  25.        printf("\n\t\t" );
  26. system(cmd);
  27. }
  28. void passe(int a,int b,int c,int d)
  29. { c=a+b;
  30.   d=a*b;
  31.         }


 
Moi je ferais ça mais bon, j'ai pas fait de c depuis 7 ou 8 mois !!
 
rq : c pas du passage par reference mais par valeur ...
 

Code :
  1. #include <stdio.h>
  2. char *cmd = "pause";
  3. void passe(int a,int b,int *c,int *d)
  4. { *c=a+b;
  5.   *d=a*b;
  6.         }
  7. main()
  8. {
  9. int z,t,s,p,u,v,suv,puv;
  10. clrscr();
  11. printf("\n\t\t SAISIR LE PREMIER CHIFFRE" );
  12. printf("\n\t\t\t" );
  13. scanf("%d",&z);
  14. printf("\n\t\t SAISIR LE DEUXIEMME CHIFFRE" );
  15. printf("\n\t\t\t" );
  16. scanf("%d",&t);
  17. passe(z,t,&s,&p);
  18. printf("\n\t\t LA SOMME EST:",s);
  19. printf("\n\t\t LE PRODUIT EST:",p);
  20. printf("\n\t\t SAISIR LE TROISIEME CHIFFRE" );
  21. printf("\n\t\t\t" );
  22. scanf("%d",&u);
  23. printf("\n\t\t SAISIR LE QUATRIEME CHIFFRE" );
  24. printf("\n\t\t\t" );
  25. scanf("%d",&v);
  26. passe(u,v,&suv,&puv);
  27. printf("\n\t\t LA SOMME EST:",suv);
  28. printf("\n\t\t LE PRODUIT EST:",puv);
  29.        printf("\n\t\t" );
  30. system(cmd);
  31. }


Message édité par kvl le 02-07-2002 à 02:43:43
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed