Jump to content
Fórum Script Brasil
  • 0

Retorno de um método - FILA


Question

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 to post
Share on other sites

4 answers to this question

Recommended Posts

  • 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 to post
Share on other 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();

Edited by Myho
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      148978
    • Total Posts
      645048
×
×
  • Create New...