Ir ao conteúdo
  • Cadastre-se
Jônatas Jr Endzeit

Programa não executa todos os cálculos

Recommended Posts

Saudações, sou novo na programação, na verdade esse é meu segundo programa sozinho e estou tendo o seguinte problema:


 


A tarefa imposta foi realizar um programa que calcule um desconto de uma  "porcentagem X"  sobre um "salário"; após isto, calcule mais um  desconto de "porcentagem y" sobre o restante do "salário".


 


 


Aparentemente, tudo certo, porém o programa faz o cálculo do primeiro desconto e pára por ai sem dar a opção de entrar com o valor de "y" para fazer o cálculo sobre o restante do salário.


 


segue abaixo o código:


-------------------------------------------------------------------------------------------


 


#include<stdio.h>

#include<locale.h>

#include<stdlib.h>

 

 

 

main ()

 

{

setlocale(LC_ALL,"portuguese");

 

   float salb, salliq_prev,salliq_total, prev, aliq_prev, imposto, aliq_imposto; 

   char nome[50];

   

   /* salb = "salário bruto" definido pelo usuário

    prev = valor "x %" definido pelo usuário a ser descontado do salário bruto

    aliq_prev = "resultado de x"

    salliq_prev = "salário bruto" - "resultado de "x"

   

imposto = valor "y %" a ser descontado sobre "salliq_prev"

aliq_imposto = "resultado de y"

salliq_total = "salliq_prev" - "aliq_imposto                   */

 

 

    printf ("Digite o nome: ");

scanf ("%s",&nome);

 

printf("\n---------------------------------------");

   

  printf("\nDigite o valor do Salário Bruto \nutilizando somente PONTOS '.' para separar casas decimáis: \n\nR$ "); //Entrada de dados para valor para a variável do salário

scanf ("%f",&salb); /* armazena o valor da variável do salário */

 

printf("\n---------------------------------------");

 

 

printf ("\nDigite a porcentagem da Previdência a ser desconta sobre o Salário Bruto: \n\n");

scanf ("%f",&prev); /* armazena o valor da variável previdência */

printf ("%%");

 

printf("\n---------------------------------------");

 

 

aliq_prev = salb * prev / 100; /*cálculo e armazenamento em uma variável*/

printf ("\nDesconto sobre o salário é = %5.2f", aliq_prev); /* Mostra na tela o resultado */

scanf ("%f", &aliq_prev);

 

printf("\n---------------------------------------");

 

salliq_prev=salb-aliq_prev;

scanf("%f",&salliq_prev);

printf("\nSalário Decontado Previdência: = %5.2f", salliq_prev);

 

printf("\n---------------------------------------");

 

 

printf ("\n\nDigite a porcentagem a ser desconta do Auxílio Imposto Sobre o Fortuna: \n\n");

scanf ("%f",&imposto);

printf ("%%");

 

printf("\n---------------------------------------");

 

aliq_imposto = salliq_prev * imposto / 100; /*cálculo e armazenamento em uma variável*/

printf ("\nDesconto do Auxílio Imposto Sobre o Fortuna é = %5.2f", aliq_imposto); /* Mostra na tela o resultado */

scanf ("%f", &aliq_imposto);

 

printf("\n---------------------------------------");

 

salliq_total=salb-aliq_prev-aliq_imposto;

scanf("%f",&salliq_total);

printf("\nSalario Liquido: = %5.2f",salliq_total);

 

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tenho quase certeza que a scanf é o problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

a respeito do scanf e verdade. Por exemplo; tem o bug da enter ( o scanf posterior tenta capturar o buffer )!

Esse bug acontece quando existe no trabalho sequência de scanf, daí e só usar fflush(stdin);
Depois de cada scanf. Experimente essa iniciativa na correção do erro presente no teu código.

 

 

Exemplo:

//Software of example - simple_code.c#include <stdio.h>//#Function Prototype//Here this prime functionint main( void ){   int num0, num1;//>Example   printf( "Entre com um numero:\n$ Into /> " );   scanf( "%d", &num0 );    fflush( stdin );   printf( "Entre novamente com outro:\n$ Into /> " );   scanf( "%d", &num1 );    fflush( stdin );   printf( "Somar: %d + %d: = %d\n", num0, num1, num0 + num1 );   printf( "Acabou!\nPrecione-> [ENTER] para sair...\r" );   getchar( );   return ( 0 );}

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

×