Título: Decir si un vector es palindromo o no
Publicado por: sora_ori 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 (http://i42.tinypic.com/34xqrza.png) #include <stdio.h> #include <stdlib.h> #include <string.h> #include<conio.h> int main(){ int n, i, num; do{ printf("Grandaria del vector: "); }while(n<4 || n>20); //Entre 4 y 20 int vector[n]; for (i=0; i<n; i++){ do{ printf("Introduce un numero, vector %i: ", i +1); vector[i] = num; }while(num<0 || num>9); // Entre 0 y 9 } // Mostrar vector printf("____________________\n\n"); for (i=0; i<n; i++) // PALINDROMO int temp = vector[i]; int extraer = 0; int nuevonumero = 0; for(i = 0; temp > 0; i++){ extraer = temp%10; nuevonumero = (nuevonumero*10) + extraer; temp = temp/10; } if(temp == nuevonumero){ } else{ printf("\n\nNo es palindromo"); } return 0; }
Muchas gracias!
Título: Re: Decir si un vector es palindromo o no
Publicado por: Almapa 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: // PALINDROMO bool palindromo=1; for(i = 0; i<n/2; i++){ if(vector[i]==vector[n-1-i]){}else{palindromo=0;} } if(palindromo==1){ printf("\n\nEs palindromo"); } else{ printf("\n\nNo es palindromo"); }
Título: Re: Decir si un vector es palindromo o no
Publicado por: sora_ori en 16 Diciembre 2013, 12:44 pm
Muchas gracias, muy sencillo de hacer y entendible =)
Saludos
Título: Re: Decir si un vector es palindromo o no
Publicado por: leosansan 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:#include <stdio.h> int main(){ int n, i, num; do{ printf("Introduce el numero: "); scanf("%d", &num); }while(num<10 || num>999999999); // Mostrar vector printf("\n\nNumero:\n"); printf("____________________\n\n"); printf(" %d \n\n", num); // PALINDROMO int temp = num; int extraer = 0; int nuevonumero = 0; for(i = 0; temp > 0; i++){ extraer = temp%10; nuevonumero = (nuevonumero*10) + extraer; printf("nuevonumero=%d\n",nuevonumero);;system("pause");//sobra temp = temp/10; } if(num == nuevonumero) printf("\n\nEs palindromo"); else printf("\n\nNo es palindromo"); return 0; }
Pero si quieres usar el vector y nuevonumero te serviría;#include <stdio.h> int main(){ int n, i, num; do{ printf("Grandaria del vector: "); scanf("%d", &n); }while(n<2 || n>20); //Entre 2 y 20 int vector[n]; for (i=0; i<n; i++){ do{ printf("Introduce un numero, vector %i: ", i+1); scanf("%d",&num); vector[i] = num; }while(num<0 || num>9); // Entre 0 y 9 } // Mostrar vector printf("\n\nVector:\n"); printf("____________________\n\n"); for (i=0; i<n; i++) printf(" %d ", vector[i]); int temp = 0; for (i=0; i<n; i++){ temp=temp*10+vector[i]; } printf("\ntemp=%d\n",temp);//sobra // PALINDROMO int nuevonumero = 0; for(i = n-1; i>=0 ; i--){ nuevonumero= nuevonumero*10+vector[i] ; printf("nuevonumero=%d\n",nuevonumero);system("pause"); } if(temp == nuevonumero) printf("\n\nEs palindromo"); else printf("\n\nNo es palindromo"); return 0; }
Aunque ya que estas usando un array, lo más simple sería ir comparando los extremos del vector:, como indico Almapa#include <stdio.h> int main(){ int n, i, num; do{ printf("Tam\xA4o del vector: "); scanf("%d", &n); }while(n<2 || n>20); //Entre 2 y 20 int vector[n]; for (i=0; i<n; i++){ do{ printf("Introduce un numero, vector %i: ", i+1); scanf("%d",&num); vector[i] = num; }while(num<0 || num>9); // Entre 0 y 9 } // Mostrar vector printf("\n\nVector:\n"); printf("____________________\n\n"); for (i=0; i<n; i++) printf(" %d ", vector[i]); // PALINDROMO for(i = 0; i<n/2 ; i++){ printf("\n\ni=%d vector[%d]=%d vector[%d]=%d\n",i,i,vector[i],n-i-1,vector[n-i-1]);//sobra system("pause");//sobra if (vector[i]!=vector[n-i-1]){ printf("\n\nNo es palindromo"); return 1; } } printf("\n\nEs palindromo"); return 0; }
Saluditos! ..... !!!! (http://st.forocoches.com/foro/images/smilies/aaaaa.gif)
|