voila, j´ai pas reussis a trouver quelle était la syntaxe pour le goto, si vous pouviez donner 1 exemple ce serai cool : )
pour cet exemple par exemple :
#include <math.h>
void main()
{
cout <<"combien d´euro t´as ? "<<endl;
int euro;
cin>>euro;
cout <<"tu as"<<euro*6.55<<"francs"<<endl;
char fin;
cout <<"tapez touche pour faire un autre calcul";cin>>fin;
}
et la je voudrai que, en tapant une touche sa revienne au debut du prog...
Essayes voir ça :
void main()
{
cout <<"combien d´euro t´as ? "<<endl;
int euro;
debut :
cin>>euro;
cout <<"tu as"<<euro*6.55<<"francs"<<endl;
char fin;
cout <<"Un autre calcul ? o/n";cin>>fin;
if(fin=="o") goto debut;
else close();
}
PAS BEAU LE GOTO, pas de la bonne programmation
void main()
{
//AJOUT (1) SNETCH
//Boucle infinie, mais tu peux rajouter un booléen
//ce dernier te permettra de sortir de la boucle
while(true)
{
//fin ajout SNETCH
cout <<"combien d´euro t´as ? "<<endl;
int euro;
cin>>euro;
cout <<"tu as"<<euro*6.55<<"francs"<<endl;
char fin;
cout <<"tapez touche pour faire un autre calcul";cin>>fin;
//AJOUT (2) SNETCH
}
//fin ajout Snetch
}
Snetch Posté le 14 décembre 2002 à 13:46:54
PAS BEAU LE GOTO, pas de la bonne programmation
void main()
{
//AJOUT (1) SNETCH
//Boucle normale, mais tu peux rajouter un booléen
//ce dernier te permettra de sortir de la boucle
int bOnContinue = 1;
while(bOnContinue == 1)
{
//fin ajout SNETCH
cout <<"combien d´euro t´as ? "<<endl;
int euro;
cin>>euro;
cout <<"tu as"<<euro*6.55<<"francs"<<endl;
char fin;
cout <<"tapez touche pour faire un autre calcul";cin>>fin;
//AJOUT (2) SNETCH
cout<<"appuyer sur ´0´(zéro) pour continuer (sinon, un autre chiffre):"<<endl;
cin>>bOnContinue;
}
//fin ajout Snetch
}
Bah la tu peux faire une fonction qui fais le calcul et puis tu l´appelles. Goto c du basic ca non(dsl g jamais fait de basic : $)
ouéé merci beaucoup !
ARF MALHEUREUX! JAMAIS DE GOTO!
ah tiens c´est le moment de poser la question, pourquoi jamais de goto ? sa fait ralentir ou sa fait des bugs ?
ah tiens c´est le moment de poser la question, pourquoi jamais de goto ? sa fait ralentir ou sa fait des bugs ?
C´est pas propre!
C´est pas de la belle programmation et si t´a un projet un peu gros tu risques beaucoup plus de faire des conneries qu´autre chose!
Regarde des sources C++, tu vera jamais l´ombre d´un goto alors cas EXCEPTIONNEL... (perso j´ai jamais vu)
Bref je sais que c´est ce que mes prof a l´IUT info ont appris en premier : )
goto = 0 au devoir : )
et puis on peu tous faire sans, donc pas la peine de faire un prog qui part dans tous les sens et qui devient illisible.
snif, j´ai l´impression d´etre un gros nb mais y a un truc que j´essaie de faire sans le goto mais j´y arrive pas, pour l´instant le programme c´est :
#include <math.h>
void main()
{
int boucle = 0;
while(boucle == 0)
{
cout <<"combien d´euro t´as ? "<<endl;
int euro;
cin>>euro;
cout <<"tu as"<<euro*6.55<<"francs"<<endl;
cout<<"tape ´0´ (zero) pour faire un autre calcul, autre chiffres pour quitter"<<endl;
cin>>boucle;
}
}
mais sa me parait impossible de remplacer le texte "tape ´0´ (zero) pour faire un autre calcul, autre chiffres pour quitter" par un truc plus simple mais où la réponse est attendu avec des lettres, du genre "un autre calcul ? o/n"
ah noon c´est bon j´ai trouvé lol, me disait que c´etait bizzare de pas pouvoire faire ça lol, pour ceux que sa interresse :
#include <math.h>
void main()
{
char boucle = ´o´;
while(boucle == ´o´)
{
cout <<"combien d´euro t´as ? "<<endl;
int euro;
cin>>euro;
cout <<"tu as"<<euro*6.55<<"francs"<<endl;
cout<<"autre calcul ? o/n"<<endl;
cin>>boucle;
}
}
void resultat()
{
int euro;
int francs;
int nombre1;
cout <<"combien deuro tas ? "<<endl;
cin>>euro;
francs = euro * 6;
cout <<"tu as "<< francs <<" francs"<<endl;
cout <<"Voulez vous refaire un clacul?(tapez 1 si oui ou 2 sinon)" <<endl;
cin >> nombre1;
if (nombre1==1)
{
resultat();
}
if (nombre1==2)
{
}
if (nombre1 ! = 1 && nombre1!=2)
{
}
}
void main()
{
int nombre;
cout <<"Voulez vous refaire un clacul?(tapez 1 si oui ou 2 sinon)" <<endl;
cin >> nombre;
if (nombre==1)
{
resultat();
}
if (nombre==2)
{
}
if (nombre!=1 && nombre!=2)
{
}
resultat();
}
en plus lourd avec des conditions if (pouvant d´ailleurs etre remplacees par des switch) ; )
Surtout JAMAIS DE GOTO!
Bon, vu que tout le monde l´a dit ; P
Quant à Zouave, moi je ferais un :
_cgets(char *buffer);
De conio.h
comment à marche est meilleur selon moi sur du DOS que le cin:
char buffer[257], *return_value;
return_value = _cgets(buffer);
_cgets retrera les lettres dans ton buffer jusqu´à ce que [enter] sera pressé, il accepte les backspaces, bref c´est génial.
Mais cepandant, y´a juste deux trucs de spécial:
buffer[0] contiendra la taille maxi du buffer.
Il doit être initialisé au tout début
buffer[1] contiendra la taille réelle du buffer.
Les lettres comenseront à buffer[2], mais le return du _cgets est l´adresse du buffer sans les deux cochonneries avant, si bien que return_value devient en gros ton vrai truc dans lequel tu entre ta réponse.
en gros, voici ton nouveau code:
void main()
{
char buffer[16+1+2], *return_value;
/* 16 : ne nombre de char
+1 : le char NULL
+2 : les deux buffer[0], buffer[1]
buffer[0]= sizeof(buffer)-2; //Init buffer[0]
while(strcmp(return_value, "o")==1)
{
cout <<"combien d´euro t´as ? "<<endl;
int euro;
cin>>euro;
cout <<"tu as"<<euro*6.55<<"francs"<<endl;
cout<<"Voulez vous quitter? o = oui/n = non"<<endl;
return_value = _cgets(buffer);
}
}
Ca devrait aller comme tu le veux, mais bon, comme toujours, il y aurait peut-être un peu d´erreurs
Kelios
---------
je parie qu il a fait du basic avant lui ! !!
ouai avec le goto, on peut quand même faire des trucs assez chiadé et tarabisquoté ; j´ai pas d´exemples a vous montrer, mais c´est le genre de trucs assez chiant à faire sans ces bon vieux goto.
La fiabilité de Linux(Le noyau, donc Linux tout cour) n´est plus à demontrer et pourtant certains fichiers sont gavé de goto.Mon pote Kernighan disait toujours : goto ok Mais goto toujours en avant et pas plus de 10 lignes il disait plein d´autre trucs assez interessant aussi; j´essairai de retrouver ces examples de goto bien foutu.
Ritchie aussi disait des trucs pas mal : )
Jamais de goto ? ????
Bon je l´ai aussi appris a l´ecole.
gna gna gna, pas casser la programmation structuré etc . ..
Bon alors, betement je me suis mis a adopter la loi pas de goto . ...
Pis je suis tombé sur des sources ou l´utilité du goto etait interressante. Je m´explique :
1 goto = Maxi 4 octect . ....
Bon alors certains avec leur grosse machine annoncent que c´est pas la place qui manque etc.
Pis l´a ou je l´ai vu c´etait plutot agreable.
Je vous donne la structure :
Fonction()
{
if( ! Initialise1( &1 ))
{
goto Clean_Fonction;
}
if( ! Initialise2( &2 ))
{
goto CleanFonction
}
return 1; // ou TRUE
CleanFonction:
Libere(Module1);
Libere(Module2);
return FALSE;
}
Perso, j´aime bien cette structure de programme ( enfin bon )
Voila, je ne l´impose pas, mais je vous demande d´y reflechir au calme. Tentez de vous faire vos regles a vous et pas de suivre celle dicté par d´autres ( j´en ai fait l´experience, on fini tres bete et tres "robot" sans regarder de l´autre coté ede la montagne)
Moi je le verrai bien comme ça ton code :
bool Fonction()
{
bool resultat = TRUE;
if( ! Initialise1( &1 ) )
{
Clean_Fonction();
resultat = FALSE;
}
else if( ! Initialise2( &2 ) )
{
CleanFonction();
resultat = FALSE;
}
return resultat;
}
void CleanFonction();
{
Libere(Module1);
Libere(Module2);
}