pkr 0 Denunciar post Postado Junho 2, 2006 Dae galera, to precisando montar um programinha em C++ modo console mesmo, que trabalhe com Notação polonesa....o ruim eh que nao entendi mto bem a materia...e to sem tempo pra montar algo completo, preciso de um programa em q você insira uma função infixa e converta para postfixa.....entao se alguem tiver algum codigo ae e puder me passar eu agradeçovaleu! Compartilhar este post Link para o post Compartilhar em outros sites
agj 0 Denunciar post Postado Junho 2, 2006 niguém vai te passar o codigo completo, pois esse não eh o objetivo do forum.....manda a tua dúvida ai, que ai podemos te ajudar sem problemas.....uma dica.....use o conceito de pilhas....fiz isso uma vez eh bem simples. Compartilhar este post Link para o post Compartilhar em outros sites
pkr 0 Denunciar post Postado Junho 2, 2006 minha duvida eh total....pois viajei no assunto, nao sei nem por onde começar a fazer o dito programa, sei q a parada eh com pilha e struct etc, mas nao sei como usa a notação, nao sei pra que ela serve hehhemas beleza, vo fica ai se alguem quise da uma explicada ou tive um codigo beleza Compartilhar este post Link para o post Compartilhar em outros sites
agj 0 Denunciar post Postado Junho 2, 2006 olha cara você precisa estudar mais, que tipo de profissional você pretende ser?????? corre atrás véio....ou você acha que sempre vão te entregar as coisas de mão beijada.....cara já pesquisou no google???? vai lah então que ta cheio de informação é só querer aprender....e outra você não vai aprender se não botar a mão na massa.....vai lah pesquisa e estuda ..... e se você tiver uma dúvida de sintaxe que tenha tentado fazer e não conseguiu....manda ai que nós ajudamos.....eu poderia te mandar esse programa, pois eu já fiz ele.... mas eu não vou ganhar nada com isso e nem você.....blza cara....e estuda ..... Compartilhar este post Link para o post Compartilhar em outros sites
ricci ottadnot 4 Denunciar post Postado Junho 4, 2006 aee.. nosso amigo agj ja disse tudo.. q tal dar uma olhada nesta apostila: http://www.facens.br/alunos/material/Crmor...o_de_pilhas.doc mto boa.. eu, em minha faculdade naum tive uma tao boa assim.. mas você vai ver que eh facil.. f*** eh qdo você entrar no conceito de arvores... uhhhuuuu por isso q eu amo programação.. mto loko PKR.. leve estas criticas como algo construtivo.. nada de inhein inhein inhein... rs flw Compartilhar este post Link para o post Compartilhar em outros sites
pkr 0 Denunciar post Postado Junho 4, 2006 dae valeu pela apostila...to dando uma olhada!! <_< Compartilhar este post Link para o post Compartilhar em outros sites
Mauricio de Wallau 0 Denunciar post Postado Junho 14, 2006 Já conseguiu o código fonte? Compartilhar este post Link para o post Compartilhar em outros sites
pkr 0 Denunciar post Postado Junho 14, 2006 não... Compartilhar este post Link para o post Compartilhar em outros sites
Mauricio de Wallau 0 Denunciar post Postado Junho 20, 2006 Pega aí: Mas eu quero uma retribuição. 1° O programa aparece o nome do seu criador , tira fora no codigo fonte 2° Ele não mostra o calculo no fina descobre por que. 3° Me manda depois de feito. mauriciowallau@gmail.com #include <iostream> #include <stdlib.h> #include <math.h> #define TAM 255 #define upper© ( © + 'A' - 'a' ) using namespace std; //---------------------- Prototipos int get_prioridade( char ); float avalia( char, float, float ); //---------------------- Classes template <class T> class Pilha{ int topo; T p[TAM]; public: Pilha( void ); int vazia( void ); int insere( T ); int retira( T * ); }; template <class T> class Lista{ int inicio; int fim; int num; T l[TAM]; public: Lista( void ); int vazia( void ); int insere( T ); int retira( T * ); }; //--------------- Metodos da Classe template <class T> Pilha<T>::Pilha( void ) { topo = 0; } template <class T> int Pilha<T>::vazia( void ) { if( topo == 0 ) return 1; else return 0; } template <class T> int Pilha<T>::insere( T x ) { if( topo == TAM ) return 0; // Pilha esta cheia topo++; p[topo] = x; return 1; } template <class T> int Pilha<T>::retira( T *x ) { if( topo == 0 ) return 0; // Pilha vazia *x = p[topo]; topo--; return 1; } template <class T> Lista<T>::Lista( void ) { inicio = 0; fim = -1; num = 0; } template <class T> int Lista<T>::vazia( void ) { if( num == 0 ) return 1; else return 0; } template <class T> int Lista<T>::insere( T x ) { if( num == TAM ) return 0; // Lista cheia fim = (fim+1 == TAM) ? 0 : fim+1; l[fim] = x; num++; return 1; } template <class T> int Lista<T>::retira( T *x ) { if( num == 0 ) return 0; // Lista vazia *x = l[inicio]; inicio = (inicio+1 == TAM) ? 0 : inicio+1; num--; return 1; } //-------------------Procedimentos inline int is_operando( char ch ) { if( ( ch >= 'a' && ch <= 'z' ) || ( ch >= 'A' && ch <= 'Z' ) ) return 1; // Eh letra else if( ch >= '0' && ch <= '9' ) return 1; // Eh digito else return 0; // Nao eh letra nem digito } inline int is_operador( char ch ) { if( ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '^' || ch == '(' || ch == ')' ) return 1; else return 0; } int get_prioridade( char ch ) { switch( ch ){ case '+': return 1; case '-': return 2; case '*': return 3; case '/': return 3; case '^': return 4; case '(': return 5; } return 0; } float avalia( char ch, float n1, float n2 ) { switch( ch ){ case '-': return (n2 - n1); case '+': return (n2 + n1); case '*': return (n2 * n1); case '/': return (n2 / n1); case '^': return pow(n2, n1); } return 0; } int main() { char expr[TAM], pol[TAM], vet[43], ch; Lista <char> lista; Pilha <char> pilha; Pilha <float> aval; int i, val; float vet_num[36], total, n1, n2; cout << "Conversao e Avaliacao de Expressoes - V1.1(2003) - M.Carrard\n"; cout << "\nDigite a expressao (sem espacos): "; cin >> expr; for( i = 0; i<43; i++ ) vet = -1; // Vetor de presencas i = 0; while( expr != '\0' ){ if( is_operando( expr ) ){ if( !lista.insere( expr ) ){ cout << "Erro => Espaco insuficiente na lista!\n"; exit( 1 ); } if( expr >= 97 ) expr = upper(expr); vet[expr-48] = 1; // Indica presenca } else{ if( !is_operador( expr ) ){ cout << "Erro => Simbolo desconhecido na expressao: " << expr << "\n"; exit( 1 ); } if( expr == ')' ){ while( !pilha.vazia() ){ pilha.retira( &ch ); if( ch == '(' ) break; lista.insere( ch ); } if( ch != '(' ){ cout << "Erro => Casamento de parenteses!\n"; exit( 1 ); } } else{ if( pilha.vazia() ) pilha.insere( expr ); else{ do{ if( !pilha.retira( &ch ) ){ pilha.insere( expr ); break; } if( ch == '-' && expr == '-' ){ pilha.insere( ch ); lista.insere( ch ); break; } if( ch == '(' || get_prioridade( ch ) < get_prioridade( expr ) ){ pilha.insere( ch ); pilha.insere( expr ); break; } else lista.insere( ch ); }while(1); } } } // else isletra i++; } // While while( pilha.retira( &ch ) ){ if( ch == '(' ){ cout << "Erro => Casamento de parenteses!\n"; exit( 1 ); } else lista.insere( ch ); } i = 0; while( lista.retira( &ch ) ) pol[i++] = ch; pol = '\0'; cout << "Expressao em notacao poloneza:\t"; cout << pol << "\n"; cout << "Digite os valores das variaveis para solucao:\n"; val = 0; for( i=0; i<43; i++ ) if( vet == 1 ){ if( i >= 17 ){ ch = i+48; cout << "\t " << ch << " = "; vet = val++; cin >> vet_num[vet]; } else{ vet = val++; vet_num[vet] = (float)i; } } // Soluciona o problema i = 0; while( ( ch = pol[i++] ) != '\0' ){ if( is_operando( ch ) ){ if( ch >=97 ) ch = upper(ch); aval.insere( vet_num[vet[ch-48]] ); } else{ if( !aval.retira( &n1 ) || !aval.retira( &n2 ) ){ cout << "\nErro => Nao foi possivel avaliar a expressao!\n"; exit( 1 ); } total = avalia( ch, n1, n2 ); aval.insere( total ); } } if( !aval.retira( &total ) ) cout << "Erro => Nao foi possivel avaliar a expressao!\n"; else cout << "Avaliacao da expressao: " << total << "\n"; } Compartilhar este post Link para o post Compartilhar em outros sites
ricci ottadnot 4 Denunciar post Postado Junho 20, 2006 seria mto mais interessante fazer nosso colega RACIOCINAR na logica do problemaAssim o forum perde realmente o seu verdadeiro sentido.. que é o de discutir assuntos levantados por usuarios..Por favor, naum postem codigos prontos.. Compartilhar este post Link para o post Compartilhar em outros sites
agj 0 Denunciar post Postado Junho 20, 2006 concordo com você.....e tem outra....certamente o professor dele vai olhar este codigo e vai ver que nao foi ele quem fez.....os professores conhecem os seus alunos....e suas capacidades......cara cuidado se você copiar este codigo...eu nao aconselho.....tenta fazer pra nao tirar 0.....blza...o recado esta dado. Compartilhar este post Link para o post Compartilhar em outros sites
pkr 0 Denunciar post Postado Junho 20, 2006 concordo com oq vcs falaram, eu nao vou copiar este código até pq nao aprendemos a programar templates e talz....apenas queria pra entender a logica e a base do programavaleu ae cara, qdo eu montar o meu eu repasso, isso é se eu montar, pois final de semestre to cheio de trabalho pra entrega e nem comecei hehehe Compartilhar este post Link para o post Compartilhar em outros sites
pkr 0 Denunciar post Postado Junho 21, 2006 caraca agora que fui ver.....haehueahMauricio de Wallau você eh de onde???ali diz M. Carrard....esse cara era professor aqui da faculdade...interior do RS, na Unijui....você teve aula com ele onde?? falow Compartilhar este post Link para o post Compartilhar em outros sites