Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

169
Visualizações
Cálculo dentro de la declaración if bajo el interruptor

Estoy tratando de escribir un código que permita a un usuario ingresar un estado civil y los ingresos para calcular el impuesto adeudado. si la entrada del estado civil está fuera de 1-4, el programa se cerrará. Estoy tratando de usar el interruptor y si no, pero parece que estoy atascado con el código que genera la parte adeudada por impuestos. cada vez que ingrese los ingresos, no generará el monto adeudado de impuestos. ejemplo, para el caso 1: en el interruptor (última línea) para el estado civil, ingreso 1 (para soltero) e ingrese 20000 para ingresos. el resultado debería mostrar $3000 pero no dará ningún resultado. A continuación se muestra el código que tengo hasta ahora.

 #include<stdio.h> int main() { //declaration status = filing status , income = income input, taxOwed = tax owed calculation. int status; double income, taxOwed; //data/input printf("************Menu****************\n"); printf("1) Single\n"); printf("2) Married Filing Jointly\n"); printf("3) Married Filing Separately\n"); printf("4) Head of Household\n"); printf("5) Exit\n"); printf("\n"); printf("********************************\n"); printf("\n"); printf("Enter status : "); scanf("%d", &status); //processing switch with Calculation within each case switch(status) { case 5: printf("\n", status); printf("Exit Program...\n"); break; case 6: case 7: case 8: case 9: printf("You entered a wrong status. Program Exit . . ."); break; default: printf("You entered a wrong status. Program Exit . . ."); break; case 1: printf("Enter your taxable TI: $"); scanf("%.2lf\n", income); if (0 < income <= 24000) { taxOwed = (income * 0.15); printf("\n"); printf("The taxes owed are: $%.2lf", taxOwed); break; } else if (24000 < income <= 58000) { taxOwed = 3600 + (0.28 * (income - 24000)); printf("The taxes owed are: $%.2lf", taxOwed); break; } } return 0; }

cualquier revisión y ayuda es muy apreciada. gracias

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

La declaración

scanf("%.2lf\n", income);

está mal, por tres razones:

  1. La función scanf espera la dirección de la variable en la que debe escribir, no el valor anterior de la variable.

  2. No está claro qué pretende hacer el .2 . Probablemente esté confundiendo la cadena de formato scanf con la cadena de formato printf . Esto probablemente está causando que scanf falle. Siempre debe verificar el valor de retorno de scanf para ver si la función fue exitosa o no.

  3. El \n en la cadena de formato hará que scanf continúe leyendo espacios en blanco, hasta que encuentre un carácter que no sea un espacio en blanco. Esto significa que debe presionar la tecla ENTER al menos dos veces y debe proporcionar información adicional. Esto probablemente no es lo que quieres.

Por lo tanto, debe cambiar esa línea a la siguiente:

scanf("%lf", &income);

Asimismo, las declaraciones

if (0 < income <= 24000)

y

else if (24000 < income <= 58000)

estan equivocados.

Probablemente deberían ser

if (0 < income && income <= 24000)

y:

else if ( 24000 < income && income <= 58000 )

La razón por la que están equivocados es la siguiente:

De acuerdo con las reglas de precedencia de operadores , la expresión

24000 < income <= 58000

es equivalente a:

(24000 < income) <= 58000

Esto significa que esta expresión es equivalente a cualquiera

0 <= 58000

o

1 <= 58000

dependiendo de si (24000 < income) se evalúa como verdadero ( 1 ) o falso ( 0 ).

En ambos casos, la expresión completa se evaluará como verdadera, porque 58000 es mayor que 0 y 1 .

Por eso escribir

if (0 < income <= 24000)

y

else if (24000 < income <= 58000)

no tiene sentido, porque estas afirmaciones equivalen a escribir

if ( 1 )

y:

else if ( 1 )

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda