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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Números capicúa
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: Números capicúa  (Leído 18,144 veces)
suzy

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Números capicúa
« en: 9 Marzo 2013, 23:54 pm »

Veréis, he encontrado un código para averiguar qué números son capicúa y cuáles no cuando se introducen por teclado. Sin embargo, está hecho para que sólo pueda averiguar números de 3 cifras. Me gustaría que me ayudáseis a modificar el código para que pueda leer números de 4 cifras. ¿Qué debería cambiar? Aquí el código:
Código:
#include <iostream>
using namespace std;

int main()
{
 
 int a;
 char ca[100];
 
 Ingres:
 cout << "Digite un numero de 3 digitos: "; cin >> ca;
 
 int lnumc = strlen(ca);
 a = atoi(ca);
 
 if (lnumc==3)
 {
 int n1 = a/100;
 int n2 = a/10 - n1*10;
 int n3 = a - (n1*100 + n2*10);
 
 int ni = n3*100 + n2*10 + n1;
 
 if (ni-a == 0)
 cout << "El numero es capicua"<<endl;
 else
 cout << "El numero no es capicua"<<endl;
 }
 else
 {
     cout <<endl<< "El numero debe tener 3 digitos"<<endl;
     goto Ingres;
 }

 cin.get();
 cin.get();
 return 0;
 
}


En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Números capicúa
« Respuesta #1 en: 10 Marzo 2013, 00:21 am »

Aquí tienes uno de N dígitos

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define N 30
  4.  
  5. char num[N + 1]; // N dígitos máximo
  6. int i, j, flag;
  7.  
  8. int main() {
  9.    printf("Número: ");
  10.    scanf("%s", num);
  11.  
  12.    j = strlen(num) - 1;
  13.    flag = 1;
  14.  
  15.    // Validar si es de un dígito
  16.    if(j == i)
  17.        flag = 0;
  18.  
  19.    while(j > i)
  20.        if(num[i++] != num[j--]) {
  21.            flag = 0;
  22.            break;
  23.        }
  24.  
  25.    if(flag)
  26.        printf("Es capicua\n");
  27.    else
  28.        printf("No es capicua\n");
  29.  
  30.    return 0;
  31. }
  32.  


En línea

suzy

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: Números capicúa
« Respuesta #2 en: 10 Marzo 2013, 00:37 am »

Perdona naderST, se me había olvidado mencionar que tenía que hacerlo con la librería iostream, nada de #include <stdio.h> o #include <string.h>.Gracias de todas formas.
A ver si alguien me puede echar un cable.
En línea

0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: Números capicúa
« Respuesta #3 en: 10 Marzo 2013, 00:51 am »

@suzy, simplemente sustituye printf's por cout's y poco mas.

@amchacon, un tip, a partir de C99 existe el tipo _Bool, no hace falta que uses un entero.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Números capicúa
« Respuesta #4 en: 10 Marzo 2013, 01:26 am »

Pues me fastidiaste el código que te había preparado:


Código
  1. #include <iostream>
  2. #include <cstring>
  3. #include <cstdlib>
  4.  
  5. using namespace std;
  6.  
  7. int main(){
  8.     int i;
  9.     char cad[100],cad1[100];
  10.     cout << "Digite un numero: "; cin >> cad;
  11.     for (i=0;i<cad[i]!='\0';i++)
  12.        cad1[(strlen (cad))-i-1]=cad[i];
  13.     cad1[(strlen (cad))]='\0';
  14.    if (strcmp(cad1, cad)!=0 || cad1[0]=='0')
  15.        cout << "El numero "<<atoi (cad1 )<<" no es capicua"<<endl ;
  16.    else
  17.        cout << "El numero "<<(cad ) <<" es capicua"<<endl;
  18.     cin.get();
  19.     return 0;
  20.  
  21. }
  22.  


Saluditos!. ...
En línea

suzy

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: Números capicúa
« Respuesta #5 en: 10 Marzo 2013, 11:58 am »

¿Por qué se tendría que sustituir todo eso para que sólo sea con la librería iostream? ¿Alguna ayudita?
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Números capicúa
« Respuesta #6 en: 10 Marzo 2013, 12:26 pm »

¿Por qué se tendría que sustituir todo eso para que sólo sea con la librería iostream? ¿Alguna ayudita?

Difícil es, más no imposible.

Por ejemplo:


Código
  1. #include <iostream>
  2. #include <algorithm>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8. string str,str2;
  9. cout << "Introduce el numero: "; cin >> cad;
  10. cin >> str;
  11. str2 = str.substr(0, str.length());
  12. reverse(str.begin(), str.end());
  13.    if(str2 == str)
  14. cout << "El numero: "<<str2<<" es capicua." <<endl;
  15. else
  16. cout << "El numero: "<<str2<<" no es capicua.." <<endl;
  17.    return 0;
  18. }
  19.  

!Por dios!, si he usado algorithm y a lo mejor sólo es con iostream. UMMM. Pues por ejemplo así:

Código
  1. #include<iostream>
  2. using namespace std;
  3. int main()
  4. {
  5.   int numero0, numero1, numero2,numero_reves;
  6.   cout<<"Introduce el numero: ";
  7.   cin>>numero0;
  8.   numero1 = numero2 =numero0;
  9.   numero_reves = 0;
  10.   while( numero1 > numero_reves && numero2 > numero_reves )
  11.    {
  12.        numero_reves  = 10 * numero_reves + numero1 % 10;
  13.        numero2=numero1;
  14.        numero1 /= 10;
  15.    }
  16.    if( numero1 == numero_reves || numero2 == numero_reves)
  17.        cout<<"Es capicua "<< numero0;
  18.    else
  19.      cout<<"No es capicua "<< numero0;
  20.    return 0;
  21. }
  22.  

Ahora creo que sí, sólo está iostream.

Saluditos!. ...
En línea

suzy

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: Números capicúa
« Respuesta #7 en: 10 Marzo 2013, 13:47 pm »

Gracias leosansan!
Pero tengo dos problemillas:
Al ejecutar el programa se cierra Dev-C++. ¿Cómo puedo evitarlo?
Y lo segundo es más una duda que un problema. Mi profesor no nos ha enseñado a utilizar & y %. ¿Pará qué sirven? ¿Se podría sustituir por otra cosa más simple?
Gracias por vuestra ayuda.
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Números capicúa
« Respuesta #8 en: 10 Marzo 2013, 14:16 pm »

Gracias leosansan!
Pero tengo dos problemillas:
Al ejecutar el programa se cierra Dev-C++. ¿Cómo puedo evitarlo?

Coloca cin.get( )antes del return. Y una cosa que no me canso de repetir, Dev-C está algo más que obsoleto, como el TurboC2.0. Desde que puedas consigue te el Code::Blocks que es libre y está actualizado hasta este año.
Citar

Y lo segundo es más una duda que un problema. Mi profesor no nos ha enseñado a utilizar & y %. ¿Pará qué sirven? ¿Se podría sustituir por otra cosa más simple?

Son los operadores AND=&& y O=||, mientras que % calcula el resto de la división, es un operador más de casi cualquier lenguaje, como lo son el + - * /, así que vete acostumbrándote a él. En cambio & es para indicar la dirección y también se usa a nivel de operador de bits.


Cualquier otra duda no dudes en consultarla, bien por aquí o vía mp.

Saluditos!. .....


P.D: El segundo código de los dos últimos que te pase es "denso", por lo que es normal que te cueste. Ni te cuento lo que me costo a mí.
« Última modificación: 10 Marzo 2013, 14:20 pm por leosansan » En línea

suzy

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: Números capicúa
« Respuesta #9 en: 10 Marzo 2013, 14:27 pm »

Ya sé que Dev-C está obsoleto, pero con mi profesor sólo podemos usar este, que le vamos a hacer  :-\
Por cierto, ha surgido otro problema, ahora no se me cierra al abrir el programa, pero sí se cierra cuando introduzco los números y le doy a enter.
¿A qué puede deberse?
En línea

Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda ; [C#] Algoritmo para saber si un Nº es capicua.
.NET (C#, VB.NET, ASP)
N0vat0 6 31,364 Último mensaje 1 Enero 2010, 01:50 am
por ManuelFerAlz
capicua de un rango de numeros
Programación C/C++
ryan parker 4 9,008 Último mensaje 4 Junio 2011, 18:48 pm
por ryan parker
[Ayuda] Programa capicua « 1 2 »
Programación C/C++
Sothu 10 4,482 Último mensaje 3 Noviembre 2015, 04:43 am
por Zodiak98
Capicua
Programación C/C++
Cjr997 2 2,234 Último mensaje 5 Octubre 2016, 15:26 pm
por dato000
Numero al azar capicua
Programación C/C++
emilioFIE 4 3,194 Último mensaje 15 Junio 2020, 20:48 pm
por emilioFIE
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines