C++ Separar números de um inteiro.

22/01/2017

57

C++

Ola!

Estou lendo e estudando sobre C++ no livro " C ++ Como Programar 5ª edição ".
Há uma questão na pg 97. Questão 2.28 cujo eu não consigo realizar, sendo ela:

Escreva um programa que insere um inteiro de cinco dígitos, separa o inteiro em seus dígitos individuais e imprime os dígitos separados
entre si por três espaços cada. [Dica: Utilize operadores de divisão de inteiros e módulo.] Por exemplo, se o usuário digitar 42339, o
programa deve imprimir:

4 2 3 3 9.


Pelo que eu compreendi, devo fazer:

#include <iostream>

using namespace std;


int main () {

int x ;

cin >> x; // Digitar cinco números

// eu não faço ideia como separar estes números?
// alguém pede me ajudar?

return 0;
}
Ericsson Sousa

Ericsson Sousa

Responder

Post mais votado

09/06/2017

Fala brother.... sim , Deitel :D... também estou lendo (estou gostando bastante), mas estou lendo o deitel C e tem uma questão exatamente como esta no Capítulo 2.

Você tem que fragmentar esses números e não pode usar matrizes rs.... realmente um desafio interessante.

No caso do livro em C nem ao menos foi dado nenhuma dica rs... simplesmente deduzi que todas as questões tem que ser resolvidas levando em consideração o conteúdo que foi tratado no capítulo (no caso, nada de funções, nada de matrizes, nada de if´s aninhados, nada de loops, nada de laços for... enfim).

Foi bem desafiante e, reparei que já sabíamos usar o operador divisão e módulo, então comecei a raciocinar:

Pegamos o número 42339 e temos que separar eles... bom:

Quando dividimos os números inteiros em um tipo de dado int, o resultado é sempre um inteiro (e o módulo é ignorado), então:

inteiro 42339 / 10 = 4000 inteiros e 2339 de resto
inteiro 42339/ 100 = 400 inteiros e 2339 de resto
inteiro 42339/ 1000 = 40 inteiros e 2339 de resto
inteiro 42339/10000= 4 inteiros e 2339 de resto


Percebeu que nessa última conta acabamos de extrair o último dígito ??? :D... legal esse é o caminho.

Descobrimos que quando dividimos um números de 5 dígitos por um número redondo de base 10 de 5 dígitos (10000), obtemos o último dígito.

Mas, e os outros 4 ? Bom, o livro diz para usarmos aquilo que aprendemos no cap2, e nesse capítulo aprendemos a usar o operador MÓDULO (%)... o que ele faz ?? Ele faz uma divisão e retorna o ??? RESTO :D...

Legal , isso deve servir pra algo, vamos tentar :

dígito 5 = 42339 / 10000 = -------------------------------------------------------------------------------------> 4.
dígito 4 = 42339 / 1000 = 42 % 10 = 40 resto = -----------------------------------------------------------> 2
dígito 3 = 42339/ 100 = 423 % 100 = 4 resto = 23 % 10 = 2 resto = ------------------------------------> 3
dígito 2 = 42339/10 = 4233 % 1000 = 4 resto 233 % 100 = 2 resto 33 % 10 = 3 resto = ------------> 3
dígito 1 = 42339%10000 = 4 resto 2339 % 1000 = 2 resto 339 % 100 = 3 resto 39 % 10 = 3 resto = 9

EUREKA !!!!

E assim separamos os números... sem matrizes, sem funções, sem loops, sem laços for, sem if´s aninhados... PURA MATEMÁTICA :D

(eu nem acredito que cheguei a essa conclusão sozinho rs....)

Sei que chegou meio tarde, + alguém pode ter ficado esclerosado com essa questão (como eu fiquei) e cansou de tentar pensar em alguma solução com código... o segredo era os operadores e pura matemática ;D....

Abraços e bons estudos.

Felipe Djairt

Felipe Djairt
Responder

Mais Posts

21/11/2021

Rodrigo Villaça

Muito obrigado
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários,
consulte nossa política de privacidade.

Aceitar