Chaine de caractere recalcitrante

Signaler
Messages postés
370
Date d'inscription
lundi 1 avril 2002
Statut
Membre
Dernière intervention
11 février 2010
-
Messages postés
370
Date d'inscription
lundi 1 avril 2002
Statut
Membre
Dernière intervention
11 février 2010
-
AIDER moi siouplaaaaaaaaaiiit je vais peter un cable ...

Je dev sous VC++ 6

Creer un nouveau projet :
coller ce code.Bien qu'ilparraisse complique il n'en est rien pour mon probleme. En effet je ne comprend pas pourquoi la ligne avec les smileys ne veux pas s'afficher.
ATTENTION apparement je me suis rendu compte en faisant apercu de mon message, que l'operateur plus n'apparaissait pas

Donc quand vous rencontrez deux valeurs qui se suivent il y à un plus entre, comme 'C 1' 'N 1' '(FN-1) 1 1' (la il y deux plus, car trois valeurs) ...

Merci d'avance !

#include

int Go();
double Puiss(int N,int P);

int main()
{
int i;
Go();
cout << "fin";
cin >> i;
return 0;
}

int Go()
{

int N =4 ;
long FN =0 ;
int C =0, K =0;
int T =0;
double P =0;
FN = 1 ;
for ( K = 2; K<N+1; K++)
FN = FN * K ;
char *Combi = new char[ (FN-1) +1 +1];
Combi[0]=' ';
Combi[FN+1] = '\0'; //bon je le fais une fois
Combi[1]='0';


int *plST = new int[FN-1];
plST[0] = N + 1;
for (K=1; K<FN; K++)
plST[K] = 0 ;
int *plC = new int[N+1];
for (K=1; K<N; K++)
plST[K] = 0 ;
long *plEXIST = new long[FN];
for (K=1; K<FN+1; K++)
plST[K] = 0 ;

T = 0;
C = 2;
P = Puiss(N, FN - 1 );
plEXIST[1] =0;
for( K = 1; K<=N; K++ )
plEXIST[1] = plEXIST[1] + K * Puiss (10,K - 1 );

for (T = 1; T<FN+1; T++) //la je n'y touche pas
Combi[T] = '0' ;
Combi[FN+1]='\0'; // j le refais encore une fois pour etre sur
cout << Combi; // :( :( :( :( ca ne marche pas .. PK ?

WC:

C = C + 1;
P = P - Puiss (N ,FN - C);
for (T = C; T>FN-1; T++ ){
P = P + plST[T] * Puiss (10 ,FN - 1 - T);
plST[T] = 0;
}

do {
C = C - 1;
plST[C] = (plST[C] + 1) % N ;

Combi[C] = 48 + plST[C];
if (plST[C] == plST[C - 1] && plST[C])
goto WC;
} while (!plST[C] || C==0);
if (C==0) {
cout << "Toutes les possibilités ont été testées.";
return 0;
}

for (K = 1;K<N+1; K++)
plC[K] = N + 1 - K;

C = 0;

K=0;
while (K<FN)
{
K++;
if (plST[K] == plST[K - 1]) {
C = K;
K = FN - 1;
continue;
}

T = plC[plST[K] + 1];
plC[plST[K] + 1] = plC[plST[K] + 1 - N * int((plST[K] + 1) / N) + 1];
plC[plST[K] + 1 - N * int((plST[K] + 1) / N) + 1] = T;
plEXIST[K + 1] = 0;
for (T = 1; T<=N; T++)
plEXIST[K + 1] = plEXIST[K + 1] + plC[T] * Puiss(10,N - T);

for (T = 1; T<=K; T++) {
if (plEXIST[K + 1] == plEXIST[T])
{ C = K + 1;
T = K;
K = FN;
}
}
}

if (C) goto WC;

delete [] plST;
delete [] plC;
delete [] plEXIST;

cout << "Fin";
return 0;
}

double Puiss( int N, int P) {
double Ps = 1;
for (int i=1; i<P+1; i++) {
Ps *= N;
}
return Ps;
}

4 réponses

Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006

Tu as mis en breakpoint sur la ligne qui te pose problème et fait tourner le programme sous le debugger ?

Kaid - kaid.fr.st
Messages postés
370
Date d'inscription
lundi 1 avril 2002
Statut
Membre
Dernière intervention
11 février 2010

Bien sur que oui, mais bizarrement le cout ne fonctionne pas ...
J'ai meme essayer de mettre :
cout << "grrr";
juste en dessous pour voir ca n'affiche rien ! (je suis sur que le debugger asse dessus ! ) alors la je ne comprend plus rien ! ca devrait normalement l'afficher sans probleme ca !
:(((

-={[ Zeroc00l ]}=-
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006

Tu peux essayer d'afficher la valeur ASCII de tous les caractères de ta chaine pour voir s'il n'y a pas un zéro qui traine.
J'espère que ton problème n'est pas l'oubli d'un simple 'endl'.

Kaid - kaid.fr.st
Messages postés
370
Date d'inscription
lundi 1 avril 2002
Statut
Membre
Dernière intervention
11 février 2010

'endl' c koi ? c pareil que '\0' ?
Tu as mal regarde ma source ! meme : cout << "grrr";
ne marche pas ! Comment expliquer ca ?
-={[ Zeroc00l ]}=-