Process returned 255(0xff)
nad-ben
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
slt je suis entrain de faire un programme en 'c' qui vise a évaluer une expression arithmétique , n'ayant pas vraiment avancer dans le programme je décide quand même de compiler question de voir a peu-prés si sa marche sans problème, je compile et je lance l'exécutable ,je rentre le nombre puis quand je rentre l'opérateur le programme cesse de fonctionner et il affiche ce message d'erreur ''Process returned 255 (0xFF)"
voici mon code ne pas prendre compte de la fin du code juste pourquoi je ne peux pas saisir l'opérateur voici mon code merci d'avance j'espère une réponse de votre part au plus brève délai </code>
typedef struct
{
int T[ 10];
int nb;
} pile ;
pile A;
typedef struct
{
char k[10];
char oper;
} pile2;
pile2 B;
pile innitialiser1()
{ pile A;
A.nb=0;
return A;
}
pile2 innitialiser2()
{ pile2 B;
B.oper=0;
return B;
}
pile empiler1( pile A ,int x)
{
A.T[A.nb]=x;
A.nb++;
return A;
}
int accedersomet1 (pile A)
{
int x;
x=A.T[A.nb-1];
return x;
}
int accedersomet2 (pile2 B)
{
int x;
x=B.k[B.oper-1];
return x;
}
pile2 empiler2(pile2 B ,char d)
{
B.k[B.oper]=d;
B.oper++;
return B;
}
int depiler1(pile*A)
{
int x;
x=A->T[A->nb-1];
A->nb--;
return x;
}
char depiler2(pile2*B)
{
char op;
op=B->k[B->oper-1];
B->oper--;
return op;
}
int main()
{
int m,n,res,res2,resultat; char operateur;
printf("entrer votre operation arithmetique\n");
pile innitialiser1();
scanf("%d",&m);
empiler1(A,m);
pile innitialiser2();
scanf("c",&operateur);
empiler2(B,operateur);
while(operateur != '=')
{
scanf("%d",&n);
pile*empiler1(A,n);
if ((operateur='*') || (operateur='/'))
{
n=depiler1(n);
operateur=depiler2(operateur);
m=depiler1(m);
switch(operateur)
{
case '*': res=m*n;
case '/': res=m/n;
}
}
else
{scanf("%c",&operateur);
pile2*empiler2(B,operateur);
}
}
accedersomet1( A);
depiler1(n);
accedersomet2(B);
char*depiler2(B);
accedersomet1(A);
depiler1(m);
switch(operateur)
{
case'+': res2=m+n;
case'-': res2=m-n;
}
res2=n+m;
resultat=res+res2;
printf("%d",&resultat);
}
</code>
voici mon code source
voici mon code ne pas prendre compte de la fin du code juste pourquoi je ne peux pas saisir l'opérateur voici mon code merci d'avance j'espère une réponse de votre part au plus brève délai </code>
typedef struct
{
int T[ 10];
int nb;
} pile ;
pile A;
typedef struct
{
char k[10];
char oper;
} pile2;
pile2 B;
pile innitialiser1()
{ pile A;
A.nb=0;
return A;
}
pile2 innitialiser2()
{ pile2 B;
B.oper=0;
return B;
}
pile empiler1( pile A ,int x)
{
A.T[A.nb]=x;
A.nb++;
return A;
}
int accedersomet1 (pile A)
{
int x;
x=A.T[A.nb-1];
return x;
}
int accedersomet2 (pile2 B)
{
int x;
x=B.k[B.oper-1];
return x;
}
pile2 empiler2(pile2 B ,char d)
{
B.k[B.oper]=d;
B.oper++;
return B;
}
int depiler1(pile*A)
{
int x;
x=A->T[A->nb-1];
A->nb--;
return x;
}
char depiler2(pile2*B)
{
char op;
op=B->k[B->oper-1];
B->oper--;
return op;
}
int main()
{
int m,n,res,res2,resultat; char operateur;
printf("entrer votre operation arithmetique\n");
pile innitialiser1();
scanf("%d",&m);
empiler1(A,m);
pile innitialiser2();
scanf("c",&operateur);
empiler2(B,operateur);
while(operateur != '=')
{
scanf("%d",&n);
pile*empiler1(A,n);
if ((operateur='*') || (operateur='/'))
{
n=depiler1(n);
operateur=depiler2(operateur);
m=depiler1(m);
switch(operateur)
{
case '*': res=m*n;
case '/': res=m/n;
}
}
else
{scanf("%c",&operateur);
pile2*empiler2(B,operateur);
}
}
accedersomet1( A);
depiler1(n);
accedersomet2(B);
char*depiler2(B);
accedersomet1(A);
depiler1(m);
switch(operateur)
{
case'+': res2=m+n;
case'-': res2=m-n;
}
res2=n+m;
resultat=res+res2;
printf("%d",&resultat);
}
</code>
voici mon code source
A voir également:
- Process returned -1073741819
- Process hacker - Télécharger - Divers Utilitaires
- Process explorer - Télécharger - Informations & Diagnostic
- Undelivered mail returned to sender traduction ✓ - Forum Mail
- Hidden process finder - Télécharger - Confidentialité
- Item returned from customs traduction - Forum C#
2 réponses
Bonjour,
La ligne suivante n'est pas correcte :
if ((operateur='*') || (operateur='/'))
Il faut écrire :
if ((operateur=='*') || (operateur=='/'))
sinon le caractère '*' ou '/' est affecté à la variable operateur et ensuite évaluée par rapport à 0.
La ligne suivante n'est pas correcte :
if ((operateur='*') || (operateur='/'))
Il faut écrire :
if ((operateur=='*') || (operateur=='/'))
sinon le caractère '*' ou '/' est affecté à la variable operateur et ensuite évaluée par rapport à 0.
Bonjour,
Tu t'es trompé dans l'utilisation de la balise "code". Donc ton code reste illisible. C'est <*code c>ici je mets le code<*/code> (sans l'étoile).
Sinon plusieurs erreurs que tu aurais pu voir (pour certaines) en lisant les messages de ton compilateur.
pile A;
Pourquoi déclarer une variable globale ? A enlever.
De même pour pile B. Il vaut mieux utiliser des variables locales et les passer en argument.
pile innitialiser1();
Cela n'est pas correct. Plutôt : pile A = innitialiser1();
Pour info, initialiser s'écrit avec un seul "n".
Même remarque pour : pile innitialiser2();
scanf("c",&operateur);
Ce n'est pas "c" mais "%c".
if ((operateur='*') || (operateur='/'))
L'opérateur de comparaison est == et non =.
pile*empiler1(A,n);
Que veux-tu faire ?? Si c'est pour empiler : empiler1(A,n); tout simplement.
case '*': res=m*n;
Il faut breaker les cases...
=>
switch(operateur)
{
case'+': res2=m+n;
case'-': res2=m-n;
}
res2=n+m;
Est-ce normal de refaire res2=n+m; en dehors du switch ???
Il y a d'autres erreurs similaires. Je te laisse donc relire ton code, corriger celles que je t'ai signalées, et celles qui sont similaires.
Ensuite, reposte ton code corrigé en faisant attention aux balises.
Cdlt,
Tu t'es trompé dans l'utilisation de la balise "code". Donc ton code reste illisible. C'est <*code c>ici je mets le code<*/code> (sans l'étoile).
Sinon plusieurs erreurs que tu aurais pu voir (pour certaines) en lisant les messages de ton compilateur.
pile A;
Pourquoi déclarer une variable globale ? A enlever.
De même pour pile B. Il vaut mieux utiliser des variables locales et les passer en argument.
pile innitialiser1();
Cela n'est pas correct. Plutôt : pile A = innitialiser1();
Pour info, initialiser s'écrit avec un seul "n".
Même remarque pour : pile innitialiser2();
scanf("c",&operateur);
Ce n'est pas "c" mais "%c".
if ((operateur='*') || (operateur='/'))
L'opérateur de comparaison est == et non =.
pile*empiler1(A,n);
Que veux-tu faire ?? Si c'est pour empiler : empiler1(A,n); tout simplement.
case '*': res=m*n;
Il faut breaker les cases...
=>
case '*' : res=m*n; break;
switch(operateur)
{
case'+': res2=m+n;
case'-': res2=m-n;
}
res2=n+m;
Est-ce normal de refaire res2=n+m; en dehors du switch ???
Il y a d'autres erreurs similaires. Je te laisse donc relire ton code, corriger celles que je t'ai signalées, et celles qui sont similaires.
Ensuite, reposte ton code corrigé en faisant attention aux balises.
Cdlt,