Crie um programa em C que receba um número e imprima ele na ordem inversa.
Ou seja, se recebeu o inteiro 123, deve imprimir o inteiro 321.
Respostas
Resposta:
Ola, eu estou com uma dúvida. Tenho que criar um programa em C que converta um numero, por exemplo insiro 123 e ele devolve 321 mas não posso aceitar como texto. Tem que ser como número. Espero que me possam ajudar..
cumps Pedro Lopes
Knitter 101Knitter
Publicado 3 de Fevereiro de 2009
De uma forma rápida, não quer dizer que seja correcta, optimizada ou o que mais, poderás ler o valor como número, imprimir esse valor para uma variável String, e inverter a ordem dos caracteres. Para escreveres para dentro de uma string podes usar o sprintf, que funciona exactamente como o printf mas que usa um parâmetro que é a string para onde queres escrever.
Quando digo "String" refiro-me a um vector de caracteres terminado pelo '\0'.
rgcaldas 0rgcaldas
Publicado 3 de Fevereiro de 2009
Podes ir dividindo por 10 e colocando o resto num array e depois basta multiplicares por 10^x onde x será a posição onde queres o digito. Algo do género:
while(x > 0) {
resto[digitos] = x %10;
digitos++;
x /=10;
}
for (i=digitos;i>0;i--)
{
resutado += resto[i] * pow(10,digitos);
}
Já não escrevo código em c à algum tempo, é possível que exista algo de errado no código.
cgoncalves 0cgoncalves
Publicado 3 de Fevereiro de 2009
Também podes ir com algo deste género:
int revert(int n)
{
int ret=0;
int i=1;
while(i<=n)
{
ret*=10;
ret+=(n%(i*10)-n%i)/i;
i*=10;
}
return ret;
}
main()
{
int num, rev;
printf("Numero a inverter:\n");
scanf("%d",&num);
rev = revert(num);
printf("o numero invertido é: %d", rev);
getch();
}
PS: não testei mas assim de olho deve funcionar.
orium 0orium
Publicado 6 de Fevereiro de 2009
Isto e' o mais elegante que consigo:
#include <assert.h>
int
reverse(int n)
{
int r=0;
assert(n >= 0);
for (; n; n/=10)
r=r*10+n%10;
return r;
}
TheDark 0TheDark
Publicado 7 de Fevereiro de 2009
Podiam tentar ajudar sem dar o código completo... tinha mais valor.
Indignad0 0Indignad0
Publicado 8 de Fevereiro de 2009
int inverte(int n, int res){
if( n/10 == 0 )
return res*10 + n%10;
return inverte(n/10, res*10 + n%10);
}
void main(){
printf("%d", inverte(123, 0));
}
ordepavr 0ordepavr
Publicado 21 de Maio de 2009
Em 06/02/2009 às 16:03, TheDark disse:
Podiam tentar ajudar sem dar o código completo... tinha mais valor.
sim, o objectivo é que eu fique a saber e não que eu copie... mas foram grande ajuda... ja resolvi.
Por acaso ficou de forma diferente de todos estes mas ajudaram bastante.
Muito obrigado