Título: Sumar las posiciones par de una cifra Publicado por: ciquee en 31 Marzo 2019, 00:35 am Hola, necesito hacer un programa que sume las posiciones par (empezando por la derecha) de una cifra, por ejemplo de 54684738 sumaria 3+4+6+5=18, y no tengo ni idea de cómo hacerlo ya que no puedo utilizar cadenas, registros, vectores ni matrices. He conseguido hacerlo que sume las cifras pares, pero lo que necesito es que sume las cifras que ocupan las posiciones pares.
¿Alguna idea? Se agradece mucho! Saludos Título: Re: Sumar las posiciones par de una cifra Publicado por: K-YreX en 31 Marzo 2019, 00:40 am Te doy la idea para que le encuentres la utilidad. Hay una utilidad que se usa mucho cuando se trabaja con números de formas similares a esta que es:
Código Ahora puedes adaptar esta idea a tu necesidad. Si te surge algún problema, envía tu código para que podamos ver dónde falla. Suerte :-X Título: Re: Sumar las posiciones par de una cifra Publicado por: ciquee en 31 Marzo 2019, 12:32 pm Buenas!! Gracias de nuevo por tu respuesta!
Creo que lo he pillado, pero tengo problemas con el cout, si lo pongo dentro del bucle me da el resultado infinitas veces, mientras que si lo pongo después de este (que es donde debe ir) no me da ningún resultado, me deja escribir el numero pero se queda ahí... Este es mi código, a ver si me ayudas a ver que tengo mal: Código: ... Título: Re: Sumar las posiciones par de una cifra Publicado por: K-YreX en 31 Marzo 2019, 13:01 pm Algo tan tonto como lo siguiente:
Código: numero = 1234 Creo que ya te has dado cuenta del problema no?? :rolleyes: Título: Re: Sumar las posiciones par de una cifra Publicado por: FalKorXXI en 31 Marzo 2019, 13:40 pm Hola. Y si pruebas a hacerlo así?
#include <iostream> using namespace std; void suma_pos_pares(int n, int& suma, int& contador){ while(n != 0){ if(contador%2 == 0)suma += n%10; n /= 10; ++contador; } } int main(){ int n; int suma = 0; int contador = 1; cin >> n; suma_pos_pares(n, suma, contador); cout << suma << endl; } :D Título: Re: Sumar las posiciones par de una cifra Publicado por: K-YreX en 31 Marzo 2019, 13:57 pm Hola. Y si pruebas a hacerlo así? #include <iostream> using namespace std; void suma_pos_pares(int n, int& suma, int& contador){ while(n != 0){ if(contador%2 == 0)suma += n%10; n /= 10; ++contador; } } int main(){ int n; int suma = 0; int contador = 1; cin >> n; suma_pos_pares(n, suma, contador); cout << suma << endl; } :D Coloca tu código entre etiquetas de código GeSHi :-X Es una forma de simplificarlo pero en la función <suma_pos_pares()>, el último parámetro creo que sobra completamente (ya que además hacer uso de el puede dar a errores al ser pasado por referencia) y el segundo parámetro también lo quitaría y que devuelva la suma la propia función. Imagina que usas la función esa 3 veces y olvidas poner el contador a 1 y la suma a 0 antes de cada ejecución; la primera ejecución sería correcta pero las dos siguientes, no. Además la idea del contador para coger solo las posiciones pares funciona bien cuando lo piensas pero complica un poco más el código. Para sumar las posiciones pares de un número, ¿qué necesitas saber? El número. Suficiente. Entonces podemos dejarlo así: Código
Título: Re: Sumar las posiciones par de una cifra Publicado por: ciquee en 31 Marzo 2019, 14:22 pm Muchas gracias Yrex! Vaya tontería (=0) jajaja
Y gracias también FalForkXXI pero aún no he dado esas funciones y no puedo usarlas! Un saludo! |