Ir ao conteúdo
  • Cadastre-se

Programa em c++ dando crash


Posts recomendados

Olá pessoal beleza?

Então eu estava desenvolvendo um programa pequeno para uma  atividade da faculdade e me deparei com um crash que não estou conseguindo solucionar, primeiramente irei dizer sobre o que o programa se trata. O programa simula o estoque de uma empresa digamos assim, ele faz o cadastro de 10 produtos armazenando os seus respectivos nomes, codigos, quantidade de itens e valor unitário dos mesmos, esse é o primeiro passo. No segundo passo o programa pede para o usuário digitar um código de um produto já cadastrado e a partir daí pode ser feita as operações de retirada ou inclusão dos produtos, após feita essa operação a quantidade dos produtos seria atualizada, por fim o programa exibiria a quantidade de cada item no estoque, a quantidade total em estoque e o valor total em estoque. É um programa pequeno e simples aparentemente, sendo que estou tendo problemas no segundo passo, a leitura dos dados esta ocorrendo bem, sendo que quando o programa solicita para inserir o código do produto cadastrado, para fazer as operações de retirada ou inclusão, o código pula a parte que deveria ser feita a comparação do código inserido com os códigos já cadastrados no vetor e ele vai para o fim do programa e dá crash, eu só li e reli o programa de cabo a rabo e não consegui achar erros na lógica ou sintaxe, por isso estou pedindo ajuda rsrs, vou deixar o código abaixo para que vocês possam analisá-lo.

 

 

#include <stdio.h>
#include<stdlib.h>
#include<locale.h>
main()
{
      
      int i = 1, codigo[10], quantidade[10];
      float valor[10], soma = 0;
      char nome[10], escolha;
      int codn, quantn, quantr, estoque = 0;
      
      setlocale(LC_ALL,"Portuguese");
      
      
      while(i<=10){
      printf("----------CADASTRO DO PRODUTO------------");
      printf("\n\nDescrição do %dº Produto: ", i);
      scanf("%s", &nome);
      printf("\nInforme o Código do Produto: ");
      scanf("%d", &codigo);
      printf("\nInforme a Quantidade de Produtos: ");
      scanf("%d", &quantidade);
      printf("\nInforme o Valor Unitário do Produto: ");
      scanf("%f", &valor);
      system("cls");
      i++;
      
      }
      
      do{
          printf("----------Para a Inclusão ou Retirada de Produtos----------");
          printf("\n\nInforme o Código do produto: ");
          scanf("%d", &codn);
          
          if(codn == codigo){
                  
                  system("cls");
                  printf("Descrição do Produto --> %s", nome);
                  printf("\n\nSelecione uma Operação para ser Realizada");
                  printf("\n Inclusão || [R] Retirada || [Q] Sair");
                  scanf("%s", &escolha);
                  
                  if (escolha == 'I'){
                              
                              system("cls");
                              printf("Informe a Quantidade que Deseja Incluir: ");
                              scanf("%d", &quantn);
                              printf("\n\nQuantidade Atual em Estoque: %d", quantidade);
                              quantidade= quantidade + quantn;
                              printf("\n\nQuantidade Atualizada em Estoque: %d", quantidade);
                              }
                              
                  if(escolha == 'R'){
                             
                             system("cls");
                             printf("Informe a Quantidade que deseja Retirar: ");
                             scanf("%d", &quantr);
                             printf("Quantidade Atual em Estoque: %d", quantidade);
                             
                             if (quantr > quantidade){
                                        printf("\n\nEstoque Insuficiente");
                                                         }
                             
                             else{
                                  quantidade = quantidade - quantr;
                                  printf("\n\nQuantidade Atualizada em Estoque %d", quantidade);
                                  }
                                  
                                     }
                             
                                }
          }while(escolha == 'I' || escolha == 'R');
          
          
          system("cls");
          
          for(i=1; i<=10; i++){
                   
                   soma = soma + (quantidade * valor);
                   estoque = estoque + quantidade;
                   
                   }
          
          printf("Quantidade dos Produtos em Estoque\n\n");
          
          for(i=1; i<=10; i++){
                   printf("Nome do produto = %s || Quantidade em Estoque = %d || Valor do Produto = %.2f", nome, quantidade, valor);
                                }
                                
          
          printf("\n\nQuantidade Total em Estoque = %d", estoque);
          printf("\nValor Total em Estoque = %.2f", soma);
          
          system("pause");
}

 

 

PS: Eu sei que deve haver inúmeros modos mais sofisticados na linguagem para fazer esse programa, mas considerando o conhecimento atual que tenho na linguagem foi o máximo que consegui a principio, gostaria de pedir que se possível usassem os mesmos métodos ou então algo não muito avançado para eu não ficar boiando kkk, abraços ;)

Link para o comentário
Compartilhar em outros sites

Sempre que postar um codigo use a ferramenta <> que aparece acima do texto onde você esta escrevendo o post, senão seu codigo vai vir todo desconfigurado, e não saberemos dizer exatamente o problema dele, então segue a correção, creio que não sei dizer exatamente seu erro, mas percebi que esta faltando o uso de [] para identificar o local de acesso dos vetores codigo, valor, quantidade, etc.

 

#include <stdio.h>
#include<stdlib.h>
#include<locale.h>
main()
{

      int i = 1, codigo[10], quantidade[10];
      float valor[10], soma = 0;
      char nome[10][32], escolha;
      int codn, quantn, quantr, estoque = 0;

      setlocale(LC_ALL,"Portuguese");


      while(i<=10){
        printf("----------CADASTRO DO PRODUTO------------");
        printf("\n\nDescrição do %dº Produto: ", i);
        scanf("%s", nome[i]);
        printf("\nInforme o Código do Produto: ");
        scanf("%d", &codigo[i]);
        printf("\nInforme a Quantidade de Produtos: ");
        scanf("%d", &quantidade[i]);
        printf("\nInforme o Valor Unitário do Produto: ");
        scanf("%f", &valor[i]);
        system("cls");
        i++;
      }

      do{
          printf("----------Para a Inclusão ou Retirada de Produtos----------");
          printf("\n\nInforme o Código do produto: ");
          scanf("%d", &codn);

          if(codn == codigo[i]){

                  system("cls");
                  printf("Descrição do Produto --> %s", nome[i]);
                  printf("\n\nSelecione uma Operação para ser Realizada");
                  printf("\n Inclusão || [R] Retirada || [Q] Sair");
                  scanf("%s", &escolha);

                  if (escolha == 'I'){

                              system("cls");
                              printf("Informe a Quantidade que Deseja Incluir: ");
                              scanf("%d", &quantn);
                              printf("\n\nQuantidade Atual em Estoque: %d", quantidade[i]);
                              quantidade[i]= quantidade[i] + quantn;
                              printf("\n\nQuantidade Atualizada em Estoque: %d", quantidade[i]);
                              }

                  if(escolha == 'R'){

                             system("cls");
                             printf("Informe a Quantidade que deseja Retirar: ");
                             scanf("%d", &quantr);
                             printf("Quantidade Atual em Estoque: %d", quantidade[i]);

                             if (quantr > quantidade[i]){
                                        printf("\n\nEstoque Insuficiente");
                                                         }

                             else{
                                  quantidade[i] = quantidade[i] - quantr;
                                  printf("\n\nQuantidade Atualizada em Estoque %d", quantidade[i]);
                                  }

                                     }

                                }
          }while(escolha == 'I' || escolha == 'R');


          system("cls");

          for(i=1; i<=10; i++){

                   soma = soma + (quantidade[i] * valor[i]);
                   estoque = estoque + quantidade[i];

                   }

          printf("Quantidade dos Produtos em Estoque\n\n");

          for(i=1; i<=10; i++){
                   printf("Nome do produto = %s || Quantidade em Estoque = %d || Valor do Produto = %.2f", nome[i], quantidade[i], valor[i]);
                                }


          printf("\n\nQuantidade Total em Estoque = %d", estoque);
          printf("\nValor Total em Estoque = %.2f", soma);

          system("pause");
}

 

Link para o comentário
Compartilhar em outros sites

Nossa eu realmente esqueci das chaves, bom agora o crash parou, mas eu ainda não estou conseguindo fazer a comparação do código digitado com o código armazenado no vetor para ser feita a operação de retirada ou inclusão de itens, agora em vez do programa dar crash ele exibi as informações finais e pula o "if" que faz a comparação com o valor digitado na variavel "codn" com o vetor "codigo" vou mostrar como está o código agora:

 

#include <stdio.h>
#include<stdlib.h>
#include<locale.h>
main()
{

      int i = 1, codigo[10], quantidade[10];
      float valor[10], soma = 0;
      char nome[10][20], escolha;
      int codn, quantn, quantr, estoque = 0;

      setlocale(LC_ALL,"Portuguese");


      while(i<=10){
        printf("----------CADASTRO DO PRODUTO------------");
        printf("\n\nDescrição do %dº Produto: ", i);
        scanf("%s", &nome[i]);
        printf("\nInforme o Código do Produto: ");
        scanf("%d", &codigo[i]);
        printf("\nInforme a Quantidade de Produtos: ");
        scanf("%d", &quantidade[i]);
        printf("\nInforme o Valor Unitário do Produto: ");
        scanf("%f", &valor[i]);
        system("cls");
        i++;
      }

      do{
          printf("----------Para a Inclusão ou Retirada de Produtos----------");
          printf("\n\nInforme o Código do produto: ");
          scanf("%d", &codn);

          if(codn == codigo[i]){

                  system("cls");
                  printf("Descrição do Produto --> %s", nome[i]);
                  printf("\n\nSelecione uma Operação para ser Realizada");
                  printf("\n Inclusão || [R] Retirada || [Q] Sair");
                  scanf("%s", &escolha);

                  if (escolha == 'I'){

                              system("cls");
                              printf("Informe a Quantidade que Deseja Incluir: ");
                              scanf("%d", &quantn);
                              printf("\n\nQuantidade Atual em Estoque: %d", quantidade[i]);
                              quantidade[i]= quantidade[i] + quantn;
                              printf("\n\nQuantidade Atualizada em Estoque: %d", quantidade[i]);
                              }

                  if(escolha == 'R'){

                             system("cls");
                             printf("Informe a Quantidade que deseja Retirar: ");
                             scanf("%d", &quantr);
                             printf("Quantidade Atual em Estoque: %d", quantidade[i]);

                             if (quantr > quantidade[i]){
                                        printf("\n\nEstoque Insuficiente");
                                                         }

                             else{
                                  quantidade[i] = quantidade[i] - quantr;
                                  printf("\n\nQuantidade Atualizada em Estoque %d", quantidade[i]);
                                  }

                                     }

                                }
          }while(escolha == 'I' || escolha == 'R');


          system("cls");

          for(i=1; i<=10; i++){

                   soma = soma + (quantidade[i] * valor[i]);
                   estoque = estoque + quantidade[i];

                   }

          printf("Quantidade dos Produtos em Estoque\n\n");

          for(i=1; i<=10; i++){
                   printf("\n---------------------------------------------------\n");
                   printf("\nNome do produto = %s\nQuantidade em Estoque = %d\nValor do Produto = %.2f", nome[i], quantidade[i], valor[i]);
                                }


          printf("\n\nQuantidade Total em Estoque = %d", estoque);
          printf("\nValor Total em Estoque = %.2f\n\n", soma);

          system("pause");
}

 obg pela dica da aba pra usar quando for postar códigos, esse é o meu primeiro post então eu não sabia ainda disso hehehe

Link para o comentário
Compartilhar em outros sites

@Matheus de Santana Explicação da correção nos comentários do código.

 

#include <stdio.h>
#include<stdlib.h>
#include<locale.h>
#define QUANTIDADE 3

main() {

  int i = 1, codigo[QUANTIDADE], quantidade[QUANTIDADE];
  float valor[QUANTIDADE], soma = 0;
  char nome[QUANTIDADE][20], escolha;
  int codn, quantn, quantr, estoque = 0;

  setlocale(LC_ALL, "Portuguese");


  while(i <= QUANTIDADE) {
    printf("----------CADASTRO DO PRODUTO------------");
    printf("\n\nDescrição do %dº Produto: ", i);
    scanf("%s", nome[i]); // Strings não tem & no scanf
    printf("\nInforme o Código do Produto: ");
    scanf("%d", &codigo[i]);
    printf("\nInforme a Quantidade de Produtos: ");
    scanf("%d", &quantidade[i]);
    printf("\nInforme o Valor Unitário do Produto: ");
    scanf("%f", &valor[i]);
    system("cls");
    i++;
  }
  do {
    printf("----------Para a Inclusão ou Retirada de Produtos----------");
    printf("\n\nInforme o Código do produto: ");
    scanf("%d", &codn);

    for(i = 0; i < QUANTIDADE; i++)// Para procurar em todo o vetor de códigos
      if(codn == codigo[i]) {

        system("cls");
        printf("Descrição do Produto --> %s", nome[i]);
        printf("\n\nSelecione uma Operação para ser Realizada");
        printf("\n Inclusão || [R] Retirada || [Q] Sair");
        scanf("%c", &escolha);

        if (escolha == 'I') {

          system("cls");
          printf("Informe a Quantidade que Deseja Incluir: ");
          scanf("%d", &quantn);
          printf("\n\nQuantidade Atual em Estoque: %d", quantidade[i]);
          quantidade[i] = quantidade[i] + quantn;
          printf("\n\nQuantidade Atualizada em Estoque: %d", quantidade[i]);
        }

        if(escolha == 'R') {

          system("cls");
          printf("Informe a Quantidade que deseja Retirar: ");
          scanf("%d", &quantr);
          printf("Quantidade Atual em Estoque: %d", quantidade[i]);

          if (quantr > quantidade[i]) {
            printf("\n\nEstoque Insuficiente");
          }

          else {
            quantidade[i] = quantidade[i] - quantr;
            printf("\n\nQuantidade Atualizada em Estoque %d", quantidade[i]);
          }

        }

      }
  } while(escolha != 'I' || escolha != 'R');


  system("cls");

  for(i = 1; i <= QUANTIDADE; i++) {

    soma = soma + (quantidade[i] * valor[i]);
    estoque = estoque + quantidade[i];

  }

  printf("Quantidade dos Produtos em Estoque\n\n");

  for(i = 1; i <= QUANTIDADE; i++) {
    printf("\n---------------------------------------------------\n");
    printf("\nNome do produto = %s\nQuantidade em Estoque = %d\nValor do Produto = %.2f", nome[i], quantidade[i], valor[i]);
  }


  printf("\n\nQuantidade Total em Estoque = %d", estoque);
  printf("\nValor Total em Estoque = %.2f\n\n", soma);

  system("pause");
}

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!