Jump to content

Algarismos de número


Suelen

Recommended Posts

tem como me ajudar fazendo apenas com <stdio.h>

eu achei esse aqui mas tem coisas nele que eu ainda nao estudei, entao queria saber se tem como usar só <stdio.h>

#include <stdio.h>
#include <conio.h>
#include <string.h>

main ()
{     
int num, a, i;     
char tam[10];   
printf("Digite\t");     
scanf("%d",&num);
if (num < 0){     
num = -num;
}   
 sprintf(tam,"%d",num);     
a = strlen(tam);     
printf("Valor Absoluto");   
 for (i=0;i<a;i++)   
 printf("\n|%c| = %c ",tam[i],tam[i]);   
 getch();    
return 0;
}
Link to comment
Share on other sites

#include <stdio.h>

int main()
{
	int num;
	scanf("%d", &num);

	/* tamanho do numero */
	const int DIVISOR = 10;
	int Dividendo = num;
	int numLength = 1;

	while (Dividendo > DIVISOR)
	{	
		Dividendo = (int) (Dividendo / DIVISOR);
		numLength++;
	};

	/* descobrir que digitos constituem o numero */
	char aux[30];
	sprintf(aux, "%d", num);

	printf("\nO numero que inseriu e constituido por:");
	for (int i = 0; i < numLength; i++)
	{
		printf("\n%c", aux[i]);
	}

	return 0;
}

Espero que seja isto que procura, porém não tenho a certeza...

Mas caso seja, aqui vai a explicação:

  • Para obter o número de dígitos que o utilizador inseriu eu usei uma matemática bem simples que funciona da seguinte maneira. Dado um número inteiro e positivo como por exemplo 999, começamos por fazer 999 / 10 = 99 (sem casas decimais), pegamos agora no resultado do anterior.. 99 / 10 = 9, como 9 < 10, a operação chegou ao fim. O importante desta operação era contar o número de operações que fiz, neste caso fiz 2 operações, porém o número 999 tem 3 algarismos então meti o contador a começar em 1 em vez de começar em 0.
  • Após a lógica do número de algarismos estar concluída, chegou a altura de separar os diferentes algarismos. Para isso passei o número para uma string facilitando o processo de output para o terminal e depois foi só iterar. 

Espero que a minha solução seja o que queria e espero que a minha explicação tenha sido clara o suficiente! Tenho a notar que a minha solução funciona apenas para números inteiros e positivos.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.