• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

suzy

[C] Ajuda: Comutar o n.º 3456->6543 (Resolvido)

16 mensagens neste tópico

;)Viva!!! tenho uma duvida!

faça um programa que peça ao utilizador um numero inteiro e apareça no ecra de forma invertida:

EXEMPLO:

    nº introduzido pelo utilizador

 

    3456

o nº aparece 6543

sei que atraves de divisoes sucessivas o restos da divisao vai-me me dar o numero invertido!

Como faço em linguagem c?? :wallbash:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já pensaste no algoritmo ou ainda estás a zeros? Penso que seria melhor mostrares aquilo em que já pensaste antes de te começarmos a ajudar :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Exactamente como disseste, usando o resto da divisão inteira por 10, 100, 1000, etc.

Exemplo:


int numero = 123456;
int div = 10
int num = 0;

num = numero % div;
printf("%d", num);

div *= 10;

num = numero % div;
printf("%d", num);

div *= 10;

// continua....
....

Apenas te mostrei um exemplo mas convém fazeres isso com um ciclo. :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:cheesygrin: será assim? nao me corre

#include<stdio.h>
main()
{
int numero, resto, conta=0;
printf("introduza um numero\n");
scanf("%d",&numero);

  while(numero>=0)
    {
    numero=numero/10;
    resto=resto%10;
    conta=resto++;
    }
    printf(" a %d\n",conta);
  fflush(stdin);
  getchar();

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

#include<stdio.h>
main()
{
int numero=0, div=10, num=0;
printf("introduza um numero: ");
scanf("%d\n",&numero);

num = numero % div;

do{

    printf("%d", num);
    div = div * 10;
    num = numero % div;

}while(num> 0);

}

Assim à pressa deve ser algo como isto. Mas não testei e não tenho a certeza que funciona. Testa tu e se não der corrige os erros :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

@suzyNão é bem assim, mas está lá perto

#include<stdio.h>
main()
{
int numero, resto, conta=0;
printf("introduza um numero\n");
scanf("%d",&numero);

  while(numero>=1) // se fosse while (numero >= 0) tinhas um ciclo infinito. porque qualquer numero positivo dividido por outro numero positivo é sempre >= 0
    {
    conta *= 10;  // "coloca" um zero no fim do conta onde se vai colocar o ultimo digito do numero
    conta += numero%10;  // "coloca" no fim do conta o ultimo digito do numero.
    numero = numero/10;  // "apaga" o ultimo digito do numero
    // nao precisas do "resto"    
    }
  printf(" a %d\n",conta);
  fflush(stdin);
  getchar();
}
}

@Hipnoted também serve  :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já pensaste no algoritmo ou ainda estás a zeros? Penso que seria melhor mostrares aquilo em que já pensaste antes de te começarmos a ajudar :thumbsup:

1- Introduzes o numero .

2- Convertes para uma string. 

 itoa( numero, myCharString, 10 ); 

3- Imprimes a string do fim para o inicio.

/ing

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

1- Introduzes o numero .

2- Convertes para uma string. 

 itoa( numero, myCharString, 10 ); 

3- Imprimes a string do fim para o inicio.

/ing

"3- Imprimes a string do fim para o inicio."

E como fazes isso? Com 1 /ing no cout? :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E como fazes isso? Com 1 /ing no cout? :S

*** OFFTOPIC ****

Hm não era bem isso, eu pretendia para números ou letras, acho que o stor quer que nos fassamos isso de maneira que "simplesmente" seja feito um output "virado do avesso" seja do que for

presumo que perguntes devido ao que perguntas-te noutro post.

presumo também que tenhas alguma resistência ao estudo, bem como na perda do teu precioso tempo a encontrar soluções...

normalmente não sou muito participativo em foruns...

mas...como hj estou bem disposto, aqui vai um incentivo... mas com um pequeno senão  :hmm:

a solução é :

I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3RyaW5nLmg+DQoNCmludCBtYWluKHZvaWQp

DQp7DQogIGNoYXIgc3RyMVtdID0gIlN0cmluZyBhIGludmVydGVyIDopIjsNCiAgY2hhciBzdHIy

WzgwXSwgKnAxLCAqcDI7DQoNCiAgcDEgPSBzdHIxICsgc3RybGVuKHN0cjEpIC0gMTsNCg0KICBw

MiA9IHN0cjI7DQoNCiAgd2hpbGUocDEgPj0gc3RyMSkNCiAgICAqcDIrKyA9ICpwMS0tOw0KDQog

ICpwMiA9ICdcMCc7DQoNCiAgcHJpbnRmKCIlcyAlcyIsIHN0cjEsIHN0cjIpOw0KDQogIHJldHVy

biAwOw0KfQ0K

Está codificada em base64.

procura um descodificador de base64 online e descodifica a solução.

/ING

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Está codificada em base64.

procura um descodificador de base64 online e descodifica a solução.

apesar de se encontrar um descodificador em menos de 1 min, sempre o obriga a pesquisar alguma coisa... ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

hehe,.. tá boa! por acaso chamou-me a atenção e fui procurar forma rapida de descodificar e até foi muito simples! :) Ora aqui está uma forma interecante de provocar a 'fome de conhecimento' por assim dizer ;)

RXN04SBmaXhlIQpQb3IgYWNhc28gZm9pIGxvZ28gYSBwcmltZWlyYSBjZW5hIHF1ZSBtZSBhcGFy

ZWNldSBuYSBwZXNxdWl6YSBkbyBnb29nbGUgcG9yICJkZXNjb2RpZmljYXIgY

mFzZTY0Ig==

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a solução é :

I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3RyaW5nLmg+DQoNCmludCBtYWluKHZvaWQp

DQp7DQogIGNoYXIgc3RyMVtdID0gIlN0cmluZyBhIGludmVydGVyIDopIjsNCiAgY2hhciBzdHIy

WzgwXSwgKnAxLCAqcDI7DQoNCiAgcDEgPSBzdHIxICsgc3RybGVuKHN0cjEpIC0gMTsNCg0KICBw

MiA9IHN0cjI7DQoNCiAgd2hpbGUocDEgPj0gc3RyMSkNCiAgICAqcDIrKyA9ICpwMS0tOw0KDQog

ICpwMiA9ICdcMCc7DQoNCiAgcHJpbnRmKCIlcyAlcyIsIHN0cjEsIHN0cjIpOw0KDQogIHJldHVy

biAwOw0KfQ0K

Está codificada em base64.

procura um descodificador de base64 online e descodifica a solução.

/ING

Posso não entender de C++ mas não sou nenhum otário... Enfim:

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

int main(void)
{
  char str1[] = "String a inverter ";
  char str2[80], *p1, *p2;

  p1 = str1 + strlen(str1) - 1;

  p2 = str2;

  while(p1 >= str1)
    *p2++ = *p1--;

  *p2 = '\0';

  printf("%s %s", str1, str2);

  return 0;
}

@http://makcoder.sourceforge.net/demo/base64.php

Já agora...

aW5naW5oZWlpcm8gc2UgbmFvIHBhcnRpY2lwYXMgbXVpdG8gZW0gZm9ydW5zIG1ha

XMgdmFsZSBuYW8gcGFydGljaXBhcmVzIHBhcmEgcGFyZWNlciBxdWUgdGVucyBwaWFk

YS4uLiBtYXMgZGUgcXVhbHF1ZXIgbWFuZWlyYSBvYnJpZ2Fkby4uLg==

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Posso não entender de C++ mas não sou nenhum otário... Enfim:

ninguem disse que eras otário.

se tens capacidade pra encontrar o base64 decoder, então tmb tens para pesquisar soluções para as tuas dúvidas.

quanto a opinares sobre a minha participação ou não no que quer que seja... dispenso obrigado.

o que postei não foi para ter piada. foi postado com outro fim.

/ing

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tá engraçada a ideia, mas original era encriptar com um algoritmo próprio e com uma chave privada... ;)

Ai dava bem mais trabalho... :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok desculpa o mal entendido então. De qualquer maneira foi isso que fiz, pesquisar, durante a pesquisa lembrei-me deste fórum e vim cá. Agora só ajuda quem quer não é? =P...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok desculpa o mal entendido então. De qualquer maneira foi isso que fiz, pesquisar, durante a pesquisa lembrei-me deste fórum e vim cá. Agora só ajuda quem quer não é? =P...

O inginheiiro ajudou-te, e ainda ficaste a aprender sobre base64. :biggrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora