Ir ao conteúdo

Posts recomendados

Postado

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
Postado
3 horas atrás, lohayne27 disse:

for (i=0;i<n;i++)

Reveja a lógica do seu algoritmo. Essa a condição "i < n" não faz nenhum sentido.

Postado

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
Postado

@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
Postado

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
Postado

@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;
}

 

Postado
#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

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!