elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Sumar las posiciones par de una cifra
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Sumar las posiciones par de una cifra  (Leído 2,361 veces)
ciquee

Desconectado Desconectado

Mensajes: 25



Ver Perfil
Sumar las posiciones par de una cifra
« 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 


En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Sumar las posiciones par de una cifra
« Respuesta #1 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
  1. int numero = 123456789;
  2. int ultima_cifra = numero % 10; // 9
  3. 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 :-X


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
ciquee

Desconectado Desconectado

Mensajes: 25



Ver Perfil
Re: Sumar las posiciones par de una cifra
« Respuesta #2 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:
...
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
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Sumar las posiciones par de una cifra
« Respuesta #3 en: 31 Marzo 2019, 13:01 pm »

Algo tan tonto como lo siguiente:
Código:
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?? :rolleyes:
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
FalKorXXI

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Sumar las posiciones par de una cifra
« Respuesta #4 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
En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Sumar las posiciones par de una cifra
« Respuesta #5 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
  1. int sumarPosicionesPares(int numero){
  2.    int suma = 0;
  3.    while(numero != 0){
  4.        numero /= 10;
  5.        suma += numero % 10;
  6.        numero /= 10;
  7.    }
  8.    return suma;
  9. }
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
ciquee

Desconectado Desconectado

Mensajes: 25



Ver Perfil
Re: Sumar las posiciones par de una cifra
« Respuesta #6 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!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Posiciones relativas a la pantalla
Programación Visual Basic
~~ 0 1,039 Último mensaje 7 Octubre 2006, 21:48 pm
por ~~
Posiciones relativas a la pantalla
Programación Visual Basic
~~ 4 1,853 Último mensaje 7 Octubre 2006, 23:05 pm
por Hans el Topo
imprimir las posiciones de un arreglo
Java
leoangel 1 2,304 Último mensaje 7 Noviembre 2007, 23:00 pm
por Casidiablo
Posiciones del LCD 4x20.
Electrónica
Meta 0 4,035 Último mensaje 22 Mayo 2010, 20:20 pm
por Meta
[PHP+MYSQL] Sumar a una cifra mediante UPDATE, sin SELECT previo
PHP
Servia 3 24,689 Último mensaje 29 Julio 2011, 00:53 am
por Shell Root
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines