Ir ao conteúdo

C++ Algoritmo - atividades sobre filas


Ir à solução Resolvido por arfneto,

Posts recomendados

Postado

Boa noite!

Fiz essa atividade sobre filas e encaminhei ela segunda, 28/11, ainda não recebi um feedback, mas gostaria de saber se ficou minimamente decente.

 

#include <iostream>
#include <queue>
using namespace std;

void display_queue(queue<string>q);
void display_queue(queue<string>q)
{
    while(!q.empty()) 
	{
        	cout << q.front() << " - ";
    		q.pop();
	}
}

int main()
{
    int x;
    string y;
    queue<string> clientes;
    cout<< "DIGITE 1 para adicionar um novo cliente no final da fila \n";
    cout<< "DIGITE 2 para remover o cliente do inicio da fila \n";
    cout<< "DIGITE 3 para imprimir todos os clientes da fila \n";
    cout<< "DIGITE 4 para imprimir a quantidade de clientes na fila \n";
    cout<< "DIGITE 5 para excluir os clientes da fila \n";
    while (x != 5)
	{
        	cout << "ESCOLHA ALGUM CASO:" << endl;
        	cin >> x;
        	switch (x)
		{
            		case 1:
				{
                			cout << "digite o nome" << endl;
                			cin >> y;
                			clientes.push(y);
                			cout << "cliente adicionado a fila" << endl;
				}
					break;
            		case 2:
				{
                			clientes.pop();
                			cout << "cliente removido da fila" << endl;
				}
            				break;
            		case 3:
				{
                			cout << "fila atual: ";
                			display_queue(clientes);
                			cout << endl;
				}
            				break;
            		case 4:
				{
                			cout << "tamanho da fila: " << clientes.size() << endl;
				}
            				break;
            		case 5:
				{
                			terminate;
				}
					break;
		}
	}
}

 

  • Obrigado 1
  • Solução
Postado
void display_queue(queue<string>q);
void display_queue(queue<string>q)
{
    while(!q.empty()) 
	{
        	cout << q.front() << " - ";
    		q.pop();
	}
}

 

Pra que isso?

 

A razão de ter um protótipo é colocar isso em outro arquivo. Ou no mínimo deslocar isso para o fim do programa, deixando SEMPRE main() no iniício. O protótipo seguido da função não faz sentido.

 

Sua função display_queue() também faz pouco sentido. Ela sugere mostrar mas na verdade esvazia a fila...

 

E claro que devia ser uma função da classe. Você vê que tem algo errado quando passa a fila como argumento. E está passando por valor. Cuidado com isso. Está copiando a fila todinha. Claro que da segunda vez em diante vai estar vazia

 

    cout << "DIGITE 1 para adicionar um novo cliente no final da fila \n";
    cout << "DIGITE 2 para remover o cliente do inicio da fila \n";
    cout << "DIGITE 3 para imprimir todos os clientes da fila \n";
    cout << "DIGITE 4 para imprimir a quantidade de clientes na fila \n";
    cout << "DIGITE 5 para excluir os clientes da fila \n";

 

Se tem um menu escreva uma função que mostra o menu e retorna a opção. O simples.

 

Não use 5 cout de uma linha. Use um cout de 5 linhas. É como 50x mais rápido. Pra que vai chamar a função uma vez para cada linha?

 

E não use std::endl. Use o simples e recomendado '\n'

 

    int x;

// ...
 
    while (x != 5)

 

Isso está errado e o compilador deve ter avisado. Trate todas as mensagens de erro. Leia todas. Habilite TODAS. Como sabe o valor inicial de x? Inicialize todas as varáveis.

 

        case 5:
        {
            terminate;
        }

 

Pra que chamar terminate aqui e não um simples return? E onde estão os parenteses? std::terminate é uma função e não um comando.

 

 

Claro que como está passado a fla por valor pode esvaziar porque será uma cópia, mas se a fila tiver milhares de registros  vai sair caro. Era mesmo isso que queria fazer? Normalmente em pilhas e filas NÃO existe essa função porque não serve pra nada exceto algum teste. E não é preciso testar a STL em algo tão simples. Numa fila ou pilha não importa o conteúdo. Só o primeiro. E o último no caso da fila. Se precisa de fato listar elementos use uma lista

  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!