Ir ao conteúdo
  • Cadastre-se
MatheusINF

C O programa não executa certo

Recommended Posts

Fala galera tudo certo? 

Bom preciso fazer um algoritmo que leia o nome de 3 artigos, leia o desconto e apresente o nome com desconto e o valor total no final, porém quando eu executo não consigo digitar o "nome2" nem o "nome3", sendo que o "nome1" vai normal e está igual alguém sabe o motivo?

 

                                        // algoritmo ARTIGOS
/* ESTE algoritmo LÊ O NOME,VALOR E PORCENTAGEM DE DESCONTO DE 3 ARTIGOS DE UMA LOJA IMPRIMI OS VALORES COM DESCONTO E O PREÇO TOTAL
DATA: 26/04/2018
AUTOR: its'me
RA: secret */

#include <stdio.h>

int main()
{
// VARIAVEIS
  float artigo1,artigo2,artigo3;
  float desconto1,desconto2,desconto3;
  char nome1[50];
  char nome2[50];
  char nome3[50];
  float valorTotal;
  float vd1,vd2,vd3; // VALOR DESCONTO
  float pf1,pf2,pf3; //PREÇO FINAL
  float precototal;

// INICIO
    printf("Digite o nome do primeiro artigo: ");
    gets(nome1);
    printf("Digite o preco do primeiro artigo: ");
    scanf("%f",&artigo1);
    printf("Digite o porcentual de desconto do primeiro artigo: ");
    scanf("%f",&desconto1);

    printf("\nDigite o nome do segundo artigo: ");
    gets(nome2);
    printf("Digite o preco do segundo artigo: ");
    scanf("%f",&artigo2);
    printf("Digite o porcentual de desconto do segundo artigo: ");
    scanf("%f",&desconto2);

    printf("\nDigite o nome do terceiro artigo: ");
    gets(nome3);
    printf("Digite o preco do terceiro artigo: ");
    scanf("%f",&artigo3);
    printf("Digite o porcentual de desconto do terceiro artigo: ");
    scanf("%f",&desconto3);

    vd1=artigo1*(desconto1/100);
    pf1=artigo1-vd1;

    vd2=artigo2*(desconto2/100);
    pf2=artigo2-vd2;

    vd3=artigo3*(desconto3/100);
    pf3=artigo3-vd3;

    precototal=pf1+pf2+pf3;

    printf("\nO artigo: %s ,com desconto fica: %f reais.\n ",nome1,pf1);
    printf("\nO artigo: %s ,com desconto fica: %f reais.\n ",nome2,pf2);
    printf("\nO artigo: %s ,com desconto fica: %f reais.\n ",nome3,pf3);

    printf("\nO valor total a pagar e' de: %f reais.\n",precototal);

    return 0;
}// FIM

Compartilhar este post


Link para o post
Compartilhar em outros sites

A função scanf está deixando /n no input. 

A função gets para de capturar quando encontra esse mesmo \n no começo.

 

scanf .... sobra \n

gets \n 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

exatamente @kabong03

Ou @MatheusINF você pode inventar sua função getstr(), eu fiz a minha e não é nada difícil de fazer.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma função para substituir "fflush(stdin)" e limpar o buffer de entrada:

flush_stdin(){
    int c;
    while((c = getchar()) != '\n' && c != EOF);
}

 

  • Curtir 2

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

×