Calculatricee postfixé en concept des piles
elhjaj
Messages postés
3
Statut
Membre
-
belhauss -
belhauss -
Bonjour, URGENTTTTTTTTTTTTTTT
j'ai un petit probleme au fonctionnement de ce prog
j'ai fé seulement l'operation de l'addition et si ca marche les autres operations vont etre aussi à marche
j'ai une pile utiliséé pour calculer 2 valeurs ex: d'execution
2
9
+
11
j'ai probleme à retourner le résultat et au niveau de conversion de chaine de caracter en entier
si qq peut m'aider n'hesitez passss URGENTTT
voici le code Complet:::::
#include<iostream.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#define taille 50
typedef char typeEle;
typedef struct{
int som;
typeEle t[taille];
} pile;
bool EstVide(pile &p){
return (p.som==-1);
}
bool EstPleine(pile &p){
return (p.som==taille-1);
}
void Initialise(pile &p){
p.som=-1;
}
void Empiler(pile &p,typeEle v){
if(EstPleine(p)!=1)
{
p.som++;
p.t[p.som]=v;
}
}
void Depiler(pile &p){
if(EstVide(p)!=1)
p.som--;
}
typeEle Sommet(pile &p){
return (p.t[p.som]);
}
int calc(pile &p){
int i=0,val1=0,val2=0;int nbre;
int res=0;
char*p_conv=NULL;
char chaine[3];
/*val1=Sommet(p);
Depiler(p);
val2=Sommet(p);
Depiler(p);
res=val1+val2*/
for(i=0;i<=2;i++)
{
//cout<<"donner le car "<<endl;
cin>>chaine[i];
nbre=(int)strtol(&chaine[i],&p_conv,10);
if(!*p_conv){
//chaine[i]=nbre;
Empiler(p,nbre);}
else {
switch(chaine[i]){
case '+':{while(!EstVide(p)){
res=res+Sommet(p);
Depiler(p);
}
Empiler(p,res);
return res;
break;}
}
}
}
return res;
}
int main()
{
pile k;
//char c[1];
char chaine[4];
int r;
typeEle v,somme;
int choix;
do
{
cout<<" MENU "<<endl;
cout<<" donner votre choix"<<endl;
cout<<"1- pour initialiser"<<endl;
cout<<"2- pour empiler "<<endl;
cout<<"3- pour depiler"<<endl;
cout<<"4- pour renvoyer le sommet de la pile"<<endl;
cout<<"5- pour calculer l'expression "<<endl;
cout<<"0- pour sortir"<<endl;
cin>>choix;
switch(choix)
{
case 1:{
Initialise(k);
}break;
case 2:{
cout<<"donner la valeur à empiler"<<endl;
cin>>v;
Empiler(k,v);
}break;
case 3:{
Depiler(k);
}break;
case 4:{
// somme=Sommet(k);
cout<<"sommet="<<Sommet(k)<<endl;
}break;
case 5:{
//cout<<"donner un caracter "<<endl;
/*cin>>chaine[0];
//r=calc(k,chaine);
cin>>chaine[1];
//r=calc(k,chaine);
cin>>chaine[2];*/
r=calc(k);
cout<<"resultat est ="<<r<<endl;
}break;
}
}
while(choix!=0);
return (0);
}
j'ai un petit probleme au fonctionnement de ce prog
j'ai fé seulement l'operation de l'addition et si ca marche les autres operations vont etre aussi à marche
j'ai une pile utiliséé pour calculer 2 valeurs ex: d'execution
2
9
+
11
j'ai probleme à retourner le résultat et au niveau de conversion de chaine de caracter en entier
si qq peut m'aider n'hesitez passss URGENTTT
voici le code Complet:::::
#include<iostream.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#define taille 50
typedef char typeEle;
typedef struct{
int som;
typeEle t[taille];
} pile;
bool EstVide(pile &p){
return (p.som==-1);
}
bool EstPleine(pile &p){
return (p.som==taille-1);
}
void Initialise(pile &p){
p.som=-1;
}
void Empiler(pile &p,typeEle v){
if(EstPleine(p)!=1)
{
p.som++;
p.t[p.som]=v;
}
}
void Depiler(pile &p){
if(EstVide(p)!=1)
p.som--;
}
typeEle Sommet(pile &p){
return (p.t[p.som]);
}
int calc(pile &p){
int i=0,val1=0,val2=0;int nbre;
int res=0;
char*p_conv=NULL;
char chaine[3];
/*val1=Sommet(p);
Depiler(p);
val2=Sommet(p);
Depiler(p);
res=val1+val2*/
for(i=0;i<=2;i++)
{
//cout<<"donner le car "<<endl;
cin>>chaine[i];
nbre=(int)strtol(&chaine[i],&p_conv,10);
if(!*p_conv){
//chaine[i]=nbre;
Empiler(p,nbre);}
else {
switch(chaine[i]){
case '+':{while(!EstVide(p)){
res=res+Sommet(p);
Depiler(p);
}
Empiler(p,res);
return res;
break;}
}
}
}
return res;
}
int main()
{
pile k;
//char c[1];
char chaine[4];
int r;
typeEle v,somme;
int choix;
do
{
cout<<" MENU "<<endl;
cout<<" donner votre choix"<<endl;
cout<<"1- pour initialiser"<<endl;
cout<<"2- pour empiler "<<endl;
cout<<"3- pour depiler"<<endl;
cout<<"4- pour renvoyer le sommet de la pile"<<endl;
cout<<"5- pour calculer l'expression "<<endl;
cout<<"0- pour sortir"<<endl;
cin>>choix;
switch(choix)
{
case 1:{
Initialise(k);
}break;
case 2:{
cout<<"donner la valeur à empiler"<<endl;
cin>>v;
Empiler(k,v);
}break;
case 3:{
Depiler(k);
}break;
case 4:{
// somme=Sommet(k);
cout<<"sommet="<<Sommet(k)<<endl;
}break;
case 5:{
//cout<<"donner un caracter "<<endl;
/*cin>>chaine[0];
//r=calc(k,chaine);
cin>>chaine[1];
//r=calc(k,chaine);
cin>>chaine[2];*/
r=calc(k);
cout<<"resultat est ="<<r<<endl;
}break;
}
}
while(choix!=0);
return (0);
}
A voir également:
- Calculatricee postfixé en concept des piles
- Piles manette wii - Forum Wii
- Piles manetttes de Wii - Forum Wii
- Faut il mettre des piles rechargeables dans un téléphone fixe ✓ - Forum telephonie fixe
- Alcatel f860 mettre les piles ✓ - Forum telephonie fixe
- Piles de la manette wii ✓ - Forum Bureautique