Ir para conteúdo
Fórum Script Brasil
  • 0

Retorno de um método - FILA


vicius_wolf

Pergunta

Boa noite pessoal,

É o seguinte, estou fazendo um trabalho, onde já emplementei um FILA em C++.

Minha dúvida é como eu faça pro o método dequeue(desenfileirar), que é do tipo Pedido, caso a fila esteja vazia, retornar um erro, ou exceção, ou alguma coisa, não sei.

Meu codigo a baixo

Classe Pedido

#include <iostream>

using namespace std;

class pedido
{
    int controle;
    int pizza;
    int pastel;
    int tempo;

public:
    pedido();
    void setControle(int);
    void setPizza(int);
    void setPastel(int);
    void setTempo(int);
    int getControle();
    int getPizza();
    int getPastel();
    int getTempo();
    void imprimePedido();

};
pedido::pedido()
{

}

void pedido::setControle(int c)
{
    controle = c;
}

void pedido::setPizza(int p)
{
    pizza = p;
}

void pedido::setPastel(int p)
{
    pastel = p;
}

void pedido::setTempo(int t)
{
    tempo = t;
}

int pedido::getControle()
{
    return controle;
}

int pedido::getPizza()
{
    return pizza;
}

int pedido::getPastel()
{
    return pastel;
}

int pedido::getTempo()
{
    return tempo;
}

void pedido::imprimePedido()
{
    cout << "Pedido numero:" << getControle() << endl;
    cout << "Pizzas:" << getPizza() << endl;
    cout << "Pasteis:" << getPastel() << endl;
    cout << "Tempo do pedido" << getTempo() << endl;
}
E a classe Fila, só com o método dequeue(desenfileirar)
#include "pedido.h"
#include <iostream>

using namespace std;

const int TAM = 10;

class filaCircularComVetor{
    int frente, re, ne;
    pedido fila[TAM];

public:
    //pedido *fila[];
    filaCircularComVetor();
    bool enfileirar(pedido p);
    pedido desenfileirar();
    bool cheia();
    bool vazia();
    pedido front();
    int tamanho();
    void exibir();
};
pedido filaCircularComVetor::desenfileirar()
{
    pedido pe;

    /*if(vazia())
    return NULL;
    else
    {*/
        pe = fila[frente];
        frente = (frente + 1) % TAM;
        ne = ne - 1;
        return pe;
    //}

Como vêem, este método é do tipo pedido, e retorna o elemento retirado, caso a fila estiver vazia, o que retorno!

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

se estiver vazia pode retornar esse NULL, e quem pedir pra desenfileirar é que testa se o retorno foi um elemento ou NULL.

pedido = fila->desenfileirar();
if (pedido)
    //Tratar pedido aqui
else // Tratar fila vazia aqui
Ou então sempre teste se a fila está vazia antes de desenfileirar fora da função. algo como
if ( !fila->vazia())
   pedido = fila->desenfileirar();

Link para o comentário
Compartilhar em outros sites

  • 0

Ela pode retornar o que você quiser, o problema é que tipo de retorno você precisa.

Se você precisa retornar um pedido, não tem jeito, tem que retorna-lo.

O problema com o NULL é que você deve retornar um pedido, e NULL é zero ou um ponteiro void. Pro NULL funcionar você deve retornar

pedido * filaCircularComVetor::desenfileirar()
Mas ai já envolve usar ponteiros no programa e imagino que você não tenha planejado usa-los. De qualquer maneira você tem q testar no main... ou antes de chamar ou depois. Para abrir arquivo testamos depois:
File *f;
f = fopen ("myfile.txt" , "r");
if (pFile == NULL) 
   printf ("Error opening file");
Já quando usamos algum container da STL testamos antes:
stack<int> mystack;
if (!mystack.empty())
   int valor =  mystack.top();

Editado por Myho
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...