Ir ao conteúdo
  • Cadastre-se
Matheus de Santana

Programa em c++ dando crash

Recommended Posts

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 ;)

Compartilhar este post


Link para o post
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");
}

 

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
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");
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×