Autor
		 | 
		
			Tema: Números capicúa  (Leído 21,208 veces)
		 | 
	 
 
	
		
			
				
					
						
							suzy
							
								
								  Desconectado
								Mensajes: 18
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
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: #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
							
						 | 
						
							
							 
							
Aquí tienes uno de N dígitos #include <stdio.h> #include <string.h> #define N 30   char num[N + 1]; // N dígitos máximo int i, j, flag;   int main() {       flag = 1;       // Validar si es de un dígito     if(j == i)         flag = 0;       while(j > i)         if(num[i++] != num[j--]) {             flag = 0;             break;         }       if(flag)     else       return 0; }   
 
 
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							suzy
							
								
								  Desconectado
								Mensajes: 18
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
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
								Mensajes: 1.077
								
								 
								
								
								
								
								 
							 
						 | 
						
							
							 
							
@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
								Mensajes: 1.314
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
Pues me fastidiaste el código que te había preparado:
 #include <iostream> #include <cstring> #include <cstdlib>   using namespace std;   int main(){      int i;      char cad[100],cad1[100];      cout << "Digite un numero: "; cin >> cad;      for (i=0;i<cad[i]!='\0';i++)         cad1[(strlen (cad))-i-1]=cad[i];      cad1[(strlen (cad))]='\0';     if (strcmp(cad1, cad)!=0 || cad1[0]=='0')         cout << "El numero "<<atoi (cad1 )<<" no es capicua"<<endl ;     else         cout << "El numero "<<(cad ) <<" es capicua"<<endl;      cin.get();      return 0;   }   
  Saluditos!. ...   
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							suzy
							
								
								  Desconectado
								Mensajes: 18
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
¿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
								Mensajes: 1.314
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
¿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:#include <iostream> #include <algorithm>   using namespace std;   int main() { 	string str,str2; 	cout << "Introduce el numero: "; cin >> cad; 	cin >> str; 	str2 = str.substr(0, str.length()); 	reverse(str.begin(), str.end());     if(str2 == str) 		cout << "El numero: "<<str2<<" es capicua." <<endl; 	else 		cout << "El numero: "<<str2<<" no es capicua.." <<endl;     return 0; }   
  !Por dios!, si he usado algorithm y a lo mejor sólo es con iostream. UMMM. Pues por ejemplo así:#include<iostream> using namespace std; int main() {    int numero0, numero1, numero2,numero_reves;    cout<<"Introduce el numero: ";    cin>>numero0;    numero1 = numero2 =numero0;    numero_reves = 0;    while( numero1 > numero_reves && numero2 > numero_reves )     {         numero_reves  = 10 * numero_reves + numero1 % 10;         numero2=numero1;         numero1 /= 10;     }     if( numero1 == numero_reves || numero2 == numero_reves)         cout<<"Es capicua "<< numero0;     else       cout<<"No es capicua "<< numero0;     return 0; }   
  Ahora creo que sí, sólo está iostream.Saluditos!. ...  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							suzy
							
								
								  Desconectado
								Mensajes: 18
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
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
								Mensajes: 1.314
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
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. 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
								Mensajes: 18
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
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
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	 |  
 
	 
	
 
			 
			
				
					
						| 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
						 | 
						
							32,554
						 | 
						
							 
							
								 1 Enero 2010, 01:50 am 
								por ManuelFerAlz
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							capicua de un rango de numeros
							 
							Programación C/C++
						 | 
						
							ryan parker
						 | 
						
							4
						 | 
						
							9,931
						 | 
						
							 
							
								 4 Junio 2011, 18:48 pm 
								por ryan parker
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							[Ayuda] Programa capicua 
							« 1 2 » 
							Programación C/C++
						 | 
						
							Sothu
						 | 
						
							10
						 | 
						
							5,716
						 | 
						
							 
							
								 3 Noviembre 2015, 04:43 am 
								por Zodiak98
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Capicua
							 
							Programación C/C++
						 | 
						
							Cjr997
						 | 
						
							2
						 | 
						
							2,759
						 | 
						
							 
							
								 5 Octubre 2016, 15:26 pm 
								por dato000
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Numero al azar capicua
							 
							Programación C/C++
						 | 
						
							emilioFIE
						 | 
						
							4
						 | 
						
							4,231
						 | 
						
							 
							
								15 Junio 2020, 20:48 pm 
								por emilioFIE
							
						 | 
					 
				 
			    |