Ir ao conteúdo
  • Cadastre-se

C Problema de Palíndromo - Linguagem C


LucasCBSouto

Posts recomendados

Pessoal, estou errando algo neste código, o problema é relacionado a palíndromo , que é uma sequência de caracteres que inicio para o fim ou do fim para inicio representam a mesma palavra (p.ex ana, arara etc.)

O problema pede que leia um número n inteiro maior que zero (par ou ímpar); Um vetor de n elementos caracteres e a escrita de uma mensagem de sim ou não, caso seja ou não seja o vetor um palindromo.

 

O código está assim:

 

#include<conio.h>
#include<stdio.h>
#include<math.h>

int main ()
{
    float v[i];
    int i, num, palind;

    printf ("Entre com um numero inteiro maior que zero:\n\n ");
    scanf("%d", n);

    printf("        Entre com numeros para o vetor:\n\n\n");

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

        scanf("%c", &v[i]);

    palind = 1;

    for (i = 1; n/2; i++)
    {
        if (v(i) != v(n-1+1))
        palind = 0;

    }

    if (palind == 1)

        printf ("\né um palindromo!");
    else

        printf("\n\n Nao eh uma palindromo!");

}

 

 

Onde penso que estejam os erros e não sabendo alterá-los:

int main ()
{
    float v[i];                  // aqui creio que nao estou declarando a variável de modo correto, tipo a quantidade de vetor (pelo exercício                                           proposto) deveria ser estabelecido pela quantidade n estabelecida no scanf adiante


    int i, num, palind;

   


    scanf("%d", n);



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

        scanf("%c", &v[i]); // creio que aqui não estou sabendo fazer para que a leitura dos N vetores seja incutida por caracteres

    	palind = 1;

  

  for (i = 1; n/2; i++)
    {
        if (v(i) != v(n-1+1)) // aqui está aparecendo o erro: called object 'v' is not a function or function pointer|
        palind = 0;

    }

 
}

 

 

Como posso corrigir isso?

Link para o comentário
Compartilhar em outros sites

2 horas atrás, T1000_2015 disse:

Amigo, creio que o problema está na declaração do vetor como float.

Se você declara-lo como número inteiro, será que resolve?

 

Oi, @T1000_2015

Fazendo como sugeres o erro passa para o segundo for, além da linha de declaração de variáveis:

 

|22|error: called object 'v' is not a function or function pointer|
|7|note: declared here|
|22|error: called object 'v' is not a function or function pointer|
|7|note: declared here|

 

 

1 hora atrás, CiroboyBR disse:

Isso aqui parece ser um erro, pois se é uma comparação deveria ser:


if (palind == 1)

 

Oi, @CiroboyBR ,

 

Obrigado, passou desapercebido, corrigi. porém não executa ainda, o problema persiste, o erro continua aparecendo na parte da declaracao de variável:

 

|7|error: 'i' undeclared (first use in this function)|

|7|note: each undeclared identifier is reported only once for each function it appears in|

 

Creio que não estou sabendo declarar o vetor de modo que ele receba caracteres e comporte um tamanho estabelecido pela entrada de n.

 

Como posso fazer isso?

Link para o comentário
Compartilhar em outros sites

@LucasCBSouto  Uma opção seria alocação dinâmica, se não possui conhecimento, recomendo dar uma olhada pois seria uma boa.

 

Agora sobre o seu código, está dando que i não foi declarado, e é isso mesmo, você declarou um vetor de float do tamanho i, sendo que a variável i só será criada na linha abaixo, então não dará certo, e mesmo se criar depois do i irá dar problemas pois o mesmo não terá valor, então uma solução é ler o tamanho que o usuário deseja na variável n, logo após você aloca dinamicamente o vetor float com tamanho n.

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