Ir ao conteúdo

C++: Dividir um numero em unidade, centena, dezena...


monique100

Posts recomendados

Postado

Tem pouco tempo que estou aprendendo C++, eu escrevi este codigo e preciso de uma ajuda, quando o usuário digita o zero no meio dos números por exemplo: 98760543 eu não consigo mostrar na resposta.:(

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

void num(int a)

{

int i,m=0,l=0,y=0,x=10;

float result=0,numero[50],soma=0,num=a,vet[20];

while (a>=10)

{

result=a/10;

numero[m]=result;

y=y+1;

if(numero[m]>=10)a=result;

else if(numero[m]<10)

{

vet[l]=numero[m];

x=10;

soma=num-((pow(x,y))*vet[l]);

l++;

if(soma<10){

vet[l]=soma;

break;

}

else if(soma>=10) {

num=soma;

a=soma;

}

y=0;

}

m++;

}

for(i=0;i<=l;i++)printf(" %.0f ",vet);

printf("\n");

}

int main()

{

// Variaveis

int numero;

char *nomenum;

printf("Entre com um numero: ");

scanf("%d",&numero);

num(numero);//chama função

//printf("Numero %d: %s\n",numero,nomenum);

system("pause");

return 0;

}

Postado

Olá, você esta querendo apenas obter os algarismos do número?


#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream.h>

using namespace std;

void num(int a)
{
int temp, i(0);
int vetResults[20];
do{

vetResults[i] = a % 10;
a = a / 10;
i++;

}while (a>=10);
vetResults[i] = a;

for(int j=i;j>=0;j--)printf("%d ",vetResults[j]);


}
int main()
{
// Variaveis
int numero;
char *nomenum;

printf("Entre com um numero: ");
scanf("%d",&numero);

num(numero);//chama função

printf("Numero %d: %s\n",numero,nomenum);
system("pause");
return 0;
}

Este código pode ser melhorado, mas se for isso que você quer fazer talvez sirva para lhe dar alguma ideia...

  • Membro VIP
Postado

A sugestão seria você colocar esse número dentro de uma string(tipo string e não tipo char *) e depois ir caminhando pelo número e separando unidade, de centena, de dezena e por ai vai.Outra sugestão seria usar a operação de MOD(resto da divisão).Faça resto da divisão por 10, dps por 100 e por ai vai pra você ir obtendo o que deseja.Abraços.

Postado

int main() {
int x = 12345;
int y, i, p=1;

for(i=1; x>=1; i++) {
y = (x % 10) * p;
x /= 10;
p *= 10;
printf("%d\n", y);
}

return 0;
}

Postado

Monique100, a modificação que eu fiz em seu código utiliza o operador MOD(%), mas foi realizada supondo que você queria guardar os resultados em um vetor..


do
{

vetResults[i] = a % 10;//Pega o resto da divisão do número a por 10
a = a / 10; divide a por 10
i++; //incrementa o contador da posição do vetor; pode excluir caso deixe
//de usar o vetor...

}while (a>=10);


Caso queira usar sem o vetor:
do
{
temp = a % 10;//Pega o resto da divisão do número a por 10
a = a / 10; divide a por 10

}while (a>=10);

Este código é que realmente faz a operação que você queria; caso não precise armazenar os números em um vetor, pode simplesmente imprimir os mesmos na tela, pois usar o vetor ou a string aumentaria o consumo de memória de seu programa;

  • Membro VIP
Postado

Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...