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 EST
rien)
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?