Ir ao conteúdo

Posts recomendados

Postado
#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
Postado

@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

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!