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

Me ajuda herança


Thiago lablonsk

Pergunta

Boa noite!
alguém pode me ajudar? Não roda e não sei o motivo!
  #include <iostream>

using namespace std;

    class bar
    {
    protected:
        string nomeItem[9];
        int itens[9];
    public:
        bar()
        {
            int i;
            for(i=0;i<9;i++)
            {
                this->itens[i]=0;
            }
            this->nomeItem[0]="cerveja";
            this->nomeItem[1]="pinga 51";
            this->nomeItem[2]="caipirinha";
            this->nomeItem[3]="agua";
            this->nomeItem[4]="coca";
            this->nomeItem[5]="salgado";
            this->nomeItem[6]="cigarro";
            this->nomeItem[7]="amendoim";
            this->nomeItem[8]="aperitivo";
            this->nomeItem[9]="agua com gas";
        }
        void setItem(int op, int quantidade)
        {
            this->itens[op]=this->itens[op]+quantidade;
        }
        string getNomeitem(int op)
        {
            return this->nomeItem[op];
        }
};
    class comanda:public bar
    {
    private:
        string nomeCliente;
    public:
        comanda()
        {
            nomeCliente="";
        }
        void setNomecliente(string nomeCliente)
        {
            if(this->nomeCliente!="")
            this->nomeCliente=nomeCliente;
            else
                cout<<"não pode nome em branco"<<endl;
        }
        string getNomecliente()
        {
            return this->nomeCliente;
        }
        void compraItem(int op, int quantidade)
        {
            op--;
            if((op>=0)&&(op<=9)&&(quantidade>0))
            {
             setItem(op,quantidade);
            }
        }


        void imprimenu()
        {
            cout<<"|***********************************|"<<endl;
            cout<<"|***** Bem vindo ao bar do Wilson *****|"<<endl;
            for(int i=0;i<=9;i++)
            {
                cout<<"|*     "<<getNomeitem(i)<<"     *|"<<endl;
            }
             cout<<"|***********************************|"<<endl;
        }
        void imprimeComanda()
        {
            int i;
            for(i=0;i<10;i++)
            {
                if(this->itens[i]!=0)
                {
                    cout<<getNomeitem(i)<<endl;
                    cout<<this->itens[i];

                }
            }
                 for(i=0;i<9;i++)
            {
                this->itens[i]=0;
            }
            this->nomeCliente="";
        }
    };
    void menu()
    {
        int i,op,quantidade;
        string nome;
        comanda cliente[200];
        i=0;
        do
        {
            cout<<"1 - Para emitir nova comanda"<<endl;
            cout<<"2 - Para comprar alguma coisa do menu"<<endl;
            cout<<"3 - Fechar comanda"<<endl;
            cout<<"4 - Sair do programa"<<endl;
            cin>>op;
            if((op==1)&&(i<200))
            {
             cout<<"Digite o nome do cliente (comanda)"<<endl;
             cin>>nome;
             cliente[i].setNomecliente(nome);
             cout<<"Codigo da comanda: "<<(i+1)<<endl;
            }
            else
                if(op==2)
            {
                cout<<"Digite o codigo da comanda"<<endl;
                if(cliente[i].getNomecliente()!="")
                {
                    cliente[i].imprimenu();
                    cout<<"Digite a opcao desejada: "<<endl;
                    cin>>op;
                    cout<<"Digite a quantidade desejada: "<<endl;
                    cin>>quantidade;
                    cliente[i].compraItem(op,quantidade);
                    op=1;
                }
                else
                {
                    cout<<"Comanda invalida ou não cadastrada por favor cadastrar comanda"<<endl;
                }

            }
            else
                if(op==3)
            {
                cliente[i].imprimeComanda();
                cout<<"Agradecemos a sua preferencia! \nObrigado"<<endl;
            }
            else
                if(op==4)
            {
                cout<<"Sistema sera fechado!"<<endl;
            }
        }while(op!=4);
    }
int main()
{
    menu();
    return 0;
}

Obrigado ! :)

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Se você tem 10 intens....

        this->nomeItem[0]="cerveja";
        this->nomeItem[1]="pinga 51";
        this->nomeItem[2]="caipirinha";
        this->nomeItem[3]="agua";
        this->nomeItem[4]="coca";
        this->nomeItem[5]="salgado";
        this->nomeItem[6]="cigarro";
        this->nomeItem[7]="amendoim";
        this->nomeItem[8]="aperitivo";
        this->nomeItem[9]="agua com gas";

Como é que reserva memória somente para 9?

    string nomeItem[9];
    int itens[9];

 

O certo seria:

    string nomeItem[10];
    int itens[10];


O problema é que você está estourando o vetor de strings escrevendo na 10 posição que não existe. Cuidado com isso!!

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
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...