Ir ao conteúdo

ponteiros/função ajuda


Big Mike

Posts recomendados

Postado

por favor, poderiam ajudar nesta questão, onde está o erro?

O d2 sempre fica zero, por q?

e se entrar com um numero maior que 5 dig ele também aceita, mas fica zoado, o correto é não aceitar

como resolver isso?


#include <stdio.h>

int separaDigitos (int n, int* d1, int* d2, int* d3, int* d4, int* d5){

if (n > 99999)
return (0);
else{
*d1 = n/10000;
*d2 = (n%10000)/1000;
*d3 = ((n%10000)%1000)/100;
*d4 = (((n%10000)%1000)%10)/10;
*d5 = (((n%10000)%1000)%10)%10;

}

}

main (){

int num, recebe;
int d1, d2, d3, d4, d5;

printf ("Entre com o numero\n");
scanf ("%d", &num);

separaDigitos (num, &d1, &d2, &d3, &d4, &d5);

if (recebe == 0)
printf ("Valor inválido");

else{
printf ("\n1 digito menos significativo: %d", d5);
printf ("\n2 digito menos significativo: %d", d4);
printf ("\n3 digito menos significativo: %d", d3);
printf ("\n4 digito menos significativo: %d", d2);
printf ("\n5 digito menos significativo: %d", d1);

}
return (0);
}

agradeço ajuda

Postado
por favor, poderiam ajudar nesta questão, onde está o erro?

O d2 sempre fica zero, por q?

e se entrar com um numero maior que 5 dig ele também aceita, mas fica zoado, o correto é não aceitar

como resolver isso?

agradeço ajuda

O problema do zero era por causa do cálculo. Confira a diferença;

E sobre ele aceitar qualquer coisa, era porque você precisava testar o valor de retorno da função.

#include <stdio.h>

int separaDigitos (int n, int* d1, int* d2, int* d3, int* d4, int* d5)
{

if (n > 99999)
return 1;

*d1 = n/10000;
*d2 = (n%10000)/1000;
*d3 = ((n%10000)%1000)/100;
*d4 = (((n%10000)%1000)%100)/10;
*d5 = (((n%10000)%1000)%10)%10;

return 0;
}

int main ()
{

int num, recebe;
int d1, d2, d3, d4, d5;

printf ("Entre com o numero\n");
scanf ("%d", &num);

recebe = separaDigitos (num, &d1, &d2, &d3, &d4, &d5);

if (recebe)
printf ("Valor invalido!");

else
{
printf ("\n1 digito menos significativo: %d", d5);
printf ("\n2 digito menos significativo: %d", d4);
printf ("\n3 digito menos significativo: %d", d3);
printf ("\n4 digito menos significativo: %d", d2);
printf ("\n5 digito menos significativo: %d", d1);
}

return 0;
}

NW

Postado

Você está confundindo o resultado entre "%" e "/".

O operador "/" retornará a parte inteira e o "%" será a sobra.


*d1 = n % 10;
*d2 = (n / 10) % 10;
*d3 = (n / 100) % 10;
*d4 = (n / 1000) % 10;
*d5 = (n / 10000) % 10;

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!