Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdio.h"
- #include "stdlib.h"
- #include "conio.h"
- #include "string.h"
- struct expressao{ // Estrutura do tipo expressão
- int operandos[100];
- char operadores[100];
- int ultimo_char; // Indicador de final do vetor
- int ultimo_int; // Indicador de final do vetor
- int total; // Total calculado de uma respectiva expressão
- };
- struct expr{
- struct expressao vetor_expressoes[100];
- int ultimo; // Indicador relativo a última expressaão fornecida
- };
- void inicializacao(struct expr *E, int indice){ // Função inicializadora
- E -> vetor_expressoes[indice].total = 0;
- E -> vetor_expressoes[indice].ultimo_char = -1;
- E -> vetor_expressoes[indice].ultimo_int = -1;
- }
- main(){
- struct expr E;
- int k=0, j=0, i=0, aux1=0, aux2=0, sinal=0, quant, indicador_char=0;
- char temp = ' ';
- E.ultimo = -1;
- scanf("%d",&quant);
- while(quant != 0){ // Enquanto o usuário não digitar 0 o algoritmo pressegue efetuando a leitura dos operandos e operadores das respectivas expressões
- E.ultimo++;
- inicializacao(&E, E.ultimo);
- for(i=0; i<quant; i++){
- E.vetor_expressoes[E.ultimo].ultimo_int++;
- scanf("%d",&E.vetor_expressoes[E.ultimo].operandos[i]); // Leitura operandos
- fflush(stdin);
- if(i == quant-1)
- break;
- E.vetor_expressoes[E.ultimo].ultimo_char++;
- scanf("%c",&E.vetor_expressoes[E.ultimo].operadores[E.vetor_expressoes[E.ultimo].ultimo_char]); // Leitura operadores
- }
- aux1=0; aux2=0; temp = ' ';
- for(i=0; i<=E.vetor_expressoes[E.ultimo].ultimo_int; ){
- if(temp == ' '){
- aux1 = E.vetor_expressoes[E.ultimo].operandos[0];
- aux2 = E.vetor_expressoes[E.ultimo].operandos[1];
- temp = E.vetor_expressoes[E.ultimo].operadores[0];
- for(k=0; k<=E.vetor_expressoes[E.ultimo].ultimo_char; k++) // Arruma a fila de char's
- E.vetor_expressoes[E.ultimo].operadores[k] = E.vetor_expressoes[E.ultimo].operadores[k+1];
- E.vetor_expressoes[E.ultimo].ultimo_char--;
- for(k=0; k<=E.vetor_expressoes[E.ultimo].ultimo_int; k++) // Arruma a fila de int's
- E.vetor_expressoes[E.ultimo].operandos[k] = E.vetor_expressoes[E.ultimo].operandos[k+1];
- E.vetor_expressoes[E.ultimo].ultimo_int--;
- for(k=0; k<=E.vetor_expressoes[E.ultimo].ultimo_int; k++) // Arruma a fila de int's (novamente)
- E.vetor_expressoes[E.ultimo].operandos[k] = E.vetor_expressoes[E.ultimo].operandos[k+1];
- E.vetor_expressoes[E.ultimo].ultimo_int--;
- if(temp == '+'){
- E.vetor_expressoes[E.ultimo].total = aux1 + aux2;
- }
- else
- E.vetor_expressoes[E.ultimo].total = aux1 - aux2;
- aux1 = E.vetor_expressoes[E.ultimo].total;
- }
- else{
- aux2 = E.vetor_expressoes[E.ultimo].operandos[0];
- temp = E.vetor_expressoes[E.ultimo].operadores[0];
- for(k=0; k<=E.vetor_expressoes[E.ultimo].ultimo_char; k++)
- E.vetor_expressoes[E.ultimo].operadores[k] = E.vetor_expressoes[E.ultimo].operadores[k+1];
- E.vetor_expressoes[E.ultimo].ultimo_char--;
- for(k=0; k<=E.vetor_expressoes[E.ultimo].ultimo_int; k++)
- E.vetor_expressoes[E.ultimo].operandos[k] = E.vetor_expressoes[E.ultimo].operandos[k+1];
- E.vetor_expressoes[E.ultimo].ultimo_int--;
- if(temp == '+')
- E.vetor_expressoes[E.ultimo].total = aux1 + aux2;
- else
- E.vetor_expressoes[E.ultimo].total = aux1 - aux2;
- aux1 = E.vetor_expressoes[E.ultimo].total;
- }
- }
- scanf("%d",&quant);
- }
- for(i=0; i<=E.ultimo; i++) // Imprime
- printf("Teste %d\n%d\n\n",i+1, E.vetor_expressoes[i].total);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement