Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
lohayne27

C++ inversão de um numero inteiro positivo

Recommended Posts

Olá boa tarde,

Eu estou fazendo um exercício para inverter um numero(um numero da escolha do usuário) 

exemplo:1234 vira 4321

mas apesar do programa rodar,quando eu coloco 3 dígitos ou mais  ,os números aparecem invertidos ,mas o ultimo digito não aparece 

alguém poderia me ajudar?

 

 

#include <stdio.h>
#include <stdlib.h>


int main() {
    int n,cifra,i;
    int *v;
     v =(int*) malloc (n*sizeof(int));
    printf("digite um numero:");
    scanf("%i",&n);
    for (i=0;i<n;i++) {
    cifra=n%10;
    n=n/10;
    v=cifra;
    printf("%i",v );}
    return 0;}

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@lohayne27    o comando for não ficou bom, por isso use do / while , então no lugar do for coloque assim :

do/*for(i=0;i<n;i++)*/{

e depois do printf coloque assim :

}while(n>0);

 

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu consegui fazer o código rodar sem o vetor,mas não estou tendo ideia de como fazer isso usando vetor como me foi pedido no exercício

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@lohayne27      você quer usar vetor  ou  ponteiro   ?     esse que você colocou é um ponteiro e um vetor seria assim :

int vetor[100];

então no lugar de 

 cifra=n%10;

e dentro do do / while coloque assim :

vetor[i] = n%10;/* com vetor    */
v[i]     = n%10;/* com ponteiro */
i++;

e depois do while use um loop indo de zero até cont e imprima os números que estarão no vetor  informando a posição que o número está no vetor,  assim  :

printf("\nDigitos Invertidos Com Vetor ----> ");
for(i=0;i<cont;i++)
    printf("%d",vetor[i]);

 

Editado por devair1010
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

oi gente,boa noite

eu realmente dei uma "surtada"  na parte do FOR,mas refiz o código e fiz uma função para contar os dígitos.

Fiquei feliz até o oitavo digito ,pois quando o usuário insere um numero com  8 dígitos ou mais o programa imprime o numero invertido faltando o ultimo digito,o penúltimo...e assim sucessivamente.

isso é erro no código ou é devido ao fato de estar trabalhando com INT?

 

#include <stdio.h>
#include <stdlib.h>

 

// função para contar dígitos


int contdigitos(int n);

int main() {
    int n,i;
    int *v;
    int nd=contdigitos(n);


    //como vetor é dinâmico ,usei a função malloc
    v =(int*) malloc (nd*sizeof(int));
   printf("digite um numero:");
   scanf("%i",&n);
   for (i=0;i<nd;i++) {
    v=n%10;
    n=n/10;

    printf("%i",v );
    if (n<=0)
    break;}
    return 0;}

 

    int contdigitos(int n) {
    if (n < 10) {
    return 1;
    }
    int contador = 0;
    while (n > 0) {
        n /= 10;
        contador++;
    }
    return contador;
}

 

 

Editado por lohayne27
erro no código
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@lohayne27    para postar seu código é melhor usar o botão  <>  que está lá na barra de ferramentas da janela de responder, pois senão o código fica faltando alguns caracteres como os [ i ] que sumiram do seu código ,  e  você pode contar os dígitos do número sem necessidade dessa função  e o resultado dela nem foi usado,  então seu código com algumas modificações ficaria assim : 

#include <stdio.h>
#include <stdlib.h>
int contdigitos(int n);
int main() {
    int n,i=0,cont=0;
    int *v;
    /*int nd=contdigitos(n);*/
    /*//como vetor é dinâmico ,usei a função malloc*/
    v =(int*) malloc (n*sizeof(int));
    printf("digite um numero: ");
    scanf("%i",&n);
    while(n>0/*for (i=0;i<nd;i++*/){
        v[i]=n%10;
        n/=10;
        i++;
        cont++;
        /*printf("%i",v);*/
        /*if (n<=0)
        break;*/
    }
    printf("\nDigitos Invertidos Com Vetor ----> ");
    for(i=0;i<cont;i++)
        printf("%d ",v[i]);
    printf("\n\n");
    return 0;
}

 

Editado por devair1010

Compartilhar este post


Link para o post
Compartilhar em outros sites
#include <iostream>              // std::cout, std::cin
#include <string>                // std::string, std::to_string, std::stoi

int main()
{
    int num = 0;
    std::cout << "Insira um numero inteiro: ";
    std::cin >> num;

    std::string numStr = std::to_string(num), numInvertedStr;

    for (size_t i = numStr.size(); i--;) numInvertedStr.push_back(numStr[i]);

    std::cout << "Numero: " << std::stoi(numInvertedStr) << std::endl;

    system("pause");
    
    return 0;
}

Saída primeiro teste:

Citação

Insira um numero inteiro: 45678
Numero: 87654

 

Saída segundo teste:

Citação

Insira um numero inteiro: 1234
Numero: 4321

 

Saída terceiro teste:

Citação

Insira um numero inteiro: 51234
Numero: 43215

 

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi gente,muito obrigada pela ajuda,o programa esta rodando de boa agora ;)

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×