C++ Separar números de um inteiro.
22/01/2017
0
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;
}
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
Curtir tópico
+ 0
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.
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
Responder
Mais Posts
Clique aqui para fazer login e interagir na Comunidade :)