Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Estácio de Sá ESTRUTURA DE DADOS Nome: Kásio Eduardo Martins Matricula: 201503522784 Profº: Robson Cunha Cabo Frio, 04 de Outubro de 2015. 1) void RemoveMult7(pilha &P, pilha &K){ int cont=0,aux; for (int i=P.topo; i>=0; i--){ if (P.memo[P.topo] % 7 == 0){ aux = P.memo[P.topo]; P.topo--; cout<<"\n\tREMOVEU: "<<aux; cont++; } else{ K.topo++; K.memo[K.topo] = P.memo[P.topo]; P.topo--; } } for(int i=K.topo; i>=0; i--){ P.topo++; P.memo[P.topo] = K.memo[K.topo]; K.topo--; } if(cont == 0) cout<<"\n\tNENHUM MULTIPLO DE 7!\n"; } 2) void leitura(cadastro VET[]){ for (int i=0; i<MAX; i++){ cout<<"\n\n\tINSCRICAO: "; cin>>VET[i].inscricao; float soma =0; for (int j=0; j<4; j++){ cout<<"\n\tDIGITE A NOTA "<<j+1<<" DA INSCRICAO "<<VET[i].inscricao<<" : "; cin>>VET[i].nota[j]; soma += VET[i].nota[j]; } VET[i].media = (soma/4); cout<<"\n\tINSCRICAO "<<VET[i].inscricao<<" MEDIA: " <<VET[i].media; } } void ordenada(cadastro VET[]){ cadastro AuxCad[MAX]; for (int i=0; i<MAX-1; i++){ for(int j=i+1; j<MAX; j++){ if (VET[i].media > VET[j].media){ AuxCad[i] = VET[i]; VET[i] = VET[j]; VET[j] = AuxCad[i]; } } } } 3) int Vazia(fila F){ return (F.fim == -1); } int Cheia(fila F){ return (F.fim == MAX-1); } void Enfileirar(fila &F, int Z){ F.fim++; F.memo[F.fim] = Z; cout<<"\n\tSUCESSO!\n"; } void Preferencial(fila &F, int Z){ cout<<"\n\tQUAL O VALOR DO PREFERENCIAL?: "; cin>>Z; F.fim++; for (int i=F.fim;i>=0; i--){ F.memo[i+1] = F.memo[i]; } F.memo[0] = Z; cout<<"\n\tINSERIDO COM SUCESSO!\n"; } void Inserirfurao(fila &F, int x, int pos){ cout<<"\n\tVALOR: "; cin>>x; F.fim++; for (int i=F.fim; i>=pos; i--){ F.memo[i+1] = F.memo[i]; } F.memo[pos] = x; cout<<"\n\tFURAO INSERIDO!\n"; } int main(){ fila F; F.fim = -1; int opc,x,pos; while(opc!=3){ cout<<"\n\t1 - INSERIR NO FIM DA FILA"; cout<<"\n\t2 - FURA FILA NA POSICAO"; cout<<"\n\t3 - PREFERENCIAL"; cin>>opc; switch(opc){ case 1: if (Cheia(F)) cout<<"\n\tFILA CHEIA"; else cout<<"\n\tDIGITE O VALOR: "; cin>>x; Enfileirar(F,x); break; case 2: if (Cheia(F)) cout<<"\n\tFILA CHEIA"<<endl; else { if (Vazia(F)) { cout<<"\n\tVALOR: "; cin>>x; Enfileirar(F,x); } else if (Cheia(F) == 0 && Vazia(F) == 0) { cout<<"\n\tDIGITE A POSICAO PARA FURAR: "<<"\n\n"; for(int i = 0; i <=F.fim; i++){ cout<<"\t["<<i<<"] "; } cout<<"\n\tPOSICAO:"; cin>>pos; if (pos > F.fim) { cout<<"\n\t Valor: "; cin>>x; Enfileirar(F,x); } else Inserirfurao(F,pos,x); } } break; case 3: cout<<"\n\tPREFERENCIAL\n"; if(Cheia(F)) cout<<"\n\tFILA CHEIA!\n"; else Preferencial(F,x); break; default: cout<<"\n\tDIGITE UMA OPC VALIDA"; } } } 4) void Preferencial(fila &F, int x){ int aux; cout<<"\n\tValor: "; cin>>x; if (F.fim == MAX){ F.fim=0; } F.fim++; F.total++; aux = x; for(int i = F.fim; i >= F.com; i--){ F.memo[i] = F.memo[i-1]; } F.memo[F.com] = aux; } void RemoverImpar(fila &F){ for (int i=F.com; i<=F.fim; i++){ if (F.memo[i] % 2 != 0){ cout<<"\t"<<F.memo[i]; for (int j=i; j<=F.fim; j++){ F.memo[j]=F.memo[j+1]; i=F.com; } F.total--; } } if (F.memo[F.com] % 2 != 0){ cout<<"\t"<<F.memo[F.com]; F.memo[F.com]=F.memo[F.com+1]; F.memo[F.com+1]=F.memo[F.com+2]; F.total--; } } 5) #include "iostream" #include "string.h" #include "stdio.h" #include "stdlib.h" int const MAX = 50; using namespace std; struct pilha{ int topo; int memo[MAX]; }; int Push(pilha &P, char x){ P.topo++; P.memo[P.topo] = x; } int Pop(pilha &P){ P.topo--; return P.memo[P.topo]; } string Verifica(char x[], pilha &P){ int t = strlen(x),i = 0; while(i < t){ char seq = x[i]; if (seq == ')' && P.memo[P.topo]=='(' || seq ==']' && P.memo[P.topo] == '[' || seq == ']' || seq == ')') Pop(P); if (seq == '(' || seq == '[') Push(P, x[i]); i++; } if (P.topo != -1) return "\n\tERRO!"; else return "\n\tCORRETO"; } int main() { pilha P; P.topo = -1; char x[50]; cout<<"\n Digite a expressao:"; fflush(stdin); gets(x); cout<<Verifica(x,P); }
Compartilhar