elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
06 Octubre 2008, 23:16  



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderador: ®®)
| | |-+  Programa de Palabras Capicuas....
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Programa de Palabras Capicuas....  (Leído 922 veces)
mbc

Desconectado Desconectado

Mensajes: 82

MBC


Ver Perfil
Programa de Palabras Capicuas....
« en: 04 Mayo 2008, 00:43 »

Bueno me han mando hacer el programa de palabras capicuas o palidromes...

Pero me tengo que basar solo en 2 librerias la stdio.h y la conio, con arreglos.... insertar letra por letra de la palabra.. y mostrar las 2 palabras...

Asi me quedo en Code:
Citar
#include<stdio.h>
#include<conio.h>
main()
{
int n, x, p, acum;
char array[25], array2[25];
clrscr();
printf("Ingrese el numero de letras:");
scanf("%i",&x);
printf("\n");
   for(n=1;n<=x;n++)
   {
   printf("\nLetra %i:",n);
   scanf("%s",&array[n]);
   p=x+1;
   array2[p-n]=array[n];
   }
   printf("\nPalabra:");
   for(n=1;n<=x;n++)
   {
    printf("\n-= %c = %c =-",array[n],array2[n]);
      if(array[n]==array2[n])
      {
      acum=acum+1;
      }


   }
   printf("\n");
   if(acum==p)
   {
   printf("CAPICUA!!!");
   }
   else
   {
   printf("No Capicua!!!!");
   }

getch();
return (0);
}

Esto es lo que tengo estructurado... Coloco las letras y me las voltea...

Pero el problema esta a la hora de hacer el condicional que me diga si es o no capicua....
Saludos y gracias de ante mano.....
En línea

Mira a tu alrededor siempre estaremos, donde hay sistema de comunicacion hay podemos estar, asi que no corrars.
T0rete
Hola.Me llamo Íñigo Montoya.Tú baneaste a mi padre.Prepárate a morir
Moderador Global
*****
Desconectado Desconectado

Mensajes: 2.809

Vivo aquí


Ver Perfil
Re: Programa de Palabras Capicuas....
« Respuesta #1 en: 04 Mayo 2008, 00:51 »

En línea

mbc

Desconectado Desconectado

Mensajes: 82

MBC


Ver Perfil
Re: Programa de Palabras Capicuas....
« Respuesta #2 en: 04 Mayo 2008, 00:57 »

Ya habia checado eso programas... pero me piden es con las librerias <stdio.h> y <conio.h>


Citar
Y ya que estamos recomendaros una pagina muy interesante sobre palidromos http://www.carbajo.net/varios/pal.html
Se que es palabras palidromes o capicuas....
En línea

Mira a tu alrededor siempre estaremos, donde hay sistema de comunicacion hay podemos estar, asi que no corrars.
T0rete
Hola.Me llamo Íñigo Montoya.Tú baneaste a mi padre.Prepárate a morir
Moderador Global
*****
Desconectado Desconectado

Mensajes: 2.809

Vivo aquí


Ver Perfil
Re: Programa de Palabras Capicuas....
« Respuesta #3 en: 04 Mayo 2008, 01:05 »

Lo de la pagina lo decía por si después le quieres enviar palindromos nuevos a Victor :xD
En línea

Chino Moreno

Desconectado Desconectado

Mensajes: 93


White Pony [ ! ]


Ver Perfil
Re: Programa de Palabras Capicuas....
« Respuesta #4 en: 04 Mayo 2008, 13:56 »

Estas de suerte, me apetecia tirar unas lineas de codigo que no tengan que ver con mi examen del lunes :P

Puede que el codigo parezca algo raro, pero procure dividirlo completamente en funciones para que puedas entender lo que voy haciendo en cada una, y ver como reutilizarlas (no se que nivel tienes que de C pero porsiacaso).

Palíndromos:

Código:
#include <stdio.h>

void espacios(char *frase);
void mostrar(char *frase, char *esarf);
void vuelta(char *frase, char *aux);
void comparar(char *frase, char *esarf);
void mayusculas(char *frase);

int main()
{
    char frase[80];
    char esarf[80];

    puts("Introduce la frase o palabra:");
    gets(frase);

    vuelta(frase, esarf);
    mostrar(frase, esarf);
    mayusculas(frase);
    mayusculas(esarf);
    espacios(frase);
    espacios(esarf);
    comparar(frase, esarf);

    return 0;
}

void vuelta(char *frase, char *aux)
{
    int i=0, len=0;

    while(frase[len])
        len++;

    len--;

    for(i=0; i<len+1; i++)
        aux[i] = frase[len-i];

    aux[i++]='\0';
}

void mostrar(char *frase, char *esarf)
{
    printf("\nFrase original: %s\n", frase);
    printf("Frase dada la vuelta: %s\n\n", esarf);
}

void mayusculas(char *frase)
{
    int i=0;

    while(frase[i]) {
        if(frase[i] >= 65 && frase[i] <= 90)
            frase[i] = frase[i]+32;
        i++;
    }
}

void espacios(char *frase)
{
    int i=0,j;

    while(frase[i]) {
        if(frase[i] == ' ') {
            j=i;
            while(frase[j]) {
                frase[j] = frase[j+1];
                j++;
            }
        }
        i++;
    }
}

void comparar(char *frase, char *esarf)
{
    int i=0, flag=0;

    while(frase[i] && esarf[i]) {
        if(frase[i] != esarf[i])
            flag=1;
        i++;
    }

    if(flag == 1)
        puts("Son distintas.");
    else
        puts("Son iguales");
}

El mecanismo es muy sencillo, habra cientos de formas de hacerlo, pero yo personalmente lo que hice fue pasar la cadena entera a mayusculas aprovechando que se los valores ASCII de mayusculas y minusculas, quitarle los espacios y comparar la cadena original con una al reves letra por letra, sino entiendes algo ya sabes ^^

Salida:

Código:
Introduce la frase o palabra:
Signa temere me tangis

Frase original: Signa temere me tangis
Frase dada la vuelta: signat em eremet angiS

Son iguales

Process returned 0 (0x0)   execution time : 16.125 s
Press any key to continue.

P.D No me esforce mucho y se me hizo raro utilizar solo stdio.h, pero críticas son siempre bienvenidas.
« Última modificación: 04 Mayo 2008, 13:59 por Chino Moreno » En línea



¿Necesitas información sobre una función que comenté? Lo mas seguro es que la encuentres en MSDN
Páginas: [1] Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC
Free counter and web stats