petit prog en C qui ne marche pas - C++ - Programmation
Marsh Posté le 27-06-2002 à 22:11:39
Mets le sur le forum ... ça ira plus vite !!!
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;
}
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 ...
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 ESTrien)
j'ai essaye de mettre un printf apres la saisie des valeurs et ca sort rien non plus...
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 ...
Marsh Posté le 27-06-2002 à 22:24:16
il faut que je mette une etoile sur tous ls pointeurs c'est ca?
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 ?
Marsh Posté le 27-06-2002 à 22:35:25
Effectivement, maintenent tout dépend de ce qu'on veut faire
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.
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)
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.
Marsh Posté le 28-06-2002 à 10:46:56
T'appelles ça comment : void passe(int a,int b,int &c,int &d) ?
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 :
|
> gcc test.c
test.c:1: parse error before `&'
>
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
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
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
>
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 :
|
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) {}
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
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).
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.
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 ?
Marsh Posté le 02-07-2002 à 02:36:53
#include <stdio.h>
Code :
|
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 :
|
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?