Autor
|
Tema: Sumar las posiciones par de una cifra (Leído 2,329 veces)
|
ciquee
Desconectado
Mensajes: 25
|
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
|
|
|
En línea
|
|
|
|
K-YreX
|
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: int numero = 123456789; int ultima_cifra = numero % 10; // 9 numero /= 10; // 12345678
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
|
|
|
En línea
|
cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
|
|
|
ciquee
Desconectado
Mensajes: 25
|
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: ... while (num>=0) { ultima_cifra = num%10; // descarto la última cifra por ser lugar impar num /=10; // y me queda el número sin la última cifra ultima_cifra = num%10; // ahora la última cifra SI que ocupa un lugar par suma_pares = suma_pares + ultima_cifra; // guardo la cifra de lugar par en suma_pares num /=10; }
cout<<"La suma de las cifras de las posiciones pares es: "<<suma_pares<<endl;
return 0; }
|
|
« Última modificación: 31 Marzo 2019, 12:37 pm por ciquee »
|
En línea
|
|
|
|
K-YreX
|
Algo tan tonto como lo siguiente: numero = 1234 numero(1234) >= 0? Si ultima_cifra = 4 numero = 123 ultima_cifra = 3 suma += ultima_cifra // 3 numero = 12 numero(12) >= 0? Si ultima_cifra = 2 numero = 1 ultima_cifra = 1 suma += ultima_cifra // 4 numero = 0 numero(0) >= 0? Si ultima_cifra = 0 numero = 0 ultima_cifra = 0 suma += ultima_cifra // 4 numero = 0 numero(0) >= 0? Si... Creo que ya te has dado cuenta del problema no??
|
|
|
En línea
|
cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
|
|
|
|
K-YreX
|
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; } Coloca tu código entre etiquetas de código GeSHi 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í: int sumarPosicionesPares(int numero){ int suma = 0; while(numero != 0){ numero /= 10; suma += numero % 10; numero /= 10; } return suma; }
|
|
|
En línea
|
cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
|
|
|
ciquee
Desconectado
Mensajes: 25
|
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!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Posiciones relativas a la pantalla
Programación Visual Basic
|
~~
|
0
|
1,032
|
7 Octubre 2006, 21:48 pm
por ~~
|
|
|
Posiciones relativas a la pantalla
Programación Visual Basic
|
~~
|
4
|
1,842
|
7 Octubre 2006, 23:05 pm
por Hans el Topo
|
|
|
imprimir las posiciones de un arreglo
Java
|
leoangel
|
1
|
2,295
|
7 Noviembre 2007, 23:00 pm
por Casidiablo
|
|
|
Posiciones del LCD 4x20.
Electrónica
|
Meta
|
0
|
4,010
|
22 Mayo 2010, 20:20 pm
por Meta
|
|
|
[PHP+MYSQL] Sumar a una cifra mediante UPDATE, sin SELECT previo
PHP
|
Servia
|
3
|
24,670
|
29 Julio 2011, 00:53 am
por Shell Root
|
|