Ir ao conteúdo

Posts recomendados

Postado

Olá, estou estudando C++ e andei dando uma olhada nos codigos antigos que eu havia feito para tentar corrigi-los ou até refaze-los se necessario com o que aprendi e me deparei com este erro (que está abaixo). Sei que isso não é valido mas não sei o motivo, o compilador até tenta explicar mas é muito vago. Alguém saberia o por que isso ocorre?

 

ERRO APONTADO PELO COMPILADOR:

/home/bleszerd/Atom/C++/0001/main.cpp: In function ‘int main()’:
/home/bleszerd/Atom/C++/0001/main.cpp:51:35: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
51 | if(letra == palavraSecreta[i]) //O ERRO ESTÁ NESSA LINHA!
| ^
/home/bleszerd/Atom/C++/0001/main.cpp:53:24: error: invalid conversion from ‘char’ to ‘char’ [-fpermissive]
53 | tabuleiro[i] = letra;
| ^~~~~
| |
| char

 

 

CÓDIGO:

 

 

/*
                TARGET:
#       OS: FEDORA-LINUX-X86_64 31.0.1a with KDE Plasma
#       DATE: 04/11/2019 - América (São Paulo)
#       G++ | GCC for GNU/LINUX
#       IDE: ATOM with C++ ext. and completion

*/
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
  char palavraSecreta[30], tabuleiro[30], letra[1];
  int letras = 0, vidas = 0;


  cout << "Digite a palavra secreta: ";    //Recolhe a palavra e limpa a tela
  cin >> palavraSecreta;
  system("clear");

  for(int i = 0; i < 30; i++)              //Marca todo o array com '_'
  {
    tabuleiro[i] = '_';
  }

  for(int i = 0; i <= 30; i++)             //Calcula a quantidade de letras
  {
    if(palavraSecreta[i] != '\0')
    {
      letras++;
    }
    else
    {
      break;
    }
  }

  for(int i = 0; i < letras; i++)         //Imprime o jogo. Ex (MARCOS) : _ _ _ _ _ _      #OBS -> Há um espaço a mais no final
  {
    cout << tabuleiro[i] << " ";
  }

  while(true)
  {
    cout << "\nDigite uma letra: ";
    cin >> letra;

    for(int i = 0; i < letras; i++)
    {
      if(letra == palavraSecreta[i])       //O ERRO ESTÁ NESSA LINHA!
      {
        tabuleiro[i] = letra;
      }
    }

  }
}

 

Agradeço desde já por qualquer ajuda.

Postado

"letra" é um array (de um só elemento, mas ainda assim uma matriz).

 while(true)
  {
    cout << "\nDigite uma letra: ";
    cin >> letra[0];

    for(int i = 0; i < letras; i++)
    {
      if(letra[0] == palavraSecreta[i])       //O ERRO ESTÁ(VA) NESSA LINHA!
      {
        tabuleiro[i] = letra[0];
      }
    }
}

Alternativamente você pode alterar a declaração da variável "letra", já que não há muito sentido em declarar um array com um só elemento:

char palavraSecreta[30], tabuleiro[30], letra;
(...)
while(true)
  {
    cout << "\nDigite uma letra: ";
    cin >> letra;

    for(int i = 0; i < letras; i++)
    {
      if(letra == palavraSecreta[i])       //O ERRO ESTÁ(VA) NESSA LINHA!
      {
        tabuleiro[i] = letra;
      }
    }

  }

 

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!