Jueves 14 de Noviembre de 2024, 17:18
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Palíndromo
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Palíndromo (Leído 23257 veces)
ermiguel1979
Miembro activo
Mensajes: 45
Palíndromo
«
en:
Martes 29 de Diciembre de 2009, 12:34 »
0
Buenos días. Mientras me llegaba la respuesta de la traspuesta de la matriz, comencé con la siguiente práctica, en la que se pide realizar un algoritmo que diga si una palabra es o nó un palíndromo (palabra que se lee igual de izquierda a derecha que de derecha a izquierda). He curioseado un poco por internet y es un tema bastante tocado, aunque los códigos fuente que he encontrado, u están incompletos, o usan instrucciones qu eno entiendo por mi escaso nivel.
Os dejo mi código por si veis los fallos u incoherencias para corregirlos. Gracias chicos!
Código: C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*Algoritmo -> PALINDROMO*/
int
main
(
void
)
{
int
n
=
0
;
//contador del tamaño de 'operacion'
char
palabra
[
100
]
;
//cadena que almacena la palabra
char
operacion
[
n
]
;
//cadena para realizar la comparacion
int
i
,
a
,
c
;
//contadores
printf
(
"Escriba la palabra: "
)
;
memset
(
&
palabra
,
0
,
sizeof
(
palabra
)
)
;
//inicializar 'palabra'
scanf
(
"%s"
,
&
palabra
)
;
for
(
c
=
0
;
c
<
100
;
c
++
)
{
//guarda la palabra en 'operacion'
if
(
palabra
[
c
]
!=
0
)
{
operacion
[
c
]
=
palabra
[
c
]
;
n
=
n
+
1
;
//da el tamaño a 'operacion'
}
}
/*comprueba si es palindromo, si la primera comprobacion falla,
termina el programa*/
for
(
i
=
0
;
i
<
n
;
i
++
)
{
for
(
a
=
n
-
1
;
a
>=
0
;
a
--
)
{
if
(
operacion
[
i
]
!=
operacion
[
a
]
)
{
printf
(
"La palabra %s no es palindromon"
,
palabra
)
;
return
EXIT_SUCCESS
;
}
}
}
printf
(
"La palabra %s es un palindromo"
,
palabra
)
;
return
1
;
}
Un abrazo y felices fiestas!
Tweet
tuflotas
Nuevo Miembro
Mensajes: 3
Re: Palíndromo
«
Respuesta #1 en:
Martes 29 de Diciembre de 2009, 12:38 »
0
para conocer la longitud de un string tienes tamanho=strlen(string);
para comprar tambien tienes strcmp(char, char); asi puedes comparar el primer caracter con el ultimo que te de la funcion strlen
locazopro
Miembro activo
Mensajes: 51
Re: Palíndromo
«
Respuesta #2 en:
Martes 29 de Diciembre de 2009, 22:00 »
0
como bien dice el amigo del post anterior, puedes usar las funciones de la librería string. Tu programa tiene mucho código que no es necesario, mira un algoritmo para el palíndromo puede ser el que sigue:
1.- Tomas la palabra y obtienes su largo
2.- En un bucle que recorrala mitad de la palabra, comparas la primera letra con la última y avanzas un contador que parte de 0 y disminuyes un contador que
parte desde el total de palabras menos 1.
3.- Haces la comprobación que tenías en tu algoritmo inicial.
Te dejo un ejemplo:
Código: C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*Algoritmo -> PALINDROMO*/
int
main
(
void
)
{
char
palabra
[
100
]
;
/*//cadena que almacena la palabra*/
int
i
,
a
,
c
;
/*//contadores*/
printf
(
"Escriba la palabra: "
)
;
memset
(
&
palabra
,
0
,
sizeof
(
palabra
)
)
;
/*//inicializar 'palabra'*/
scanf
(
"%s"
,
palabra
)
;
a
=
c
=
strlen
(
palabra
)
;
for
(
i
=
0
;
i
<
a
;
i
++,
c
--
)
{
if
(
palabra
[
i
]
!=
palabra
[
c
-
1
]
)
{
printf
(
"La palabra %s no es palindromon"
,
palabra
)
;
return
EXIT_SUCCESS
;
}
}
printf
(
"La palabra %s es un palindromo"
,
palabra
)
;
return
1
;
}
Puedes partir con eso y arreglarlo tú. Espero te sirva.
Saludos!
sanlegas2000
Nuevo Miembro
Mensajes: 17
Re: Palíndromo
«
Respuesta #3 en:
Miércoles 30 de Diciembre de 2009, 19:53 »
0
este es el codigo para ansi c:
1. no uso la libreria string.h ya que para calcular la longitud lo hago yo mismo.
2. lo hago usando funciones
3. si tienes duda mandame un mensaje
#include<stdio.h>
int palin(char pala[])
{
int i,j,a;
for(i=0;pala
!=' ';i++);// te calcula la longitud de la cadena
a=i-1;
for (j=0; j<a;j++)
{
if(pala[j]!=pala[a])
printf("no es paln");
break;
a--;
}
if (pala[j]==pala[a])
printf("si es paln");
}
int main (void)
{
char pala[20];// declaracion de la cadena
gets(pala);// lees la cadena
palin(pala);// mandas a la funcion la cadena
return 0;
}
ermiguel1979
Miembro activo
Mensajes: 45
Re: Palíndromo
«
Respuesta #4 en:
Domingo 3 de Enero de 2010, 20:57 »
0
Bueno chicos, despues de varias horas de trabajo y mezclar código de todos, por fin tengo mi programilla listo. Os lo mando para que lo leais. Muchas gracias por vuestro tiempo con los que estamos empezando.
Código: C
/*Ejercicio 7; Tema3; libro "FundamentosdeInformatica", Jose Joaquin Aguilera*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*Algoritmo -> PALINDROMO*/
int
main
(
void
)
{
char
palabra
[
100
]
;
//cadena que almacena la palabra
int
i
,
a
,
c
;
//contadores
printf
(
"Escriba la palabra: "
)
;
memset
(
&
palabra
,
0
,
sizeof
(
palabra
)
)
;
//inicializar 'palabra'
scanf
(
"%s"
,
palabra
)
;
a
=
c
=
strlen
(
palabra
)
;
for
(
i
=
0
;
i
<
a
;
i
++,
c
--
)
{
if
(
palabra
[
i
]
!=
palabra
[
c
-
1
]
)
{
printf
(
"La palabra '%s' no es palindromon"
,
palabra
)
;
return
EXIT_FAILURE
;
}
}
printf
(
"La palabra '%s' es un palindromon"
,
palabra
)
;
return
0
;
}
Me gustaría haceros una pregunta. Ya se que no hay foro de pseudocódigo, pero de que manera puedo declarar la función return EXIT_FAILURE o EXIT_SUCCESS (una que me finalice el programa en ese punto) en un algoritmo escrito en pseudocódigo???
Gracias otra vez. Un saludo!
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Palíndromo