portée globale/locale dans fonction
bonjour à tous!
La fonction FcStrAlz analyse une chaine "1234..".
Si un chiffre est présent devant la fonction un drapeau "0" empêche l'apparition d'une ligne.
Mais la valeur du drapeau ne sort pas de la fonction...8O
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
//analyse de chaine
#include <iostream>
#include <string>
using namespace std;
string FcStrAlz(string StrAlz,string StrItm)//fonction confrontant
{//Fc/déb 13/09/11 //un verrou "1"..."n"
cout<<"-----------------------"<<endl; //avec sa présence
int taille = StrAlz.size (); //dans la chaine StrAlz
int t=0; //si verrou la ligne s'efface
string ElmStrAlz,stp="0"; //si verrou absent ou ""
cout<<" /d/<"<<stp<<">"<<endl; //la ligne apparaît
while (t<taille)
{ElmStrAlz=StrAlz.substr(t,1);
t++;
cout<<ElmStrAlz<<" ";
if (ElmStrAlz==StrItm)
{stp="0";break;} //si 0 efface ligne
else stp="1"; //si 1 igne apparait
}
cout<<"/z/<"<<stp<<">"<<endl;
cout<<"------------------------"<<endl;
return stp;
}//Fc/fin 13/09/11
//prg essai
string StrAlz="123456";//chaine des verrous possibles
string Alz,StrItm,stp;
int main ()
{
cout<<"ei-<"<<stp<<">-"<<endl; //état stp entrée int main
StrItm="1"; //verrou "1" actionnant la L39
Alz=FcStrAlz(StrAlz,StrItm);
cout<<"1ex-<"<<stp<<">-ex pourquoi TOUJOURS VIDE!"<<endl; //état stp sortie de fonction
if (stp=="0") //ligne actionnée par L36
{cout<<"§1 effacé"<<endl;}
if (stp=="1") //cette ligne fonctionne pas car L36 a valeur "1"
{cout<<"§1 apparaît"<<endl;}
//ici pas de verrou 3 installé(on pourrait mettre StrItm="";)
Alz=FcStrAlz(StrAlz,StrItm);
cout<<"3ex-<"<<stp<<">-ex pourquoi toujours vide!"<<endl; //état stp sortie de fonction
if (stp=="0") //ligne fonctionne pas car L44 sans valeur
{cout<<"§3 effacé"<<endl;}
if (stp=="1") //ligne fonctionne car L44 sans valeur
{cout<<"§3 apparaît"<<endl;}
cout<<"0 pour sortir de int main";int zer;cin>>zer;
} |
Où est l'erreur?
Merci pour vos lumières.
Sen.