elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Reducir stack con expresiones aritméticas en prefix.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Reducir stack con expresiones aritméticas en prefix.  (Leído 2,347 veces)
arctic_kooks

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Reducir stack con expresiones aritméticas en prefix.
« en: 27 Junio 2011, 03:01 am »

Realice este programa, pero ahora tengo que resolverlo, me podrían ayudar?  :-\

Tengo este programa, sobre este tengo que Reducir el stack con expresiones aritmeticas:

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include <cstdlib>
#include <iostream>

using namespace std; //Habilita funciones cout, cin, endl

char stack[20];
int top = -1;
char pop();
void push(char item);

int prcd(char symbol) {
switch(symbol) {
case '+':
case '-':
return 2;
case '*':
case '/':
return 4;
case '^':
return 6;
case '(':
case ')':
case '#':
return 1;
}

}

int isoperador(char symbol) {
switch(symbol) {
case '+':
case '-':
case '*':
case '/':
case '^':
case '(':
case ')':
return 1;
default:
return 0;
}

}

void convertirp(char infix[],char prefix[]) {
int i,symbol,j=0;
char test[20];

infix=strrev(infix);
stack[++top]='#';

for(i=0;i<strlen(infix);i++) {
symbol=infix;
if(isoperador(symbol)==0) {
prefix[j]=symbol;
j++;
}else {
if(symbol==')') {
push(symbol);
}else if(symbol=='(') {
while(stack[top]!=')') {
prefix[j]=pop();
j++;
}
pop();
}else {
if(prcd(symbol)>prcd(stack[top])) {
push(symbol);
}else {
while(prcd(symbol)<=prcd(stack[top])) {
prefix[j]=pop();
j++;
}
push(symbol);
}//fin else.
}//fin else.
}//fin else.
}//fin for.

while(stack[top]!='#') {
prefix[j]=pop();
j++;
}
prefix[j]='\0';
prefix=strrev(prefix);


}

int main() {
char infix[20],prefix[20];
//printf("Entra la función en infix:\n");
//gets(infix);
cout<<"-------------------------------…
cout<<"Expresión en infix: ";
cin>>infix;
convertirp(infix,prefix);
cout<<"---------------Resultados------…
//printf("El prefix es:\n");
//puts(prefix);
cout<<"El prefix es: + : "<<prefix<<endl;
getch();

return 0;

}

void push(char item) {
top++;
stack[top]=item;

}

char pop() {
char a;
a=stack[top];
top--;
return a;

//system("pause");
}


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
4 operaciones aritmeticas en Java Eclipse
Java
Emili 4 9,446 Último mensaje 12 Octubre 2009, 07:48 am
por forerito
operaciones aritmeticas en JAVA ECLIPSE
Java
leliCabello 0 6,907 Último mensaje 12 Octubre 2009, 02:47 am
por leliCabello
[Source-Actualizacion 6] Operaciones aritmeticas con Hex, Oct, Binario y Decimal
Programación Visual Basic
BlackZeroX 1 2,342 Último mensaje 26 Septiembre 2010, 09:57 am
por VanHan
Calculadora de expresiones aritmeticas
Java
Grave 5 8,345 Último mensaje 27 Abril 2016, 19:19 pm
por MCKSys Argentina
Operaciones aritmeticas de una ristra con recursividad
Java
Javator 4 3,527 Último mensaje 25 Marzo 2014, 23:22 pm
por 1mpuls0
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines