Ir ao conteúdo
  • Cadastre-se

samucaur

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Reputação

0
  1. samucaur

    Lista/Imprimir

    Preciso gerar um relatório .txt dos produtos cadastrados em produtos ativos, inativos, falta implementar a parte de vendas do MENU PRINCIPAL. Tô apanhando muito em ponteiros sem alguém puder me ajudar ficaria muito grato, wlw galera. #include<iostream> #include<stdio.h> #include<stdlib.h> #include<conio.h> #include<windows.h> #include <locale.h> #include <sstream> #include <string> // ler e escrever um arquivo de texto #include <fstream> // ler e escrever um arquivo de texto using namespace std; struct cadastro{ char nome[50]; int ID; int quantidade; float preco; bool ativo; cadastro *prox; }; cadastro * inserir(cadastro *inicio, cadastro *novo){ cadastro *encontrar = NULL; cadastro * aux = inicio; if(inicio == NULL){ inicio = novo; }else if(novo->ID > inicio->ID && inicio->prox==NULL){ inicio->prox = novo; }else if(novo->ID < inicio->ID){ novo->prox = inicio;//novo aponta pro prox que é o inicio ate então, o prox=inicio é um cara só inicio = novo;//inicio agora é o novo }else{ while(aux->prox->ID < novo->ID && aux->prox->prox != NULL){//enquanto o novo for maior que o anterior aux=aux->prox;//aux é o ultimo que aponta para prox } //inserir o novo depois do aux //se for menor que o ultimo (saiu por causa do primeiro criterio) if(aux->prox->ID > novo->ID ){ novo->prox = aux->prox; //aponta pro mesmo proximo do aux, ja que ele sera inserido depois do aux aux->prox = novo; }else{ //preciso inserir na ultima posicao //o aux esta na penultima posicao, tenho que me mover para a ultima aux = aux->prox; //depois de chegar na ultima posicao, insiro o novo elemento no final (prox) aux->prox = novo; } return inicio; } } cadastro * alterar (cadastro *inicio, int ID, int quantidade){ cadastro * aux = inicio; if(inicio == NULL){ cout << "NENHUM PRODUTO CADASTRADO" <<endl; }else{ while(aux != NULL){ if(aux->ID == ID) break; aux = aux->prox;//aux é o que recebe o prox } if(aux != NULL){ //o produto que querem alterar e o AUX aux->quantidade = quantidade; }else{ cout << "PRODUTO NAO CADASTRADO" << endl; } } return inicio; } cadastro * listar_produtos (cadastro *inicio, int ID){ cadastro * aux = inicio; if(inicio == NULL){ cout << "NENHUM PRODUTO CADASTRADO" <<endl; }else{ while(aux != NULL){ if(aux->ID == ID) break; aux = aux->prox;//aux é o que recebe o prox } if(aux != NULL){ if(aux->ativo == true){ cout << "PRODUTO ATIVO - SERA INATIVADO" <<endl; aux->ativo = false; }else{ cout << "PRODUTO INATIVO - SERA ATIVADO" <<endl; aux->ativo = true; } //o produto que querem alterar e o AUX }else{ cout << "NENHUM PRODUTO CADASTRADO" <<endl; } } return inicio; } cadastro * ativo_inativo (cadastro *inicio, int ID){ cadastro * aux = inicio; if(inicio == NULL){ cout << "NENHUM PRODUTO CADASTRADO" <<endl; }else{ while(aux != NULL){ if(aux->ID == ID) break; aux = aux->prox;//aux é o que recebe o prox } if(aux != NULL){ if(aux->ativo == true){ cout << "PRODUTO ATIVO - SERA INATIVADO" <<endl; aux->ativo = false; }else{ cout << "PRODUTO INATIVO - SERA ATIVADO" <<endl; aux->ativo = true; } //o produto que querem alterar e o AUX }else{ cout << "NENHUM PRODUTO CADASTRADO" <<endl; } } return inicio; } void MenuPrincipal(){ cout << "#---------------------#" << endl; cout << "# MENU PRINCIPAL #" << endl; cout << "#---------------------#" << endl; cout << "[1] - GERENCIAR ESTOQUE" << endl; cout << "[2] - COMPRAS" << endl; cout << "[3] - SAIR DO PROGRAMA" << endl; cout << "OPCAO: "; } void MenuEstoque(){ cout << "#--------------------------------------#" << endl; cout << "# MENU ESTOQUE #" << endl; cout << "#--------------------------------------#" << endl; cout << "[1] CADASTRAR PRODUTO" << endl; cout << "[2] ALTERAR QUANTIDADE" << endl; cout << "[3] ATIVAR OU INATIVAR PRODUTO" << endl; cout << "[4] LISTAR TODOS OS PRODUTOS" << endl; cout << "[5] LISTAR PRODUTOS ATIVOS" << endl; cout << "[6] LISTAR PRODUTOS INATIVOS" << endl; cout << "[7] VOLTAR AO MENU PRINCIPAL" << endl; cout << "OPCAO: "; } void MenuCompras(){ cout << "----------------------------------" << endl; cout << "[1]. PEDIDOS" << endl; cout << "[2]. LISTAR" << endl; cout << "[3]. SAIR" << endl; cout << "OPCAO: "; } void carregar_arquivo(){//EXEMPLO DE COMO IMPRIMIR A LISTA string line; ifstream myfile ; // ifstream = padrão ios:in para fazer o implot do arquivo } //TESTANDO void escreve_arquivo(){ int x = 2 , y = 2, soma = 0; ofstream Saida; Saida.open("saida.txt"); soma = x + y; Saida << "A soma é: " << soma << endl; Saida.close(); } int main(){ cadastro *inicio= NULL;//ponteiro, vazio de inicio cadastro *fim= NULL; cadastro *aux= NULL;//possui um endereço de memoria(um ponteiro vai armazenar um endereco de memória) int ID, QTDE; SetConsoleOutputCP(1252); system ("color F1"); int op_Menu_Principal = -1; while(op_Menu_Principal != 3){ MenuPrincipal(); cin >> op_Menu_Principal; //Captura de variável do menu principal switch(op_Menu_Principal){ case 1: int op_Menu_Estoque = -1; //while(op_Menu_Estoque){ while( op_Menu_Estoque!= 7){ MenuEstoque(); cin >> op_Menu_Estoque; switch(op_Menu_Estoque){ case 1: aux = (cadastro *) malloc(sizeof(cadastro));//nao é vetor pois nao tem nenhum numero multiplicando o tamanho do ponteiro, sizeof cout << "-------------------------------------------" << endl; cout <<"INFORME o ID: "; cin >> aux->ID; cout <<"INFORME O NOME DO PRODUTO: "; cin >> aux->nome; cout <<"INFORME QUANTIDADE DO PRODUTO: "; cin >> aux->quantidade; cout << "INFORME O PREÇO DO PRODUTO: "; cin >> aux->preco; while(aux->quantidade < 6 || aux->quantidade < 0) { cout << "DIGITE A QUANTIDADE CORRETA: "; cin >> aux->quantidade; } aux->ativo = true; aux->prox = NULL; inicio = inserir(inicio, aux); cout << "-------------------------------------------" << endl; break; case 2: cout << "-------------------------------------------" << endl; cout << "INFORME O ID: "; cin >> ID; cout << "INFORME A NOVA QUANTIDADE: "; cin >> QTDE; inicio = alterar(inicio, ID, QTDE); cout << "-------------------------------------------" << endl; break; case 3: cout << "-------------------------------------------" << endl; cout << "INFORME O ID: "; cin >> ID; inicio = ativo_inativo(inicio, ID); cout << "-------------------------------------------" << endl; break; case 4: aux = inicio;//aux vai ser impresso, então sera o primeiro cout << "-------------------------------------------" << endl; cout << "RELATÓRIO DOS PRODUTOS CADASTRADOS" << endl; while(aux != NULL){//se aux for diferente de null, tem algo nele o while vai contar cout <<"ID: " << aux->ID << endl; cout << "PRODUTO: " << aux->nome << endl; cout << "QUANTIDADE: " << aux->quantidade << endl; aux = aux->prox; } break; case 5: cout << "-------------------------------------------" << endl; cout << "RELATÓRIO DOS PRODUTOS CADASTRADOS ATIVADOS" << endl; aux = inicio;//aux vai ser impresso, então sera o primeiro while(aux != NULL && aux->ativo == true){//se aux for diferente de null, tem algo nele o while vai contar cout <<"ID: " << aux->ID << endl; cout << "PRODUTO: " << aux->nome << endl; cout << "QUANTIDADE: " << aux->quantidade << endl; aux = aux->prox; } cout << "-------------------------------------------" << endl; break; case 6: cout << "-------------------------------------------" << endl; cout << "RELATÓRIO DOS PRODUTOS CADASTRADOS DESATIVADOS" << endl; aux = inicio;//aux vai ser impresso, então sera o primeiro while(aux != NULL && aux->ativo == false){//se aux for diferente de null, tem algo nele o while vai contar cout <<"ID: " << aux->ID << endl; cout << "PRODUTO: " << aux->nome << endl; cout << "QUANTIDADE: " << aux->quantidade << endl; aux = aux->prox; } cout << "-------------------------------------------" << endl; break; } } } } int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCdmShow); { MessageBox (NULL, "OBRIGADO POR USAR NOSSO SISTEMA!!","SVT SYSTEM", MB_OK | MB_ICONINFORMATION); } }

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