Domingo 15 de Diciembre de 2024, 04:47
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Problema con ejercicio en C
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Problema con ejercicio en C (Leído 1209 veces)
ferthedems
Nuevo Miembro
Mensajes: 11
Problema con ejercicio en C
«
en:
Domingo 14 de Noviembre de 2010, 18:38 »
0
Buenas! He de resolver este ejercicio y estoy completamente atascado, llevo ya horas intentándolo y no hay tu tía.
Se introducen por teclado una serie de numeros enteros positivos, el final de la secuencia se marca con cero. Escribir un programa que nos indice cuantos numeros de tres cifras capicuas hay en la secuencia. Es necesario usar una funcion que partiendo de un numero entero positivo devuelva: cantidad de cifras, la primera y la última.
He hecho esto:
Código: C
#include <stdio.h>
int
funcion
(
int
num
,
int
*
ult
,
int
*
prim
,
int
*
contador
)
;
void
main
(
)
{
int
n1
,
n2
,
n3
,
suma
,
ult
=
0
,
prim
=
0
,
contador
=
0
,
capicuas
=
0
;
printf
(
"Introduce una secuencia numerica (cero cierra lectura): "
)
;
scanf
(
"%d%d%d"
,
&
n1
,&
n2
,&
n3
)
;
while
(
n1
!=
0
&&
n2
!=
0
&&
n3
!=
0
)
{
suma
=
n1
*
100
+
n2
*
10
+
n3
;
//Con esto hacemos que el numero a meter en la función tenga tres cifras
funcion
(
suma
,
&
ult
,
&
prim
,
&
contador
)
;
if
(
prim
==
ult
)
capicuas
++;
scanf
(
"%d%d%d"
,
&
n1
,&
n2
,&
n3
)
;
}
printf
(
"nEl numero de capicuas de tres cifras es: %d"
,
capicuas
)
;
}
int
funcion
(
int
num
,
int
*
ult
,
int
*
prim
,
int
*
contador
)
{
int
contador2
=
0
;
*
ult
=
num
%
10
;
while
(
num
>
10
)
{
num
=
num
/
10
;
contador2
++;
}
contador2
++;
*
contador
=
contador2
;
*
prim
=
num
;
}
La función está bien. El tema es que lea las cifras de tres en tres y detecte los ceros. Este modelo que pongo, por ejemplo, no funciona.
Saludos y gracias.
EDITO: ESTABA MAL ESCRITO EL CODIGO.
Tweet
punteroNULO
Miembro activo
Mensajes: 73
Re: Problema con ejercicio en C
«
Respuesta #1 en:
Lunes 15 de Noviembre de 2010, 19:15 »
0
La función para calcular si es capicúa funciona, pero los cálculos cuantos más sencillos mejor:
Como es de tres cifras para que sea capicua tiene que coincidir las unidades con las centenas, o sea:
Código: C
if
(
suma
%
10
==
suma
/
100
)
es capicua
(como "suma" es un entero, "suma/100" devuelve las centenas sin decimales, también se puede asegurar mediante casting o una función de redondeo).
Por otro lado para leer el número de tres cifras lees tres números, que pasa si introduzco 1 22 1?
Lo correcto es leer un número y luego se comprueba si es de tres cifras:
Código: C
scanf
(
"%d"
,
&
suma
)
;
while
(
suma
!=
0
)
//salir si cero
{
// comprobamos que el número sea de tres cifras.
if
(
suma
>
99
&&
suma
<
1000
)
comprobar si es capicua
;
scanf
(
"%d"
,
&
suma
)
;
}
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Problema con ejercicio en C