Ir ao conteúdo
  • Cadastre-se

C++ inversão de um numero inteiro positivo


lohayne27

Posts recomendados

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
Link para o comentário
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]);

 

  • Obrigado 1
Link para o comentário
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;
}

 

 

  • Obrigado 1
Link para o comentário
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;
}

 

Link para o comentário
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
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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