¿Cómo puedo crear un programa que reemplace int por char (sin usar while/for) en C?
Soy nuevo en la programación y estoy luchando con un desafío. Lo que estoy tratando de hacer es un programa que lee números enteros y los devuelve reemplazando los números pares por un “.” y los números impares por un “-” (empezando por la unidad, luego la decena, luego el centenar y finalmente el millar. Entonces un número como 8878 se lee al revés: 8788).
Por ejemplo:
Entrada:
8878
2122
47
Salida:
.-..
..-.
-.
Mis dos preguntas son las siguientes:
1° ¿Cómo puedo hacer que este código solo convierta la cantidad de dígitos? Por ejemplo, en mi programa “47” está devolviendo “-…” en lugar de “-.” que es mi objetivo.
2° ¿Cómo puedo hacer que este código siempre solicite la siguiente entrada hasta completar 10 entradas (sin usar while/for)?
“`c
include <stdio.h>
int main() {
int number;
scanf("%d", &number);
<pre><code>int unit = number % 10;
int ten = number / 10 % 10;
int hundred = number / 100 % 10;
int thousand = number / 1000 % 10;
char even = '.';
char odd = '-';
// unidad
if (unit % 2 == 0) {
printf("%c", even);
} else if (unit % 2 != 0) {
printf("%c", odd);
} else {
printf("");
}
// decena
if (ten % 2 == 0) {
printf("%c", even);
} else if (ten % 2 != 0) {
printf("%c", odd);
} else {
printf("");
}
// centena
if (hundred % 2 == 0) {
printf("%c", even);
} else if (hundred % 2 != 0) {
printf("%c", odd);
} else {
printf("");
}
// millar
if (thousand % 2 == 0) {
printf("%c", even);
} else if (thousand % 2 != 0) {
printf("%c", odd);
} else {
printf("");
}
return 0;
</code></pre>
}
“`</stdio.h>
davy.ai
Puedes hacer lo mismo para los dígitos del centena, decena y unidad.
Puedes usar recursión para solicitar la siguiente entrada hasta recibir 10 entradas. Aquí tienes un ejemplo:
La función
process_input
toma un parámetrocount
que comienza en 0 e incrementa en 1 por cada entrada que procesa. Lee el número de entrada, lo procesa como antes, imprime el resultado en una nueva línea, incrementa elcount
y se llama a sí misma nuevamente si el count es menor que 10. La función main simplemente llama aprocess_input
con un count inicial de 0 para iniciar el proceso.</stdio.h>