none
Como consultar um produto e listar os 5 produtos seguintes?

    Question

  • Tenho um cadastro de produtos e a partir da consulta de um código tenho que trazer os outros 5 seguintes, mas estou com uma dificuldade de fazer isto, poderiam me auxiliar? Segue o pedaço do código:
    case LISTAR_CADASTRO:
    			// @@@@@<08>@@@@@
    				// 1. Pedir o código do primeiro produto a ser listado ou zero para cancelar
    				//		O código do produto deve ser válido.
    				// 2. Listar 5 produtos existentes a partir do informado
    				// 3. Perguntar se vai desistir ou continuar.
    				//	3.1 - Se não vai desistir listar os 5 produtos existentes a seguir e
    				//		  sair fora do switch se o operador informou que não vai mais continuar
    
    				cout << "Entre com o código do 1° produto a ser listado: ";
    				cin >> stProduto.nCodProduto; //Pedir o código do 1° produto.
    				if((stProduto.nCodProduto > 0)||(stProduto.nCodProduto < QTDE_MAXIMA_PRODUTOS))			// código do produto é diferente de zero?
    				{//sim o codigo do produto é!
    					for(i = 1; i<= QTDE_MAXIMA_PRODUTOS; i++)
    					{
    						if(stProduto.nCodProduto == vetProdutos[i].nCodProduto)	
    							cout << "Código de produto válido!" << endl;
    					}//for-if
    
    						for(i = stProduto.nCodProduto; i <= (stProduto.nCodProduto + 5); stProduto.nCodProduto++)
    						{
    							cout << "Código do Produto: " << stProduto.nCodProduto << endl;					//código do produto
    							cout << "Nome do Produto: " << stProduto.cNomeProduto << endl;					// descrição do produto
    							cout << "Status do Produto: " << stProduto.cAtivoOuExcluido << endl;			// 'A' - ativo, 'E' - excluido
    							cout << "Valor do Produto: " << stProduto.dValorUnitario << endl;				// valor unitário do produto
    							cout << "Quant. em Estoque: " << stProduto.dQtdeEstoque << endl;				// quantidade do produto em estoque
    							
    							cout << "Quant. Total de Entrada: " << stProduto.dQtdeTotalEntrada << endl;		// quantidade total acumulada de entrada
    							cout << "Quant. Total de Saída: " << stProduto.dQtdeTotalSaida << endl;			// quantidade total acumulada de saída
    							PAUSA;
    						}//for
    					
    
    				}
    				else
    				{//entrou com zero - operador cancelou!
    					cout << "Operador cancelou a listagem!!!" << endl;
    				}
    				break;

    Aqui o código inteiro:
    // Linguagem de Programação - Prova B1 - Turma da Noite - 11/04/2012
    // FATEC - MC - JCB - Versão 0.0
    #include "PontoDeVenda.h"
    
    // Função que pede o código do produto e verifica se o produto existe (Está Ativo 'A')
    //	Parâmetros:
    //		Entrada: PRODUTO *ptrBuffer - ponteiro para uma struct de produto para receber o
    //									  conteúdo dos dados de um produto se ele estiver ativo
    //				 PRODUTO *ptrVetProdutos - endereço do vetor de produtos que está no
    //									  chamador da função
    //		Retorno: int - OPERADOR_DESISTIU - operador informou zero no código do produto
    //										   indicando que está desistindo
    //					   PRODUTO_NAO_EXISTE - produto não está com 'A' - ativo
    //					   PRODUTO_EXISTE - produto existe: está com 'A' em ativo
    int PedirCodigoLerProduto(PRODUTO *ptrBuffer, PRODUTO *ptrVetProdutos)
    {
    	int i;			//indice genérico
    
    	do
    	{
    		cout << "Código do produto entre 1 e " << QTDE_MAXIMA_PRODUTOS << endl
    			<< "Ou zero para desistir: ";
    		cin >> ptrBuffer->nCodProduto;	// código sendo digitado diretamente na struct da main
    	} while(ptrBuffer->nCodProduto < 0 || ptrBuffer->nCodProduto > QTDE_MAXIMA_PRODUTOS);
    	// @@@@@<01>@@@@@
    	// 1. Verificar se o operador desistiu
    	//	1.1 - Retornar o código de retorno devido
    	// 2. Se o operador não desistiu
    	//	2.1 - Verificar se o produto está ativo ('A' em ativo) usando a aritmética de ponteiros
    	//			Dica - o endereço do vetor de produtos está sendo passado para esta função
    	// 3. Se o produto está ativo (existe) copiar o conteúdo do vetor no ptrBuffer que foi
    	//		passado e retornar: PRODUTO_EXISTE
    	//	3.1 - Caso contrário retornar: PRODUTO_NAO_EXISTE
    
    	if(ptrBuffer->nCodProduto == OPERADOR_DESISTIU)			//Operador desistiu?
    	{//sim, operador desistiu!
    		cout << "O Operador informou zero no código do produto, indicando que está desistindo!";
    		return OPERADOR_DESISTIU;
    		
    	}
    	else
    	{
    		for(i = 0; i < QTDE_MAXIMA_PRODUTOS; i++)
    		*(ptrVetProdutos + i) = *(ptrVetProdutos + i + 1);
    			if(ptrVetProdutos->cAtivoOuExcluido = true)
    			{
    				memcpy(ptrBuffer,(ptrVetProdutos + 1),sizeof(QTDE_MAXIMA_PRODUTOS));
    				return PRODUTO_EXISTE;
    			}
    			else
    			{
    				return PRODUTO_NAO_EXISTE;
    			}//if-else
    
    
    	}//if-else
    	return 999999;					// apenas para não dar erro ??????????????
    
    }
    
    void main(void)
    {
    	int i,									// índice genérico
    		nRetorno;							// retorno da chamada de função
    	PRODUTO stProduto,						// para conter os dados de um produto
    		vetProdutos[QTDE_MAXIMA_PRODUTOS];	// vetor de produtos (Cadastro de produtos em
    											// memória
    	// @@@@@<02>@@@@@
    	// 1. Digitar o seu nome na variável cNomeAluno
    	// 2. Digitar o seu RA na variável cRA
    	char cOpcao,							// opção de escolha do operador
    		cNomeAluno[] = "Clayton Roberto Calixto",		// nome do aluno
    		cRA[] = "102.305-5",					// RA - do Aluno
    		cWork[100];							// área de trabalho
    	SYSTEMTIME stTime;						// struct para buscar data e hora do sistema
    	setlocale(LC_ALL, ("portuguese_brazil")); // para aceitar símbolos gráficos do Brasil
    
    	//
    	// para tratamento do ponto decimal
    	//
    	cout.setf(ios::fixed);
    	cout.setf(ios::showpoint);
    	cout.precision(2);
    
    	// @@@@@<03>@@@@@
    	// 1. Codificar um loop que inicializa o vetor de produtos indicando que
    	//		cada produto não está ativo.
    	for(i = 1; i <= QTDE_MAXIMA_PRODUTOS;i++)
    	{
    		vetProdutos[i + 1].nCodProduto = i;				// inicialização do código do produto
    		//vetProdutos[i + 1].cNomeProduto = "A"			// inicialização do nome do produto
    		vetProdutos[i + 1].dQtdeEstoque = 0;			// inicialização da quantidade de estoque
    		vetProdutos[i + 1].cAtivoOuExcluido = false;	// vetor de produtos recebe falso do 0 até a quantidade máxima.
    		vetProdutos[i + 1].dValorUnitario = 0;			// inicialização do valo unitário
    		vetProdutos[i + 1].dQtdeTotalEntrada = 0;		// inicialização da quantidade de entrada no estoque
    		vetProdutos[i + 1].dQtdeTotalSaida = 0;			// inicialização da quantidade de saida do estoque
    		
    	}//for
    
    	//Montagem do cabeçalho e menu do programa
    	while(true)						// loop infinito
    	{
    		GetLocalTime(&stTime);		// buscar data e hora do sistema
    		// formatar o cabeçalho do menu
    		sprintf(cWork, "\tFATEC-MC LP-Prova_B1 %02d/%02d/%04d %02d:%02d:%02d %s",
    			stTime.wDay,
    			stTime.wMonth,
    			stTime.wYear,
    			stTime.wHour,
    			stTime.wMinute,
    			stTime.wSecond,
    			VERSAO);
    		cout << cWork << endl;
    		cout << "\tAluno: " << cNomeAluno << " RA: " << cRA << endl;
    		cout << "I - Incluir um novo produto" << endl;
    		cout << "E - Excluir um produto existente" << endl;
    		cout << "V - Vender um produto existente" << endl;
    		cout << "M - Mostrar os dados de um produto" << endl;
    		cout << "L - Listar o cadastro de produtos" << endl;
    		cout << "P - Dar entrada no estoque de um produto existente" << endl;
    		cout << "S - Sair do programa" << endl;
    		cout << "\tSelecione: ";
    		cin >> cOpcao;						// pegar a opção operador
    		cOpcao = toupper(cOpcao);			// converter opção para maiúscula
    		switch(cOpcao)						// avaliar a opção escolhida
    		{
    			case INCLUIR_UM_PRODUTO:
    			// @@@@@<04>@@@@@
    				// 1. Chamar a função que pede o código do produto
    				// 2. Analisar o retorno da função
    				//	2.1 - Se o retorno indicar que operador desistiu simplesmente
    				//			sair do switch
    				//	2.2 - Se o retorno indicar que o produto existe, mostrar na tela os
    				//			dados do produto (estão na struct) e perguntar se
    				//			vai fazer a substituição do produto existente
    				//		2.2.1 - Se o operador informou que vai substituir fazer a inclusão
    				//			do produto substituindo o existente
    				//		2.2.2 - Se o operador informou que não vai substituir, simplesmente
    				//			sair fora do switch
    				//	2.3 - Se o produto não existe (Não 'A' ativo) fazer a inclusão:
    				//		2.3.1 - Pedir o nome do produto considerando que tem brancos no nome
    				//		2.3.2 - Pedir o valor unitário
    				//		2.3.3 - Pedir a quantidade em estoque
    				//		2.3.4 - Informar que o produto está ativo
    				//		2.3.5 - Zerar a quantidade entrada e saída 
    				//		2.3.6 - Copiar os dados do produto que estão na struct para o vetor
    				//				se estiver informando os dados para a struct e não diretamente
    				//				para o vetor...
    
    				nRetorno = PedirCodigoLerProduto(&stProduto,  vetProdutos);	//Chamar a função que pede o código do produto
    				if(nRetorno == -1)							//Se o retorno é 0 indicar que operador desistiu simplesmente
    				{
    					cout <<"Operador desistiu simplesmente!";
    					break;
    				}
    				
    				if(nRetorno == 1)							//O Produto existe?
    				{//sim, ele existe!
    					cout << "Código do Produto: " << stProduto.nCodProduto << endl;					//código do produto
    					cout << "Nome do Produto: " << stProduto.cNomeProduto << endl;					// descrição do produto
    					cout << "Status do Produto: " << stProduto.cAtivoOuExcluido << endl;			// 'A' - ativo, 'E' - excluido
    					cout << "Valor do Produto: " << stProduto.dValorUnitario << endl;				// valor unitário do produto
    					cout << "Quant. em Estoque: " << stProduto.dQtdeEstoque << endl;				// quantidade do produto em estoque
    					cout << "Quant. Total de Entrada: " << stProduto.dQtdeTotalEntrada << endl;		// quantidade total acumulada de entrada
    					cout << "Quant. Total de Saída: " << stProduto.dQtdeTotalSaida << endl;			// quantidade total acumulada de saída
    
    					cout << "Deseja substituir os Produtos acima ?('S'- para sim, 'N' - para não: ";
    					cin >> cOpcao;
    					if(cOpcao == 's' || cOpcao == 'S')
    					{
    						cout << "Código do Produto: " << vetProdutos->nCodProduto << endl;					//código do produto
    						cout << "Nome do Produto: " << vetProdutos->cNomeProduto << endl;					// descrição do produto
    						cout << "Status do Produto: " << vetProdutos->cAtivoOuExcluido << endl;			    // 'A' - ativo, 'E' - excluido
    						cout << "Valor do Produto: " << vetProdutos->dValorUnitario << endl;				// valor unitário do produto
    						cout << "Quant. em Estoque: " << vetProdutos->dQtdeEstoque << endl;				    // quantidade do produto em estoque
    						cout << "Quant. Total de Entrada: " << vetProdutos->dQtdeTotalEntrada<< endl;		// quantidade total acumulada de entrada
    						cout << "Quant. Total de Saída: " << vetProdutos->dQtdeTotalSaida << endl;			// quantidade total acumulada de saída	
    					}
    					else
    					{
    						cout <<"Operador não vai substituir!";
    					break;	
    					}//if-else	
    				}//if(nRetorno == 1)
    
    				if(nRetorno == 0 || stProduto.cAtivoOuExcluido == false)			//O Produto não existe?
    				{//sim, ele não existe, vamos incluir!
    						cout << "Código do Produto: " << vetProdutos->nCodProduto << endl;					//código do produto
    						cout << "Nome do Produto: " << vetProdutos->cNomeProduto << endl;					// descrição do produto
    						cout << "Status do Produto: " << vetProdutos->cAtivoOuExcluido << endl;			    // 'A' - ativo, 'E' - excluido
    						cout << "Valor do Produto: " << vetProdutos->dValorUnitario << endl;				// valor unitário do produto
    						cout << "Quant. em Estoque: " << vetProdutos->dQtdeEstoque << endl;				    // quantidade do produto em estoque
    						cout << "Quant. Total de Entrada: " << vetProdutos->dQtdeTotalEntrada << endl;		// quantidade total acumulada de entrada
    						cout << "Quant. Total de Saída: " << vetProdutos->dQtdeTotalSaida<< endl;			// quantidade total acumulada de saída	
    				
    				}//if(nRetorno == 0 || stProduto.cAtivoOuExcluido == false)
    				break;
    
    			case EXCLUIR_UM_PRODUTO:
    			// @@@@@<05>@@@@@
    				// 1. Chamar a função que pede o código do produto
    				// 2. Analisar o retorno da função
    				//	2.1 - Se o retorno indicar que operador desistiu simplesmente
    				//			sair do switch
    				//	2.2 - Se o retorno indicar que o produto existe, mostrar na tela os
    				//			dados do produto (estão na struct) e perguntar se
    				//			vai fazer realmente a exclusão do produto existente
    				//		2.2.1 - Se o operador informou que vai fazer a exclusão
    				//			do produto mover 'E' no produto no vetor de produtos
    				//		2.2.2 - Se o operador informou que não vai excluir, simplesmente
    				//			sair fora do switch
    
    		nRetorno = PedirCodigoLerProduto(&stProduto,vetProdutos);	//Chamar a função que pede o código do produto
    				if(nRetorno == -1)							//Se o retorno é 0 indicar que operador desistiu simplesmente
    				{
    					cout <<"Operador desistiu simplesmente!";
    					break;
    				}
    				
    				if(nRetorno == 1)							//O produto existe!
    				{
    					cout << "Código do Produto: " << stProduto.nCodProduto << endl;					//código do produto
    					cout << "Nome do Produto: " << stProduto.cNomeProduto << endl;					// descrição do produto
    					cout << "Status do Produto: " << stProduto.cAtivoOuExcluido << endl;			// 'A' - ativo, 'E' - excluido
    					cout << "Valor do Produto: " << stProduto.dValorUnitario << endl;				// valor unitário do produto
    					cout << "Quant. em Estoque: " << stProduto.dQtdeEstoque << endl;				// quantidade do produto em estoque
    					cout << "Quant. Total de Entrada: " << stProduto.dQtdeTotalEntrada << endl;		// quantidade total acumulada de entrada
    					cout << "Quant. Total de Saída: " << stProduto.dQtdeTotalSaida << endl;			// quantidade total acumulada de saída
    
    					cout << "Deseja excluir o Produtos acima ?('S'- para sim, 'N' - para não): ";
    					cin >> cOpcao;
    					if(cOpcao == 's' || cOpcao == 'S')
    					{
    						cout << "Código do Produto: " << stProduto.nCodProduto << endl;					//código do produto
    						cout << "Nome do Produto: " << stProduto.cNomeProduto << endl;					// descrição do produto
    						stProduto.cAtivoOuExcluido = 'E';
    						cout << "Status do Produto: " << stProduto.cAtivoOuExcluido << endl;			// 'A' - ativo, 'E' - excluido
    						cout << "Valor do Produto: " << stProduto.dValorUnitario << endl;				// valor unitário do produto
    						cout << "Quant. em Estoque: " << stProduto.dQtdeEstoque << endl;				// quantidade do produto em estoque
    						cout << "Quant. Total de Entrada: " << stProduto.dQtdeTotalEntrada << endl;		// quantidade total acumulada de entrada
    						cout << "Quant. Total de Saída: " << stProduto.dQtdeTotalSaida << endl;			// quantidade total acumulada de saída
    						
    					}
    					else
    					{
    						cout <<"Operador não vai excluir!";
    					break;	
    					}//if-else	
    				}//if(nRetorno == 1)
    
    				
    				break;
    			case VENDER_UM_PRODUTO:
    			// @@@@@<06>@@@@@
    				// 1. Chamar a função que pede o código do produto
    				// 2. Analisar o retorno da função
    				//	2.1 - Se o retorno indicar que operador desistiu simplesmente
    				//			sair do switch
    				//	2.2 - Se o retorno indicar que o produto existe, mostrar na tela os
    				//			dados do produto...
    				// 3. Pedir a quantidade a vender e verificar se tem no estoque
    				//	3.1 - Se não tiver quantidade suficiente no estoque avisar ao operador e
    				//		  sair fora do switch
    				// 4. Exibir o valor total da venda (Qtde vendida * preço unitário)
    				// 5. Subtrair do estoque a quantidade vendida (dQtdeEstoque)
    				//		Somar na qtde total de saida (dQtdeTotalSaida)
    				// 6. Pausa para o operador poder ver e sair do switch
    
    				double dQtdeVender;
    
    		nRetorno = PedirCodigoLerProduto(&stProduto, vetProdutos);	//Chamar a função que pede o código do produto
    				if(nRetorno == -1)							//Se o retorno é 0 indicar que operador desistiu simplesmente
    				{
    					cout <<"Operador desistiu simplesmente!";
    					break;
    				}
    				
    				if(nRetorno == 1)							//O produto existe!
    				{
    					cout << "Código do Produto: " << stProduto.nCodProduto << endl;					//código do produto
    					cout << "Nome do Produto: " << stProduto.cNomeProduto << endl;					// descrição do produto
    					cout << "Status do Produto: " << stProduto.cAtivoOuExcluido << endl;			// 'A' - ativo, 'E' - excluido
    					cout << "Valor do Produto: " << stProduto.dValorUnitario << endl;				// valor unitário do produto
    					cout << "Quant. em Estoque: " << stProduto.dQtdeEstoque << endl;				// quantidade do produto em estoque
    					cout << "Quant. Total de Entrada: " << stProduto.dQtdeTotalEntrada << endl;		// quantidade total acumulada de entrada
    					cout << "Quant. Total de Saída: " << stProduto.dQtdeTotalSaida << endl;			// quantidade total acumulada de saída
    
    					cout << "Informe  a quantidade a vender:";
    					cin >> dQtdeVender;
    					if(stProduto.dQtdeEstoque < dQtdeVender )			//Estoque esta menor que pedido?
    					{// sim, não há estoque!
    						cout << "Não há estoque suficiente para a venda!" << endl;
    					}
    					else
    					{ 
    						cout << "Preço da Venda: " << dQtdeVender * stProduto.dValorUnitario << endl;      // valor da venda
    						stProduto.dQtdeEstoque = stProduto.dQtdeEstoque - dQtdeVender;
    						cout << "Saldo atual de estoque: " << stProduto.dQtdeEstoque << endl;				//Saldo atual de estoque
    						stProduto.dQtdeTotalSaida = stProduto.dQtdeTotalSaida + dQtdeVender;
    						cout << "Saldo atual da quantidade de saida:" << stProduto.dQtdeTotalSaida << endl; //Saldo atual da quantidade de saida
    						PAUSA;
    					}//if-else
    				}//if					
    						
    				break;
    			case MOSTRAR_UM_PRODUTO:
    			// @@@@@<07>@@@@@
    				// 1. Chamar a função que pede o código do produto
    				// 2. Analisar o retorno da função
    				//	2.1 - Se o retorno indicar que operador desistiu simplesmente
    				//			sair do switch
    				//	2.2 - Se o retorno indicar que o produto existe, mostrar na tela os
    				//			dados do produto...
    				// 3. Pausa para o operador poder verificar e sair do switch
    				nRetorno = PedirCodigoLerProduto(&stProduto, vetProdutos);	//Chamar a função que pede o código do produto
    				if(nRetorno == -1)							//Se o retorno é 0 indicar que operador desistiu simplesmente
    				{
    					cout <<"Operador desistiu simplesmente!";
    					break;
    				}
    				
    				if(nRetorno == 1)							//O produto existe!
    				{
    					cout << "Código do Produto: " << stProduto.nCodProduto << endl;					//código do produto
    					cout << "Nome do Produto: " << stProduto.cNomeProduto << endl;					// descrição do produto
    					cout << "Status do Produto: " << stProduto.cAtivoOuExcluido << endl;			// 'A' - ativo, 'E' - excluido
    					cout << "Valor do Produto: " << stProduto.dValorUnitario << endl;				// valor unitário do produto
    					cout << "Quant. em Estoque: " << stProduto.dQtdeEstoque << endl;				// quantidade do produto em estoque
    					cout << "Quant. Total de Entrada: " << stProduto.dQtdeTotalEntrada << endl;		// quantidade total acumulada de entrada
    					cout << "Quant. Total de Saída: " << stProduto.dQtdeTotalSaida << endl;			// quantidade total acumulada de saída
    					PAUSA;
    				}
    				break;
    			case LISTAR_CADASTRO:
    			// @@@@@<08>@@@@@
    				// 1. Pedir o código do primeiro produto a ser listado ou zero para cancelar
    				//		O código do produto deve ser válido.
    				// 2. Listar 5 produtos existentes a partir do informado
    				// 3. Perguntar se vai desistir ou continuar.
    				//	3.1 - Se não vai desistir listar os 5 produtos existentes a seguir e
    				//		  sair fora do switch se o operador informou que não vai mais continuar
    
    				cout << "Entre com o código do 1° produto a ser listado: ";
    				cin >> stProduto.nCodProduto; //Pedir o código do 1° produto.
    				if((stProduto.nCodProduto > 0)||(stProduto.nCodProduto < QTDE_MAXIMA_PRODUTOS))			// código do produto é diferente de zero?
    				{//sim o codigo do produto é!
    					for(i = 1; i<= QTDE_MAXIMA_PRODUTOS; i++)
    					{
    						if(stProduto.nCodProduto == vetProdutos[i].nCodProduto)	
    							cout << "Código de produto válido!" << endl;
    					}//for-if
    
    						for(i = stProduto.nCodProduto; i <= (stProduto.nCodProduto + 5); stProduto.nCodProduto++)
    						{
    							cout << "Código do Produto: " << stProduto.nCodProduto << endl;					//código do produto
    							cout << "Nome do Produto: " << stProduto.cNomeProduto << endl;					// descrição do produto
    							cout << "Status do Produto: " << stProduto.cAtivoOuExcluido << endl;			// 'A' - ativo, 'E' - excluido
    							cout << "Valor do Produto: " << stProduto.dValorUnitario << endl;				// valor unitário do produto
    							cout << "Quant. em Estoque: " << stProduto.dQtdeEstoque << endl;				// quantidade do produto em estoque
    							
    							cout << "Quant. Total de Entrada: " << stProduto.dQtdeTotalEntrada << endl;		// quantidade total acumulada de entrada
    							cout << "Quant. Total de Saída: " << stProduto.dQtdeTotalSaida << endl;			// quantidade total acumulada de saída
    							PAUSA;
    						}//for
    					
    
    				}
    				else
    				{//entrou com zero - operador cancelou!
    					cout << "Operador cancelou a listagem!!!" << endl;
    				}
    				break;
    			case DAR_ENTRADA_PRODUTO:
    			// @@@@@<09>@@@@@
    				// 1. Chamar a função que pede o código do produto
    				// 2. Analisar o retorno da função
    				//	2.1 - Se o retorno indicar que operador desistiu simplesmente
    				//			sair do switch
    				//	2.2 - Se o retorno indicar que o produto existe, mostrar na tela os
    				//			dados do produto...
    				// 3. Pedir a quantidade a dar entrada (Qtde_Entrada)
    				// 4. Pedir o valor total da entrada (Valor_Total_Entrada)
    				// 5. Calcular o novo preço unitário do produto:
    				//	 dValorUnitario = ((dQtdeEstoque * dValorUnitario) + Valor_Total_Entrada) /
    				//						(dQtdeEstoque + Qtde_Entrada)
    				// 6. Somar Qtde_Entrada  em dQtdeEstoque e em dQtdeTotalEntrada 
    				break;
    			case SAIR_DO_PROGRAMA:
    				cout << "Vai sair realmente? (S ou N): ";
    				cin >> cOpcao;
    				if(cOpcao == 's' || cOpcao == 'S')
    					exit(0);
    			    break;
    				
    			default:
    				cout << "Informar opção válida!" << endl;
    				PAUSA;
    		} // switch
    	} // while (true)
    } // main

    E a aqui o .h:
    // Declarações da Prova B1 - 11/04/2012 - Turma da Noite
    #include <iostream>
    #include <windows.h>
    using namespace std;
    
    // Definições
    #define QTDE_MAXIMA_PRODUTOS			2000
    #define PAUSA							system("pause")
    #define LIMPA_TELA						system("cls")
    #define VERSAO							"Versão 0.0"
    
    // Definições do menu
    #define INCLUIR_UM_PRODUTO				'I'
    #define EXCLUIR_UM_PRODUTO				'E'
    #define VENDER_UM_PRODUTO				'V'
    #define MOSTRAR_UM_PRODUTO				'M'
    #define DAR_ENTRADA_PRODUTO				'P'
    #define LISTAR_CADASTRO					'L'
    #define SAIR_DO_PROGRAMA				'S'
    
    // definições dos retornos da função que pede código e lê o produto
    #define OPERADOR_DESISTIU				-1
    #define PRODUTO_NAO_EXISTE				0
    #define PRODUTO_EXISTE					1					
    
    // layout do registro de cada produto
    typedef struct tagPRODUTO
    {
    	int nCodProduto;					// apenas para verificar se a leitura foi OK
    	char cNomeProduto[41],				// descrição do produto
    		cAtivoOuExcluido;				// 'A' - ativo, 'E' - excluido
    	double dValorUnitario,				// valor unitário do produto
    		dQtdeEstoque,					// quantidade do produto em estoque
    		dQtdeTotalEntrada,				// quantidade total acumulada de entrada
    		dQtdeTotalSaida;				// quantidade total acumulada de saida
    } PRODUTO;								// struct do produto
    

    // Declaraes da Prova B1 - 11/04/2012 - Turma da Noite


    #include

    <iostream>


    #include

    <windows.h>


    using

    namespace std;



    // Definies


    #define

    QTDE_MAXIMA_PRODUTOS 2000


    #define

    PAUSA system("pause")


    #define

    LIMPA_TELA system("cls")


    #define

    VERSAO "Verso 0.0"



    // Definies do menu


    #define

    INCLUIR_UM_PRODUTO 'I'


    #define

    EXCLUIR_UM_PRODUTO 'E'


    #define

    VENDER_UM_PRODUTO 'V'


    #define

    MOSTRAR_UM_PRODUTO 'M'


    #define

    DAR_ENTRADA_PRODUTO 'P'


    #define

    LISTAR_CADASTRO 'L'


    #define

    SAIR_DO_PROGRAMA 'S'



    // definies dos retornos da funo que pede cdigo e l o produto


    #define

    OPERADOR_DESISTIU -1


    #define

    PRODUTO_NAO_EXISTE 0


    #define

    PRODUTO_EXISTE 1



    // layout do registro de cada produto


    typedef

    struct tagPRODUTO

    {

    int nCodProduto; // apenas para verificar se a leitura foi OK


    char cNomeProduto[41], // descrio do produto


    cAtivoOuExcluido;

    // 'A' - ativo, 'E' - excluido


    double dValorUnitario, // valor unitrio do produto


    dQtdeEstoque,

    // quantidade do produto em estoque


    dQtdeTotalEntrada,

    // quantidade total acumulada de entrada


    dQtdeTotalSaida;

    // quantidade total acumulada de saida


    } PRODUTO;

    // struct do produto


    Clayton Roberto Calixto

    Wednesday, September 12, 2012 10:26 PM

Answers

  • Prezados, tudo bem!

    Depois de 200 views neste post, sem nenhuma resposta, segue a minha resposta com o bloco do código, observe  a linha a partir de nContador esta implementação que fará o controle para imprimir na tela, a lista de 5 em 5 produtos:

    			case LISTAR_CADASTRO:
    			// @@@@@<08>@@@@@
    				// 1. Pedir o código do primeiro produto a ser listado ou zero para cancelar
    				//		O código do produto deve ser válido.
    				// 2. Listar 5 produtos existentes a partir do informado
    				// 3. Perguntar se vai desistir ou continuar.
    				//	3.1 - Se não vai desistir listar os 5 produtos existentes a seguir e
    				//		  sair fora do switch se o operador informou que não vai mais continuar
    
    				cout << "Entre com o código do 1° produto a ser listado ou 0 (zero) para cancelar: ";
    				cin >> stProduto.nCodProduto; //Pedir o código do 1° produto.
    				if((stProduto.nCodProduto > 0)||(stProduto.nCodProduto < QTDE_MAXIMA_PRODUTOS))			// código do produto é diferente de zero?
    				{//sim o codigo do produto é!
    					while(true)
    					{
    					   for(i = 1; i<= QTDE_MAXIMA_PRODUTOS; i++)
    					   {
    						   if(stProduto.nCodProduto == vetProdutos[i].nCodProduto)	
    							cout << "Código de produto válido!" << endl;
    					   }//for-if
    
    					    for(i = stProduto.nCodProduto; i <= (stProduto.nCodProduto + 5); stProduto.nCodProduto++)
    						{
    							cout << "Código do Produto: " << stProduto.nCodProduto << endl;					//código do produto
    							cout << "Nome do Produto: " << stProduto.cNomeProduto << endl;					// descrição do produto
    							cout << "Status do Produto: " << stProduto.cAtivoOuExcluido << endl;			// 'A' - ativo, 'E' - excluido
    							cout << "Valor do Produto: " << stProduto.dValorUnitario << endl;				// valor unitário do produto
    							cout << "Quant. em Estoque: " << stProduto.dQtdeEstoque << endl;				// quantidade do produto em estoque
    							
    							cout << "Quant. Total de Entrada: " << stProduto.dQtdeTotalEntrada << endl;		// quantidade total acumulada de entrada
    							cout << "Quant. Total de Saída: " << stProduto.dQtdeTotalSaida << endl;			// quantidade total acumulada de saída
    							//listar o total de 5 produtos
    							if(++nContador == 5)			//listou todos os 5?
    							{ //listou todos!
    								nContador = 0;				//para listar outros
    								cout << " continua listando? ('S' para sim - 'N' para não):";
    								cin >> cOpcao;
    								if((cOpcao == 'S')|| (cOpcao == 's'))
    								{ // continua listagem
    									LIMPA_TELA;
    									GetLocalTime(&stTime);
    									sprintf(cWork, "\t FATEC - MC: Listagem de Produtos - %02d:%02d:%02d",
    										stTime.wHour, stTime.wMinute, stTime.wSecond);
    									cout << cWork << endl << endl;
    									continue;			// continua no while
    								}
    								else
    								{
    									exit(0);
    									break;					//cai fora do while
    								}//if-else
    							}//if-nContador				
    							PAUSA;
    						}//for 	
    					}//while
    				}//if-0 (zero) para cancelar					
    				else
    				{//entrou com zero - operador cancelou!
    					cout << "Operador cancelou a listagem!!!" << endl;
    				}//if-else
    				break;

    :


    Clayton Roberto Calixto

    • Marked as answer by claytoncalixto Tuesday, October 23, 2012 5:46 PM
    Tuesday, October 23, 2012 5:45 PM