elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Decir si un vector es palindromo o no
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Decir si un vector es palindromo o no  (Leído 7,980 veces)
sora_ori

Desconectado Desconectado

Mensajes: 269



Ver Perfil
Decir si un vector es palindromo o no
« en: 16 Diciembre 2013, 11:04 am »

Hola de nuevo,

De nuevo vengo a pedir ayuda, porque no consigo hacer que me diga si un vector es palindromo o no.

Dejo el código entero para que vean que estoy haciendo, pero la parte incorrecta es el palindromo, siempre me dice "No es palindromo".

Ejemplo: 5 6 6 5 -> Si es palindromo




Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include<conio.h>
  5.  
  6. int main(){
  7.    int n, i, num;
  8.  
  9.    do{
  10.        printf("Grandaria del vector: ");
  11.        scanf("%d", &n);
  12.    }while(n<4 || n>20); //Entre 4 y 20
  13.  
  14.    int vector[n];
  15.  
  16.    for (i=0; i<n; i++){
  17.        do{
  18.           printf("Introduce un numero, vector %i: ", i+1);
  19.           scanf("%d",&num);
  20.           vector[i] = num;
  21.        }while(num<0 || num>9); // Entre 0 y 9
  22.    }
  23.  
  24.    // Mostrar vector
  25.    printf("\n\nVector:\n");
  26.    printf("____________________\n\n");
  27.    for (i=0; i<n; i++)
  28.        printf(" %d ", vector[i]);
  29.  
  30.  
  31.    // PALINDROMO
  32.    int temp = vector[i];
  33.    int extraer = 0;
  34.    int nuevonumero = 0;
  35.  
  36.    for(i = 0; temp > 0; i++){
  37.          extraer = temp%10;
  38.          nuevonumero = (nuevonumero*10) + extraer;
  39.          temp = temp/10;
  40.    }
  41.  
  42.    if(temp == nuevonumero){
  43.              printf("\n\nEs palindromo");
  44.    }
  45.    else{
  46.         printf("\n\nNo es palindromo");
  47.    }
  48.  
  49.  
  50.    getch();
  51.    return 0;
  52. }
  53.  

Muchas gracias!


« Última modificación: 16 Diciembre 2013, 11:07 am por sora_ori » En línea

Almapa

Desconectado Desconectado

Mensajes: 111


Ver Perfil
Re: Decir si un vector es palindromo o no
« Respuesta #1 en: 16 Diciembre 2013, 12:12 pm »

La verdad es que no se cómo está comprobando si es o no palíndromo (que si no me equivoco quiere decir que es un vector capicúa no?).
Yo haría algo más simple:

Código
  1. // PALINDROMO
  2.    bool palindromo=1;
  3.    for(i = 0; i<n/2; i++){
  4.          if(vector[i]==vector[n-1-i]){}else{palindromo=0;}
  5.    }
  6.  
  7.    if(palindromo==1){
  8.              printf("\n\nEs palindromo");
  9.    }
  10.    else{
  11.         printf("\n\nNo es palindromo");
  12.    }


« Última modificación: 16 Diciembre 2013, 12:13 pm por Almapa » En línea

sora_ori

Desconectado Desconectado

Mensajes: 269



Ver Perfil
Re: Decir si un vector es palindromo o no
« Respuesta #2 en: 16 Diciembre 2013, 12:44 pm »

Muchas gracias, muy sencillo de hacer y entendible =)


Saludos
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Decir si un vector es palindromo o no
« Respuesta #3 en: 16 Diciembre 2013, 13:35 pm »

Tal como lo tienes planteado no es muy útil introducir el número como vector, sería mejor hacerlo directamente como un número:


Código
  1. #include <stdio.h>
  2.  
  3. int main(){
  4.    int n, i, num;
  5.    do{
  6.        printf("Introduce el numero: ");
  7.        scanf("%d", &num);
  8.    }while(num<10 || num>999999999);
  9.    // Mostrar vector
  10.    printf("\n\nNumero:\n");
  11.    printf("____________________\n\n");
  12.    printf(" %d \n\n", num);
  13.    // PALINDROMO
  14.    int temp = num;
  15.    int extraer = 0;
  16.    int nuevonumero = 0;
  17.    for(i = 0; temp > 0; i++){
  18.        extraer = temp%10;
  19.        nuevonumero = (nuevonumero*10) + extraer;
  20.        printf("nuevonumero=%d\n",nuevonumero);;system("pause");//sobra
  21.        temp = temp/10;
  22.    }
  23.    if(num == nuevonumero)
  24.        printf("\n\nEs palindromo");
  25.    else
  26.        printf("\n\nNo es palindromo");
  27.    return 0;
  28. }
  29.  

Pero si quieres usar el vector y nuevonumero te serviría;

Código
  1. #include <stdio.h>
  2.  
  3. int main(){
  4.    int n, i, num;
  5.    do{
  6.        printf("Grandaria del vector: ");
  7.        scanf("%d", &n);
  8.    }while(n<2 || n>20); //Entre 2 y 20
  9.    int vector[n];
  10.    for (i=0; i<n; i++){
  11.        do{
  12.           printf("Introduce un numero, vector %i: ", i+1);
  13.           scanf("%d",&num);
  14.           vector[i] = num;
  15.        }while(num<0 || num>9); // Entre 0 y 9
  16.    }
  17.    // Mostrar vector
  18.    printf("\n\nVector:\n");
  19.    printf("____________________\n\n");
  20.    for (i=0; i<n; i++)
  21.        printf(" %d ", vector[i]);
  22.    int temp = 0;
  23.    for (i=0; i<n; i++){
  24.        temp=temp*10+vector[i];
  25.    }
  26.    printf("\ntemp=%d\n",temp);//sobra
  27.    // PALINDROMO
  28.    int nuevonumero = 0;
  29.    for(i = n-1;  i>=0 ; i--){
  30.        nuevonumero= nuevonumero*10+vector[i] ;
  31.        printf("nuevonumero=%d\n",nuevonumero);system("pause");
  32.    }
  33.    if(temp == nuevonumero)
  34.        printf("\n\nEs palindromo");
  35.    else
  36.        printf("\n\nNo es palindromo");
  37.    return 0;
  38. }
  39.  

Aunque ya que estas usando un array, lo más simple sería ir comparando los extremos del vector:, como indico Almapa

Código
  1. #include <stdio.h>
  2.  
  3. int main(){
  4.    int n, i, num;
  5.    do{
  6.        printf("Tam\xA4o del vector: ");
  7.        scanf("%d", &n);
  8.    }while(n<2 || n>20); //Entre 2 y 20
  9.    int vector[n];
  10.    for (i=0; i<n; i++){
  11.        do{
  12.           printf("Introduce un numero, vector %i: ", i+1);
  13.           scanf("%d",&num);
  14.           vector[i] = num;
  15.        }while(num<0 || num>9); // Entre 0 y 9
  16.    }
  17.    // Mostrar vector
  18.    printf("\n\nVector:\n");
  19.    printf("____________________\n\n");
  20.    for (i=0; i<n; i++)
  21.        printf(" %d ", vector[i]);
  22.    // PALINDROMO
  23.    for(i = 0;  i<n/2 ; i++){
  24.        printf("\n\ni=%d  vector[%d]=%d  vector[%d]=%d\n",i,i,vector[i],n-i-1,vector[n-i-1]);//sobra
  25.        system("pause");//sobra
  26.        if (vector[i]!=vector[n-i-1]){
  27.            printf("\n\nNo es palindromo");
  28.            return 1;
  29.        }
  30.    }
  31.    printf("\n\nEs palindromo");
  32.    return 0;
  33. }
  34.  

Saluditos! ..... !!!!        
« Última modificación: 16 Diciembre 2013, 14:28 pm por leosansan » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Palindromo con Pilas
Programación C/C++
Muffin 1 14,905 Último mensaje 28 Enero 2011, 02:32 am
por ricardo_b
Duda funcion palindromo
Programación C/C++
cazagavilan 2 3,039 Último mensaje 9 Abril 2012, 16:07 pm
por cazagavilan
palindromo « 1 2 »
Programación C/C++
ALONSOQ 16 12,807 Último mensaje 7 Agosto 2012, 17:52 pm
por X3R4CK3R
vector simetrico (palíndromo)
Programación C/C++
indict 3 5,674 Último mensaje 16 Diciembre 2012, 22:39 pm
por bemone
Palindromo en un archivo
Programación C/C++
Eva93 8 4,496 Último mensaje 30 Agosto 2013, 13:20 pm
por Eva93
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines