Buscar

aula4

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

#include "iostream"
using namespace std;
const int MAX = 6;
struct fila{
 int fim;
 int memo[MAX];
};
void enfileirar(fila &f, int x){
 f.fim++;
 f.memo[f.fim] = x;
}
int desenfileirar(fila &f){
 int aux;
 aux = f.memo[0];
 for(int i=0;i<f.fim;i++){
 f.memo[i] = f.memo[i+1];
 }
 f.fim--;
 return aux;
}
void preferencial (fila &F, int x){
 for(int i=F.fim;i>=0;i--){
 F.memo[i+1]=F.memo[i];
 }
 F.memo[0] = x;
 F.fim++;
}
void furaFila(fila &F, int x, int pos){
 for(int i=F.fim;i>=pos;i--){
 F.memo[i+1]=F.memo[i];
 }
 F.memo[pos] = x;
 F.fim++;
}
void retirarFuraFila(fila &f, int pos){
 int aux = f.memo[pos];
 for(int i=pos;i<=f.fim;i++){
 f.memo[i] = f.memo[i+1];
 }
 f.memo[f.fim]=aux;
}
void listar(fila F){
	cout<<"Valores da fila: \n";
	for(int i=0;i<=F.fim;i++){
	 cout<<F.memo[i]<<endl;
	}
}
int cheia(fila f){
 //MAX É O TAMANHO DO CAMPO MEMO. SE QUERO SE ESTÁ CHEIA REMOVO UM DE MAX
 return(f.fim==MAX-1);
}
int vazia (fila f){
 return(f.fim==-1);
}
int busca(fila F, int x){
 for(int i=0;i<=F.fim;i++){
 if(x==F.memo[i]){
 return i;
 }
 }
 return -1;
}
int menu(){
	int opc;
	cout<<"\n 1-enfileirar";
	cout<<"\n 2-desenfileirar";
	cout<<"\n 3-final da fila";
	cout<<"\n 4-listar";
	cout<<"\n 5-Preferencial";
	cout<<"\n 6-FuraFila";
	cout<<"\n 7-Retirar FuraFila";
	cout<<"\n 6-sair";
	cout<<"\n opc-> ";
	cin>>opc;
	return opc;
}
int main(){
 fila F;
 F.fim = -1;
	int x, opc, pos;
	do{
		opc = menu();
		switch (opc){
			case 1: //PUSH
				if(cheia(F)==1){
					cout<<"\nFila cheia!";
				}
				else{
					cout<<"\nValor: ";
					cin>>x;
					if(busca(F, x)==0){
 enfileirar(F,x);
					}
					else{
					 cout<<"\nImpossivel adicionar numero repetido";
					}
				}
			break;
			case 2: //POP
				if(vazia(F)==1){
					cout<<"Fila Vazia!";
				}
				else{
					cout<<"Valor removido = "<<desenfileirar(F);
				}
			break;
			case 3: //TOP
				if(vazia(F)==1){
					cout<<"Fila Vazia!";
				}
				else{
					cout<<"valor no final da fila: "<<F.memo[F.fim];
				}
			break;
			case 4: //LISTAR
				if(vazia(F)==1){
					cout<<"Fila Vazia!";
				}
				else{
					listar(F);
				}
 break;
 case 5://Preferencial
 if(cheia(F)){
 cout<<"Fila Cheia";
 }else{
 cout<<"Valor = ";
 cin>>x;
 if(busca(F,x)==0){
 preferencial(F,x);
 }
 else{
 cout<<"\nimpossivel inserir numero repetido";
 }
 }
 break;
 case 6://FuraFila
 if(cheia(F)){
 cout<<"Fila Cheia";
 }
 else{
 cout<<"digite a posicao= ";
 cin>>pos;
 if(pos<0 || pos>F.fim){
 cout<<"\nposicao invalida";
 }
 else{
 cout<<"digite o numero= ";
 cin>>x;
 if(busca(F,x)==0){
 furaFila(F, x, pos);
 }
 else{
 cout<<"\nimpossivel inserir numero repetido";
 }
 }
 }
 break;
 case 7://RetirarFuraFila
 if(vazia(F)){
 cout<<"Fila Vazia.";
 }else{
 cout<<"\nQuem furou fila?";
 cin>>x;
 int pos = busca(F,x);
 if(pos == -1)
 cout<<"\nNumero nao encontrado.";
 else
 retirarFuraFila(F, pos);
 }
			case 8:
				cout<<"\n Saindo";
			break;
			default: cout<<"opçao invalida!";
		}
	} while(opc !=5);
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando