Ir ao conteúdo
  • Cadastre-se

Guilherme Prudente

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Reputação

0
  1. Bom dia, gente estou com um problema no meu programa, a tarefa é criar um programa que dados valores x e y sendo que x > 1 < 10^5 e y > 1 e < 10~5 (100000) no momento so fiz a parte que o programa le o Decimal, transformar os restos da divisao por 2 e joga em um vetor x, no segundo ele transformar o numero embinario e esse numero ele quebra dividindo por 10 e pegando os restos e colocando em um vetor x, logo eu faço uma verificação, porque um numero palindromo ele tem que ser lido igualmente da direita pra esquerda ou da esquerda pra direita, ex 21(10) = 10101(2) logo em binario 21 é palindromo ai na verificação ficou o seguinte vetor x e y tem tamanho ate 18 no caso decimal de 100000 em binario vai ate 18 antes de por qualquer valor jogo 0 em todas as posições, depois pego os restos da primeira divisao de base 2 e ponho no vetor x, depois transformo em binario e pego o resto da divisao do binario na base 10 e coloco no vetor, so que a partir do ultimo numero do vetor x, por x, no caso do n8 sao 4 divisoes, mas ta dando 5, então eu começo a partir do j<=a-1, onde a tem o valor de "i" que no caso do 8 vai ser 5, então no segundo vetor eu coloco os numeros de tras pra frente, logo se comparar da primeira posição ate a metade do vetor no caso a 9 posição se forem todos iguais, é um numero palindromo, o problema é que so ta funcionando ate 1022, depois do 1022(111111111) o numero binario começa a extrapolar por ex 98563 era pra ser 11000000100000011, e ele cabe no vetor, mas mesmo assim ta dando uns numeros nada ve, quem puder ajudar agradeço. #include <stdio.h>#include <conio.h>#include <math.h>#include <stdlib.h>main(){int x[18],i=1,j=1,a,bin=0,y[18],num,num2,div=0,resto,resto2,d=1,k,z=1;for (i=1;i<=18;i++){ x[i]=0; y[i]=0;}i=1;printf("Digite o numero decimal: ");scanf("%d",&num);num2=num;do{ resto=num%2; div=num/2; num=div; x[i] = resto; i++;}while(div>0);a=i;for (j=1;j<=i-1;j++){ printf("%d",x[j]);}printf(" %d(VALOR DO N DE DIVISOES DE TESTE)",i); //valor de divisoesprintf("\n");do{resto=num2%2;div=num2/2;num2=div;bin+= resto*d;d*=10;}while(div>0);printf("%d <---- BINARIO ",bin);for (j=a-1;j>=1;j--){ resto2=bin%10; div=bin/10; bin=div; y[j] = resto2;}printf("\n");for (j=1;j<=a-1;j++){ printf("%d",y[j]);}printf("\n");i = 1;i=1;for (j=1;j<=18;j++){ printf("%d",x[j]);} printf("vetor 1\n");for (i=1;i<=18;i++){ printf("%d",y[i]); } printf("vetor 2\n");if (x[1] == y[1] && x[2] == y[2] && x[3] == y[3] && x[4] == y[4] && x[5] == y[5] && x[6] == y[6] && x[7] == y[7] && x[8] == y[8] && x[9] == y[9]){ printf("e palindromo"); }else{ printf("nao e palindromo"); } return 0;}

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