Autor
|
Tema: Tengo un programa que no funciona como quiero (Leído 2,602 veces)
|
Itsrecordbaby
Desconectado
Mensajes: 1
|
Tengo que hacer un programa que identifique se una frase es palindroma (que se lee igual de izquierda a derecha que de derecha a izquierda) la parte de verificar si es palindromo funciona pero me pidieron que le agregue un menu, lo intente y no me deja ingresar la frase y se manda de nuevo a al menu. ayuda pliss: #include <stdio.h> #include <string.h> #include <ctype.h> void comprobarPalindromo() { char pal[40], pal2[40]; int n, i, j, flag = 1; printf("Por favor, introduce una palabra o frase para verificar si es palindroma: \n"); j = 0; for (i = 0; i < n; i++) { } } pal2[j] = '\0'; for (i = 0; i < j / 2; i++) { if (pal2[i] != pal2[j - i - 1]) { flag = 0; break; } } if (flag) { printf("Felicidades, escribiste un palindromo :)\n"); } else { printf("No escribiste un palindromo :(\n"); } } int main() { int opcion; do { printf("\nMenu del proyecto palindromo\n"); printf("2. Comprobar si es o no palindromo\n"); printf("Seleccione una opcion: "); switch (opcion) { case 1: printf("Mauricio Mora,Andres Calle\n"); break; case 2: printf("Comprobar si es o no palindromo\n"); comprobarPalindromo(); break; case 3: break; default: break; } } while (opcion != 3); return 0; }
|
|
« Última modificación: 1 Febrero 2023, 07:50 am por fary »
|
En línea
|
|
|
|
fary
|
Cuando lees con scanf se deja el enter en el buffer de entrada y cuando llamas a fgets lo recoge del buffer, por eso nunca llegas a leer la cadena. Limpia el buffer de entrada con fflush. Tu código funcional: #include <stdio.h> #include <string.h> #include <ctype.h> void comprobarPalindromo() { char pal[40], pal2[40]; int n, i, j, flag = 1; printf("Por favor, introduce una palabra o frase para verificar si es palindroma: \n"); j = 0; for (i = 0; i < n; i++) { } } pal2[j] = '\0'; for (i = 0; i < j / 2; i++) { if (pal2[i] != pal2[j - i - 1]) { flag = 0; break; } } if (flag) { printf("Felicidades, escribiste un palindromo :)\n"); } else { printf("No escribiste un palindromo :(\n"); } } int main() { int opcion; do { printf("\nMenu del proyecto palindromo\n"); printf("2. Comprobar si es o no palindromo\n"); printf("Seleccione una opcion: "); fflush(stdin ); //<---------AQUI LIMPIAS EL BUFFER STDIN. switch (opcion) { case 1: printf("Mauricio Mora,Andres Calle\n"); break; case 2: printf("Comprobar si es o no palindromo\n"); comprobarPalindromo(); break; case 3: break; default: break; } } while (opcion != 3); return 0; }
|
|
|
En línea
|
Un byte a la izquierda.
|
|
|
RayR
Desconectado
Mensajes: 243
|
Es cierto que el problema se resuelve limpiando el buffer, pero fflush(stdin) no es lo correcto. Esta función sólo sirve para buffers de salida, no de entrada, como stdin. Usarlo con stdin funciona de casualidad en Windows, siempre que uses MinGW. Si usas, por ejemplo, alguna versión reciente de Visual C++, no funciona, y tampoco sirve en Linux, independientemente del compilador. Como se trata de un ejercicio simple y no estás validando entrada ni verificando errores, puedes limpiar el buffer con esta línea después del scanf:
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Tengo un dvd de pelicula y quiero bajarlo a la Pc como hago???
Multimedia
|
Jopito
|
2
|
2,672
|
13 Junio 2008, 13:22 pm
por Jopito
|
|
|
Ayuda programa en VB que solo funciona 15 minutos y quiero que dure infinito.
« 1 2 »
Ingeniería Inversa
|
olevlove
|
10
|
5,062
|
27 Abril 2010, 22:28 pm
por MCKSys Argentina
|
|
|
Emuhacker, quiero saber como funciona este programa
Ingeniería Inversa
|
jacalhacking
|
4
|
4,782
|
12 Octubre 2011, 09:28 am
por jacalhacking
|
|
|
tengo disco usb de 620gb y quiero que el pc me lo detecte como
Hardware
|
Edr20
|
3
|
2,516
|
7 Marzo 2014, 22:45 pm
por Zomkar
|
|
|
Ayuda!!!!!!!!QUIERO LEER LOS DATOS QUE TENGO EN EL FICHERO . Cómo???
Programación C/C++
|
afrocardo
|
0
|
1,768
|
10 Diciembre 2015, 18:40 pm
por afrocardo
|
|