Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

354
Vistas
¿Por qué mi programa no funciona cuando cambio el orden de las entradas?

Empecé a aprender C y traté de codificar este programa matemático usando declaraciones de cambio. El programa se ejecuta y funciona bien cuando escaneo primero al operador y luego escaneo los números. Pero si cambio el orden de las funciones scanf para tomar primero los números y luego los operadores, el programa toma el número pero luego no toma la segunda entrada (el operador) y solo imprime el valor predeterminado (entrada no válida). ¿Por qué está pasando esto?

He proporcionado el código (si ejecuto este código, el problema ocurre con el programa simplemente tomando los números y no tomando los operadores. Pero si se invierte el orden, funciona).

 #include <stdio.h> int main() { float a, b, result; char operator; printf("Enter 2 numbers:"); scanf("%f %f", &a, &b); printf("Choose a math operator (+, -, *, /):"); scanf("%c", &operator); switch (operator) { case '+': result = a + b; break; case '-': result = a - b; break; case '*': result = a * b; break; case '/': result = a / b; break; default: printf("\nInvalid operator"); return -1; } printf("%f", result); return 0; }
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

La cadena de formato "%c" leerá el carácter de nueva línea de la primera línea de entrada. En cambio, lo que desea es " %c" , que omitirá los espacios en blanco iniciales, así que reemplace la línea

 scanf("%c", &operator);

con

 scanf(" %c", &operator);

Ver también https://pubs.opengroup.org/onlinepubs/9699919799/

Una directiva compuesta por uno o más caracteres de espacio en blanco se ejecutará leyendo la entrada hasta que no se puedan leer más entradas válidas, o hasta el primer byte que no sea un carácter de espacio en blanco, que permanezca sin leer.

over 4 years ago · Santiago Trujillo Denunciar

0

necesitas cambiar

 scanf("%c", &operator);

para

 scanf("%s", &operator);

se ejecutará

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda