Autor Tema: Programación modular en C++

0 Usuarios y 1 Visitante están viendo este tema.

15 Junio, 2020, 09:34 pm
Leído 1652 veces

Ariana Gonzalez

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 2
  • País: ar
  • Karma: +0/-0
Hola.. tengo un problema de programación en lenguaje C++ Donde me piden que programe:
 
1- Generación de un número capicúa a partir de un número ingresado, salvo que ya sea capicúa. Indicando la cantidad de pasos realizados para obtener el capicúa.
2- Determinación, si corresponde, del número cuyo cuadrado sea igual a la suma de los dígitos del valor capicúa.
3- Presentación de los valores capicúa comprendidos en un rango especificado.

No se como programarlo con modularidad..  :banghead:
AYUDIITAAA!!!

15 Junio, 2020, 10:16 pm
Respuesta #1

manooooh

  • $$\Large \color{#9c57a6}\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 4,381
  • País: ar
  • Karma: +1/-0
  • Sexo: Masculino
Hola Ariana Gonzalez, bienvenida al foro!!

Recordá leer y seguir las reglas del mismo así como el tutorial del \( \mathrm\LaTeX \) para escribir las fórmulas matemáticas correctamente.

Por otro lado, ¿qué intentaste? Es importante que nos digas qué hiciste y qué dudas concretas tenés así podemos ayudarte mejor.



1- Generación de un número capicúa a partir de un número ingresado, salvo que ya sea capicúa. Indicando la cantidad de pasos realizados para obtener el capicúa.
2- Determinación, si corresponde, del número cuyo cuadrado sea igual a la suma de los dígitos del valor capicúa.
3- Presentación de los valores capicúa comprendidos en un rango especificado.

Quizás pueda ayudarte: https://www.geeksforgeeks.org/program-print-palindromes-given-range/

Saludos

15 Junio, 2020, 11:01 pm
Respuesta #2

Ariana Gonzalez

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 2
  • País: ar
  • Karma: +0/-0
holaaa... gracias por responder...

Tengo un ejercicio donde me piden que programe en C++ un programa modular que trabaje con números capicua. El programa debe cumplir con ciertos requisitos como:

1---Generación de un número capicúa a partir de un número ingresado, salvo que ya sea capicúa. Indicando la cantidad de pasos realizados para obtener el capicúa.
2--- Determinación, si corresponde, del número cuyo cuadrado sea igual a la suma de los dígitos del valor capicúa.
3---Presentación de los valores capicúa comprendidos en un rango especificado.

15 Junio, 2020, 11:09 pm
Respuesta #3

manooooh

  • $$\Large \color{#9c57a6}\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 4,381
  • País: ar
  • Karma: +1/-0
  • Sexo: Masculino
Hola

Tengo un ejercicio donde me piden que programe en C++ un programa modular que trabaje con números capicúa. El programa debe cumplir con ciertos requisitos como:

1---Generación de un número capicúa a partir de un número ingresado, salvo que ya sea capicúa. Indicando la cantidad de pasos realizados para obtener el capicúa.
2--- Determinación, si corresponde, del número cuyo cuadrado sea igual a la suma de los dígitos del valor capicúa.
3---Presentación de los valores capicúa comprendidos en un rango especificado.

Sí, es lo mismo que escribiste antes. ¿Has podido revisar el link? Ese algoritmo te permite calcular los números capicúas que hay en un rango determinado. ¿No es lo que piden los puntos 1 y 2?

Saludos

16 Junio, 2020, 10:38 am
Respuesta #4

feriva

  • $$\Large \color{#a53f54}\pi\,\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 11,319
  • País: es
  • Karma: +1/-0
  • Sexo: Masculino
Hola.. tengo un problema de programación en lenguaje C++


Yo no sé de C++ ni tampoco mucho de C, pero vi un canal el otro día donde tienes un curso de C muy detallado en cuanto cuestiones técnicas que a lo mejor te podría interesar en alguna ocasión (para alguna consulta):

https://www.youtube.com/channel/UCnMKaW-isCRhTMj3UN2HNRw

Saludos

Saludos, manooooh.

16 Junio, 2020, 12:05 pm
Respuesta #5

argentinator

  • Consultar la FIRMAPEDIA
  • Administrador
  • Mensajes: 7,738
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
  • Vean mis posts activos en mi página personal
    • Mis posts activos (click aquí)
Hola.. tengo un problema de programación en lenguaje C++ Donde me piden que programe:
 
1- Generación de un número capicúa a partir de un número ingresado, salvo que ya sea capicúa. Indicando la cantidad de pasos realizados para obtener el capicúa.
2- Determinación, si corresponde, del número cuyo cuadrado sea igual a la suma de los dígitos del valor capicúa.
3- Presentación de los valores capicúa comprendidos en un rango especificado.

No se como programarlo con modularidad..  :banghead:
AYUDIITAAA!!!

Hola Ariana.
Aunque se trate de programación, este problema tiene varias componentes de índole matemática.
Así que hay que razonar primero en papel a ver lo que significa cada cosa.

Hay que interpretar cada detalle del enunciado con cuidado.

1.
Habla de número "capicúa". Como sabrás, un mismo número se puede representar de distintas maneras, según qué base se use. Los humanos usamos base diez, pero las computadoras internamente usan base 2 (dígitos 0 y 1 solamente). Así que para detectar que un número capicúa, hay que calcular de algún modo los dígitos en base diez del número, y quizás almacenarlos en alguna parte, por ejemplo en un array (vector) de tipo "int" (también es válido usar el tipo de datos entero que ocupe menos espacio en memoria, como "char").

Luego habría que recorrer este array desde sus extremos hacia el centro, iterando, mediante una estructura repetitiva tipo "for" o "while", para comprobar si los dígitos de cada extremo van conicidiendo. Por ejemplo, Si los dígitos son: 1, 3, 6, 3, 1, hay que chequear que los "1" de las puntas coinciden, luego los "3" de más adentro, y así hasta llegar al dígito central.

Pueden usarse criterios matemáticos más prácticos, pero no sé si es parte de lo que se admite que podés usar en el problema.

Existe la posibilidad de comparar los dígitos directamente, sin necesidad de guardarlos en un array.
Pero hay que calcular el número de dígitos previamente (usando por ejemplo la función log10 de <math>),
y luego trabajar cuidadosamente con divisiones, restos y acumuladores.


2.
El segundo punto del problema confirma lo que te dije en el punto anterior: quien te puso ese problema tiene la intención de que calcules cada dígito (de base diez) del número, y los almacenes en algún array, ya que así los tendrás memorizados para poder luego operar con ellos. Por ejemplo, para sumarlos, como te pide en el segundo punto.
Esa suma quedaría guardada en una variable de tipo acumulador.
A continuación, basta calcular la raíz cuadrada de esa variable que tiene almacenada la "suma".
Podés calcular la raíz cuadrada de un número usando la función sqrt() de el archivo de cabecera <math>.

Si la intención es que no se use un array, entonces esta suma de dígitos tendrás que hacerla al mismo tiempo que los vas analizando en el punto 1, así que este punto 2 no iría aparte. Habría que agregar la variable acumuladora suma en algún lugar apropiado del algoritmo del punto 1.

Lo que no entiendo es el significado de la frase "si corresponde". Quizás se refiere a que solamente muestres el resultado de la raíz cuadrada si es que te da un número entero.
Es decir, el término "número" es más general que el de "número entero", porque con "número" nos podemos referir también a números con parte fraccionaria.
Pero es posible que la intención sea la de considerar sólo números enteros.

En ese caso, podrías hacer un cast a un tipo de datos entero, y así comparar si la parte entera del número obtenido coincide con el número mismo:

double raiz = sqrt(suma);
if ( raiz == (int) raiz ) { /* OK */ }

3.
Para el tercer punto habría que llevar a cabo un procedimiento más sistemático,
ya que pide generar una lista de números capicúas.
Ese es un problema aparte.
Una posibilidad sería forzar las cosas, aprovechando la "modularidad".
Es decir, si hacés una función que resuelva el punto 1, entonces recorrerías cada número en el rango especificado,
y verificarías si es capicúa o no llamando a dicha función.
Otra posibilidad sería aplicar algún criterio aritmética para que el algoritmo vaya más rápido, pero eso no lo explico, porque parece que el enunciado pretende otra cosa.

La función del punto 1 tendría este prototipo:

bool es_capicua (int N) {

  // Sentencias ......
  // Sentencias ......
     
}

La lógica interna de la función es lo que tenés que pensar.  ;)