Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Sr. Burns

Unresolved overloaded function...

Recommended Posts

Não é o primeiro topico com o mesmo problema. Mas os outros ou sao muito específicos ou nao tem solução.

Quero fazer o jogo da velha.

(nah... meu professor é quem quer... por mim ja teria desistido)

C:\Users\...\t1.cpp|133|error: invalid types '<unresolved overloaded function type>[int]' for array subscript|

Essa coisa ai em cima aparece em varias linhas...

Primeiro o main chama o menu, que chama ou o plstart() ou pcstrt() (o jogador decide quem inicia, PC ou jogador) (não precisa ficar analisando as duas funçoes, então, pois ambas apenas chamam o testador(), e ambas usam a funçao tab(), que primeiramente gerou o tabuleiro vazio).

Mais informações me liguem.

(sou amador em programação, a proposito, portanto sem palavrões, por favor)

#include<iostream>
#include<cstdlib>
#include<string>
#include<ctime>

using namespace std;

class velha
{
public:

//-----------------------CONSTRUT---VELHA------------------------------------

velha()
{/*
string tab[3][3];
int ct, ct2;

cout<<" A B C"<<endl<<endl;
for(ct=0;ct<3;ct++)
{
cout<<ct;
for(ct2=0;ct2<3;ct++)
tab[ct][ct2]=" .";
}*/
}

//--------------------------------TAB----------------------------------------

int tab()//Gera o tabuleiro vazio
{
string tab[3][3];
int ct, ct2;

cout<<" A B C"<<endl<<endl;
for(ct=0;ct<3;ct++)
{
cout<<ct;
for(ct2=0;ct2<3;ct++)
cout<<tab[ct][ct2]<<" .";
}
}

//-------------------------------MENU-----------------------------------------

void menu()
{
int l, x, y;
char c;

do{
cout<<"Pra sair aperta '4' e 'Enter'."<<endl<<endl;
cout<<"Quer começar? Digita as coordenadas segundo o modelo (Tu é o X)."<<endl<<endl;
cout<<"Vai deixar o computador começar? Digita '0' (zero) e 'Enter'."<<endl<<endl;
cout<<"Ajuda? aperta '5' no lugar da linha."<<endl<<endl;
cout<<" A B C"<<endl<<endl;
for(x=0;x<3;x++)
{
cout<<x;
for(y=0;y<3;y++)
cout<<" .";
cout<<endl<<endl;
}
cout<<endl;
cout<<"Linha/Opssao: ";
cin>>l;
cout<<endl;

switch(l)
{
case (4):cout<<"Bye bye!"<<endl;
break;
case (5):
{
system("cls");
cout<<"Coordenadas se iniciam com linha (1, 2, 3) + 'Enter', em seguida com coluna (A, B, C) + 'Enter'."<<endl<<"Ex: '2' Enter 'C' Enter."<<endl<<"Te vira com o resto."<<endl<<endl<<endl;
}
break;
case (0): pcstrt();
break;
default:
{
cout<<"Coluna: ";
cin>>c;
switch(c)
{
case('a'): c=1;
break;
case('b'): c=2;
break;
case('c'): c=3;
break;
cout<<endl;
}
tab();
plstrt(l, c);
};
break;
}
} while(l!=4);
}

private:

//--------------------------RANDOMIZADOR---------------------------------
//Ainda nao o fiz util
int randomizador()
{
int x;
srand(time(0));
x=rand()%3;
return x;
}

//-----------------------------PCSTRT------------------------------------

void pcstrt()//Quando o PC inicia
{
int l, c, terminado=0;

do
{
l=rand()%3;
} while (l==1);

do
{
c=rand()%3;
} while (c==1);
//Jogadinha ensaiada

tab[l][c]="O";

do
{
jogador();
testador("X");
PC();
testador("O");
} while(terminado!=1);
}

//------------------------------PLSTRT------------------------------------

void plstrt(int l, int c)//Quando o jogador inicia
{
int x, y, terminado=0;
tab[x][y]="X";

do
{
PC();
testador("O");
jogador();
testador("X");
} while(terminado!=1);
}

//------------------------------JOGADOR------------------------------------

int jogador()//Cin pra tua jogada
{
int l, c, jogada=0;
do
{
if(tab[l][c]!="O")
{
tab[l][c]="X";
jogada=1;
}
else
{
cout<<"Ta ocupado, manda outra coordenada"<<endl;
cout<<"Linha: ";
cin>>l;
cout<<endl<<"Coluna: ";
cin>>c;
}
} while(jogada!=1);
}

//--------------------------------PC--------------------------------------

int PC()//O cerebro do PC
{
int l, c;
do
{
l=rand()%3;
c=rand()%3;
}while ((tab[l][c]!="O") && (tab[l][c]!="X"));
tab[l][c]="O";
}

//-----------------------------TESTADOR-----------------------------------

int testador(string jogo)//Ve se alguem ja ganhou
{
int x, y, ct, terminado=0;
string simbolo;

for(x=0;x<3;x++)//verifica as 3 linhas.
{
ct=0;
for(y=0;y<3;y++)
if(tab[x][y]==simbolo) ct++;
if(ct==3) terminado=1;
}

for(x=0;x<3;x++)//verifica as 3 colunas.
{
ct=0;
for(y=0;y<3;y++)
if(tab[y][x]==simbolo)ct++;
if(ct==3) terminado=1;
}

ct=0;//verifica diagonal 1.
for(x=0;x<3;x++)
if(tab[x][x]==simbolo)ct++;
if(ct==3) terminado=1;

ct=0;//verifica diagonal 2.
for(x=0;x<3;x++)
if(tab[x][2-x]==simbolo)ct++;
if(ct==3) terminado=1;

return(terminado);
}
};

//__-__-__-__-__MAIN__-__-__-__-__

int main()
{velha x, y;
y.tab();
x.menu();
}

Editado por gandalfnho
Use a tag CODE

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok... não tenho certeza de que tenha sido isso o que consertou o problema, mas...

Declarei a string tab[3][3] dentro da funçao tab(). alem de ambas terem o mesmo nome, não seria possivel acessa-la daquela forma.

Mudei... ficou assim:


class velha
{
public:

char tab[3][3];

//-----------------------CONSTRUT---VELHA------------------------------------
velha()
{
int ct, ct2;

for(ct=0;ct<3;ct++)
for(ct2=0;ct2<3;ct++)
tab[ct][ct2]='.';
}

//--------------------------------TAB----------------------------------------
void tabuleiro()//Gera o tabuleiro
{
int l, c;

cout<<" A B C"<<endl;
for(l=0;l<3;l++)
{
cout<<l<<" ";
for(c=0;c<3;c++)
cout<<tab[l][c]<<" ";
}
cout<<endl;
}

Algum comentário?

Editado por Sr. Burns
Várias razões

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×