C/Visual C - Capicua recursivo

 
Vista:
sin imagen de perfil

Capicua recursivo

Publicado por Sebastián (31 intervenciones) el 09/02/2017 04:47:11
Hola saludos con todos, espero me puedan ayudar con este problema:

Imprimir un numero ingresado al revés y determinar si es capicúa (número que se lee igual de izquierda a derecha que derecha a izquierda).
a) Ingresar un número validando que sea mayor de 9.
b) Implemente la función capicua(int A) y resuelva lo siguiente:
 Ingrese el numero para su operación
 Llame a la función y muestre el resultado de la función
 Despliegue en pantalla si el numero ingresado es capicua.

mi duda es como implementar la funcion recursiva utilizando unicamente como parametro al numero ingresado, la verdad intente invertir el numero en la funcion en base a la suma del producto de la ultima cifra por (10 elevado al numero de cifras del numero ingresado - 1) y de ahi comparar si son iguales con el numero original en el main.

Por ejemplo si ingreso 1161

tendria que retornar la suma de 1*1000+6*100+1*10+1*1

Pero la verdad ya me confundí.

Gracias por su ayuda .
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 296
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Capicua recursivo

Publicado por agustin (272 intervenciones) el 09/02/2017 06:45:32
En ninguna parte de lo que te indica el ejercicio veo que te pidan recursividad así que lo hice sin ella aunque se podría utilizar:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include  <stdio.h>
#include <math.h>
 
int medir_largo (int valor)
{
	int i;
	for (i=0; valor>0; i++){
		valor/=10;
	}
	return i;
}
 
int capicua (int valor)
{
	int invertido=0, retval=0, i, original=valor;
	int largo=medir_largo  (valor);
	for (i=largo; i>0; i--){
		invertido+=pow (10,i-1)*(valor%10);
		valor /=10;
	}
	if (original == invertido){
		retval=1;
	}
	return retval;
}
 
int main ()
{
	int valor;
	do {
		printf ("Introduce un valor mayor que 9: ");
		scanf ("%i",&valor);
		if (valor <=9){
			printf ("Valor no valido. ");
		}
	}while (valor <= 9);
 
	if (capicua (valor) == 1){
		printf ("El valor %i es capicuo.\n",valor);
	}else{
		printf ("El valor %i no es capicuo\n",valor);
	}
	return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 296
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Capicua recursivo

Publicado por agustin (272 intervenciones) el 09/02/2017 07:12:26
Y aquí con recursividad en ambas funciones:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include  <stdio.h>
#include <math.h>
 
int medir_largo (int valor)
{
	int largo=0;
	if (valor > 0){
		valor/=10;
		largo++;
		largo+=medir_largo (valor);
	}
	return largo;
}
 
int capicua (int valor)
{
	int invertido=0;
	int largo=medir_largo  (valor);
	if (largo > 0){
		invertido+=pow (10,largo-1)*(valor%10);
		valor /=10;
		invertido+=capicua (valor);
	}
	return invertido;
}
 
int main ()
{
	int valor;
	do {
		printf ("Introduce un valor mayor que 9: ");
		scanf ("%i",&valor);
		if (valor <=9){
			printf ("Valor no valido. ");
		}
	}while (valor <= 9);
 
	if (capicua (valor) == valor){
		printf ("El valor %i es capicuo.\n",valor);
	}else{
		printf ("El valor %i no es capicuo\n",valor);
	}
	return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Capicua recursivo

Publicado por Sebastián (31 intervenciones) el 11/02/2017 16:55:50
Agustín de nuevo muchas gracias por tu ayuda, y ayudarme con el planteamiento.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Capicua recursivo

Publicado por Chema (234 intervenciones) el 09/02/2017 16:48:34
Imprimir un numero ingresado al revés , muy graciosa la broma.

Un numero capicua al revés se debe tratar de forma recursiva, otra broma muy graciosa


tendria que retornar la suma de 1*1000+6*100+1*10+1*1 sumando y multiplicando te cansaras de intentarlo.

Te recuerdo que la suma y la multiplicación comparten la propiedad conmutativa

Me gustaría conocer al profesor o persona que redacta estas cuestiones y problemas, debe ser un bromista y reírse de la gente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 296
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Capicua recursivo

Publicado por agustin (272 intervenciones) el 09/02/2017 20:46:54
Jajaja la verdad es que el enunciado deja mucho que desear. Yo no veo que diga nada de recursividad por ninguna parte en el enunciado pero bueno. Y por otro lado ¿psra que imprimir el número invertido? Es tan sencillo como poner un printf pero bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Capicua recursivo

Publicado por Chema (234 intervenciones) el 09/02/2017 22:58:46
Dar la vuelta a un número o una cadena de texto es un ejercicio simple y sencillo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
int main(void){
	char str[] = "123456789";
	char *s;
	char *e;
	char tmp;
	int number = 123456789;
	int reverse = 0;
	int remainder = 0;
 
	s = str;
	e = str +strlen(str)-1;
 
	while(s < e){
		tmp = *s;
		*s++ = *e;
		*e-- = tmp;
	}
 
   while(number!=0){
      remainder = number %10;
      reverse = (reverse *10) + remainder;
      number/=10;
   }
 
 
	printf("%s\n",str);
	printf("%d",reverse);
 
	return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Capicua recursivo

Publicado por Chema (234 intervenciones) el 09/02/2017 23:51:36
C, es muy sencillo, y divertido. Me lo paso muy bien haciendo tonterías como esta.

Convertir una cadena de caracteres a un valor numérico y darle la vuelta;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main(void){
	char str[] = "123456789";
	char *s;
	char *e;
	int x = 0;
 
	s = str;
	e = str +strlen(str) - 1;
 
	while(e >= s){
		x = x * 10 + *e -'0' ;
		e--;
	}
 
	printf("%d",x);
 
	return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Capicua recursivo

Publicado por flor (1 intervención) el 02/07/2018 15:12:18
hola, necesito un programa modular recursivo que determine si un numero es capicua en javascript,sin usar el .invert
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar