Ir para conteúdo
Fórum Script Brasil
  • 0

Palindromos com bases 2 ate 32


JamesBond

Pergunta

Pessoal, beleza ?

Bom estou com umas duvidas no meu trabalho ...

o prof mandou fazer um programa capaz de identificar os numeros (de 1 ate 50) que sejam palindromos nas bases 2 ate 32.

para ficar mais claro, a impressao do programa tem que ser assim:

17 é palindromo nas bases 2, 4, 16.

19 não é palindromo.

Entenderam ? imprime os que são palindromos em suas respectivas bases e os que não são palindromos ...

eu fiz boa parte mas ainda ta com erro... me ajudem ae ...

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

#define TAM 50
#define t 32

int main() {
      int n, vet[TAM], x, y, i, j, a[t], flag;
      n=0;

      for (i=0; i<TAM; i++)
          vet[i] = n++;
      
      for (i=0; i<TAM; i++) {
          flag=0;
          y=vet[i];
          x=0;
          
          for (j=2; j<t; j++) {
              while(y!=0) {
                  a[j]=(x * j)+(y % j);
                  y=y/j;
                  x=a[j];
              }
          }
          
          for (j=2; j<t; j++) {
              if(a[j] != a[t-1-j]) {
                  printf("%d é palindromo na base %d\n\n", vet[i], j); //ta errado isso .. eu sei ... mas não consigo arrumar ... help
                  flag=1;
              }
          }
          
          if (flag==0)
             printf("%d não é palindromo\n\n", vet[i]);
      }
      
      system("pause");
}

Editado por JamesBond
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Abaixo comento o seu código mas inicialmente o que eu vou comentar é: tente nomear as variáveis de forma a se entender para que elas servem. Além de facilitar para que outras pessoas entendam seu código ainda ajuda a você mesmo quando precisar fazer manutenção no código.

Agora meus comentários:

1) O seu vetor vet é carregado com números de 0 a 49 nos índices respectivos de 0 a 49. Assim ele se torna desnecessário, poderia ser usado o próprio i no lugar de vet.

2) Pelo enunciado deveriam ser testados os números entre 1 e 50 mas da forma como está sendo feito está usando os números entre 0 e 49. O seu for deveria ficar assim:

for (i=1; i<=TAM; i++) {

3) Pelo que eu entendi o seu primeiro for com o j como contador calcula o número atual na base j e salva em a[j], correto?

4) O segundo for verifica efetivamente se o número é um palíndromo, correto?

Se o que eu entendi do código está correto o problema do seu código é que você está comparando os números entre as bases quando você deve comparar cada dígito do número na base atual.

Me explique se é isso mesmo que eu disse para dar para elaborar um algoritmo que funcione... :)

Link para o comentário
Compartilhar em outros sites

  • 0
Abaixo comento o seu código mas inicialmente o que eu vou comentar é: tente nomear as variáveis de forma a se entender para que elas servem. Além de facilitar para que outras pessoas entendam seu código ainda ajuda a você mesmo quando precisar fazer manutenção no código.

Agora meus comentários:

1) O seu vetor vet é carregado com números de 0 a 49 nos índices respectivos de 0 a 49. Assim ele se torna desnecessário, poderia ser usado o próprio i no lugar de vet.

2) Pelo enunciado deveriam ser testados os números entre 1 e 50 mas da forma como está sendo feito está usando os números entre 0 e 49. O seu for deveria ficar assim:

for (i=1; i<=TAM; i++) {

3) Pelo que eu entendi o seu primeiro for com o j como contador calcula o número atual na base j e salva em a[j], correto?

4) O segundo for verifica efetivamente se o número é um palíndromo, correto?

Se o que eu entendi do código está correto o problema do seu código é que você está comparando os números entre as bases quando você deve comparar cada dígito do número na base atual.

Me explique se é isso mesmo que eu disse para dar para elaborar um algoritmo que funcione... :)

eai cara beleza ?

1) Eu sei que eu deveria colocar i no lugar de n ... mas fiz isso porque eu tava debugando o codigo para ver se achava algum erro ... ;)

2) Esqueci de colocar o = ... xD

3) Isso mesmo

4) Isso mesmo

então cara, o problema está na comparação dos numeros para verificar se é ou não palindromo ... foi ai que empaquei ... se você tiver alguma ideia, ficaria grato ;)

valeu

Link para o comentário
Compartilhar em outros sites

  • 0

Então... você não precisava usar o i no lugar de n. Você pode usar i no lugar de vet[n]! E se você só colocasse o igual a comparação iniciaria em 0 mas deve iniciar em 1... ;)

Para resolver o problema: após você criar os números nas bases corretas você deve inverter os dígitos e verificar se o número invertido é igual ao original. O problema é que você tem que salvar os dígitos de alguma forma pois você não conseguirá trabalhar em todas estas bases diretamente. Assim no seu caso eu criaria um vetor onde cada posição conterá um dígito.

Você entendeu o que eu tentei explicar??? :)

Link para o comentário
Compartilhar em outros sites

  • 0
Então... você não precisava usar o i no lugar de n. Você pode usar i no lugar de vet[n]! E se você só colocasse o igual a comparação iniciaria em 0 mas deve iniciar em 1... ;)

Para resolver o problema: após você criar os números nas bases corretas você deve inverter os dígitos e verificar se o número invertido é igual ao original. O problema é que você tem que salvar os dígitos de alguma forma pois você não conseguirá trabalhar em todas estas bases diretamente. Assim no seu caso eu criaria um vetor onde cada posição conterá um dígito.

Você entendeu o que eu tentei explicar??? :)

então, não entendi muito bem o que você ta querendo dizer ...

você poderia me explicar melhor atraves na modificação codigo, acho eu ...

valeu

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...