Ir ao conteúdo
  • Cadastre-se

C++ Cout Sendo Impresso 2 Vezes....


vitor de jesus

Posts recomendados

#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <vector>

using namespace std;

struct ProdutoInfo1 {

        string Produto_Tipo; // Ex : Creme Dental
        string MarcaProduto; // Ex : Colgate ****
        string CodigoBarras; // Ex : 01010100101101010
        string Fornecedores; // Ex : Contato

        string DataFabricou; // Ex : 20/11/2017
        string DataValidade; // Ex : 20/11/2020

        float ValorPorLote; // Ex : 40,50
        float VendaPorLote; // Ex : 50,50
        float ValorPorUnid; // Ex : 5 ,00
        float VendaPorUnid; // Ex : 5 ,50

		int ProdutosLote; // 13 Produtos
        int EstoqueAtual; // 99 Caixas
        int EstoqueMinim; // 30 Caixas

};

class  ProdutoInfo2 {

	private:

		vector <ProdutoInfo1> Produto;
		string temp;

	public :

		void AddProduto(){

			Produto.push_back(ProdutoInfo1());

			int tam = Produto.size();

			cout << " Tipo do Produto: ";
            getline(cin,temp);

            Produto[tam-1].Produto_Tipo = temp;

            system("cls");

            cout << " Marca do Produto: ";
            getline(cin,temp);

            Produto[tam-1].MarcaProduto = temp;

            system("cls");

            cout << " Codigo de Barras: ";
            getline(cin,temp);

            Produto[tam-1].CodigoBarras = temp;

            system("cls");

            cout << " Contato do Fornecedor: ";
            getline(cin,temp);

            Produto[tam-1].Fornecedores = temp;

            system("cls");

            cout << " Data de fabricação: ";
            getline(cin,temp);

            Produto[tam-1].DataFabricou = temp;

            system("cls");

            cout << " Data de Validade: ";
            getline(cin,temp);

            Produto[tam-1].DataValidade = temp;

            system("cls");

            cout << " Produtos por Lote: ";
            cin  >> Produto[tam-1].ProdutosLote;

            system("cls");

            cout << " Valor de Compra por Lote: ";
            cin  >> Produto[tam-1].ValorPorLote;

            Produto[tam-1].ValorPorUnid = Produto[tam-1].ValorPorLote / Produto[tam-1].ProdutosLote;

            system("cls");

            cout << " Valor de Venda por Lote: ";
            cin  >> Produto[tam-1].VendaPorLote;

            system("cls");

            cout << " Valor de Venda por Und: ";
            cin  >> Produto[tam-1].VendaPorUnid;

			++Produto[tam-1].EstoqueAtual;

			system("cls");

			cout << " Estoque Minimo de Lotes: ";
            cin  >> Produto[tam-1].EstoqueMinim;

            system("cls");

            cout << " voce Cadastrou o Seguinte Produto : " << endl << endl;

			UltimoProdutoCadastrado();

			cout << endl;

			cout << " Verifique Todas informações do Produto, Caso Haja Alguma";
			cout << " Informacao Incorreta Siga Este Processo: " << endl << endl;
			cout << " -> Menu Principal/Produtos/Alterar " << endl << endl;



		}

		void AllInfoProduto(int * posicao = NULL ){

			int tam = Produto.size();
			int Controle = 0;

			do{

			cout << "Codigo de Barras:";
            getline(cin,temp);

            for(int i = 0; i < tam; i++){

                if(Produto[i].CodigoBarras==temp){

                    Controle++;

                    if(posicao != NULL){
                    *posicao = i;
                    }

                    cout << endl;
                    cout << " Tipo:  " << Produto[tam-1].Produto_Tipo << endl;
                    cout << " Marca: " << Produto[tam-1].MarcaProduto << endl;

                    cout << "____________________________________________________" << endl;

                    cout << endl;

                    cout << " Codigo de Barras: "   << Produto[tam-1].CodigoBarras << endl;
                    cout << " Contato Fornecedor: " << Produto[tam-1].Fornecedores << endl;

                    cout << "____________________________________________________" << endl;

                    cout << endl;

                    cout << " Data de fabricação "  << Produto[tam-1].DataFabricou << endl;
                    cout << " Data de Validade "    << Produto[tam-1].DataValidade << endl;

                    cout << "____________________________________________________" << endl;

                    cout << endl;

                    cout << " Compra Por Lote: "    << Produto[tam-1].ValorPorLote << endl;
                    cout << " Compra Por Unid: "    << Produto[tam-1].ValorPorUnid << endl;

                    cout << "____________________________________________________" << endl;

		            cout << endl;

		            cout << " Venda  Por Lote: "    << Produto[tam-1].VendaPorLote << endl;
                    cout << " Venda  Por Unid: "    << Produto[tam-1].VendaPorUnid << endl;

                    cout << "____________________________________________________" << endl;

	            	cout << endl;

		            cout << " Produtos Por Lote: "  << Produto[tam-1].ProdutosLote << endl;
                    cout << " Estoque Atual: "      << Produto[tam-1].EstoqueAtual << endl;
                    cout << " Estoque Minim: "      << Produto[tam-1].EstoqueMinim << endl;

                    cout << "____________________________________________________" << endl;

                    }
                    }


                    }while(Controle==0);

                }

		void UltimoProdutoCadastrado(){

	    int tam = Produto.size();


		cout << "____________________________________________________" << endl;

		cout << endl;

		cout << " Tipo:  " << Produto[tam-1].Produto_Tipo << endl;
        cout << " Marca: " << Produto[tam-1].MarcaProduto << endl;

        cout << "____________________________________________________" << endl;

        cout << endl;

        cout << " Codigo de Barras: "   << Produto[tam-1].CodigoBarras << endl;
        cout << " Contato Fornecedor: " << Produto[tam-1].Fornecedores << endl;

        cout << "____________________________________________________" << endl;

        cout << endl;

        cout << " Data de fabricação "  << Produto[tam-1].DataFabricou << endl;
        cout << " Data de Validade "    << Produto[tam-1].DataValidade << endl;

        cout << "____________________________________________________" << endl;

        cout << endl;

        cout << " Compra Por Lote: "    << Produto[tam-1].ValorPorLote << endl;
        cout << " Compra Por Unid: "    << Produto[tam-1].ValorPorUnid << endl;

        cout << "____________________________________________________" << endl;

		cout << endl;

		cout << " Venda  Por Lote: "    << Produto[tam-1].VendaPorLote << endl;
        cout << " Venda  Por Unid: "    << Produto[tam-1].VendaPorUnid << endl;

        cout << "____________________________________________________" << endl;

		cout << endl;

		cout << " Produtos Por Lote: "  << Produto[tam-1].ProdutosLote << endl;

        cout << "____________________________________________________" << endl;

		cout << endl;

        cout << " Estoque Atual: "      << Produto[tam-1].EstoqueAtual << endl;
        cout << " Estoque Minim: "      << Produto[tam-1].EstoqueMinim << endl;

        cout << "____________________________________________________" << endl;

        cout << endl;

		}

};

int main(){

ProdutoInfo2 Produtos;

Produtos.AddProduto();

system("pause");
system("cls");

Produtos.AllInfoProduto();

}

Então E o seguinte.. quando Entra Na Função : Produtos.AllIfoProdutos();  e passa pro do wile o primeiro cout e impresso 2 vezes... 

Como Posso corrigir isso?

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@vitor de jesus      seu código está funcionando bem aqui,  ali no do while  ele está repetindo por que precisa digitar o código de barra certo, pois ele pega esse código de barra e coloca na variável temp e depois compara com o código do produto e se não for igual ele repete o loop  sem modificar a variável controle para que ele saia do loop .  

   e esse dois cout é porque quando ele encontra o comando getline, ele pega o que estiver no buffer do teclado então se no buffer não tiver nada,então ele fica esperando digitar alguma coisa e teclar enter e se no buffer tiver algo como o caractere nullo que é quando se pressiona enter então ele passa pelo getline sem parar,  então para reslover isso precisa limpar o buffer do teclado e para isso você pode usar esse comando  :

fflush(stdin);
getline(cin,temp);

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!