• Matéria: Informática
  • Autor: Silvaun
  • Perguntado 5 anos atrás

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

respondido por: carmenroweder7
0

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

Perguntas similares