Problema de algoritmia, en Python
Hola. En este post vamos a ver la resolución de un problema de Algoritmia típico, resuelto en Python. El enunciado me lo ha enviado un navegante, entusiasta de Python, como yo. Es el siguiente:
A partir de una cadena introducida por el usuario, se trata de pintar una caja de texto con la propia cadena, utilizando espacios en blanco. La complejidad reside en cómo pintar las cadenas reversas, esto es, escritas al revés.
Hay varias formas de resolver el problema. Con listas parece obvio, aunque yo lo he resuelto de la manera más fácil para mí, claro.
Este es el código:
Y ejemplos de la solución:
Si crees tener una solución alternativa puedes enviarla, si lo deseas, a este blog, y la publicaré, para de esta manera aprender todos y ver que hay varias formas de dar solución a un mismo problema.
Saludos.
A partir de una cadena introducida por el usuario, se trata de pintar una caja de texto con la propia cadena, utilizando espacios en blanco. La complejidad reside en cómo pintar las cadenas reversas, esto es, escritas al revés.
Hay varias formas de resolver el problema. Con listas parece obvio, aunque yo lo he resuelto de la manera más fácil para mí, claro.
Este es el código:
# -*- coding: cp1252 -*-
# Ángel Luis García García
# Algoritmia
while True:
# Introducimos palabra.
cadena = raw_input('Introduce palabra: ')
# Si no escribimos nada, salimos.
if len(cadena) == 0: break
# Longitud de la cadena.
long_cadena = len(cadena)
# Espacio en blanco.
blanco = " " * (long_cadena - 2)
# Pintamos la cadena de arriba.
print cadena
# Pintamos las columnas.
puntero = long_cadena - 1
for i in range(1,long_cadena):
puntero -= 1
if i == long_cadena - 1:
# Pintamos la cadena de abajo.
a = list(cadena)
a.reverse()
cadena_down = ""
for i in a: cadena_down = cadena_down + i
print cadena_down
else:
# Columnas
print cadena[i] + blanco + cadena[puntero]
Y ejemplos de la solución:
Si crees tener una solución alternativa puedes enviarla, si lo deseas, a este blog, y la publicaré, para de esta manera aprender todos y ver que hay varias formas de dar solución a un mismo problema.
Saludos.
while True:
ResponderEliminar# Introducimos palabra.
cadena = raw_input('Introduce palabra: ')
# Si no escribimos nada, salimos.
if len(cadena) == 0: break
# Longitud de la cadena.
long_cadena = len(cadena)
# Espacio en blanco.
blanco = " " * (long_cadena - 2)
# Pintamos la cadena de arriba.
print cadena
# AQUÍ VIENE LA ALTERNATIVA
# Pintamos columnas
for i in range(1,long_cadena - 1):
print cadena[i] + blanco + cadena[-i-1]
# Pintamos la cadena de abajo.
print cadena[::-1]
Muy bien Alex!
ResponderEliminar#include
ResponderEliminarusing namespace std;
class Persona
{
private:
char nombre[20];
char apellido[20];
long int cedula;
char sexo;
int edad;
public:
void AsignarDatos(char*,char*,long int,char, int);
void Mostrar();
};
void Persona::AsignarDatos(char*nom,char*ape,long int ced,char sex,int ed)
{
strcpy(nombre,nom);
strcpy(apellido,ape);
cedula = ced;
sexo = sex;
edad = ed;
}
void Persona :: Mostrar()
{
cout<<"el nombre es:"<>nom;
cout<<"ingrese apellido:";
cin>>ape;
cout<<"ingrese cedula";
cin>>ced;
cout<<"ingrese sexo:";
cin>>sex;
cout<<"ingrese edad:";
cin>>ed;
otro.AsignarDatos(nom,ape,ced,sex,ed);
cout<<endl<<"mostrando datos"<<endl;
ligia.Mostrar();
cout<<endl;
pedro.Mostrar();
cout<<endl;
otro.Mostrar();
return 0;
}
el problema q me da es q muestra error en los punteros y no se copila
Eliminar