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

Dúvida de Registro, o que esta errado?


Mateus Fontanini

Pergunta

O código é esse:

#include <iostream>

#include <string.h>

#include <stdio.h>

#define tam 3

using namespace std;

struct habitantes

{

char sexo[2];

int altura;

int idade;

char olhos[2];

};

int main()

{

int i,media;

media = 0;

habitantes vet[tam];

for (i=0; i<tam; i++)

{

cout << " Digite o sexo :";

gets (vet.sexo);

cout <<"\n";

cout << "Digite a altura";

cin >> vet.altura;

fflush(stdin);

cout << "Digite a idade";

cin >> vet.idade;

fflush(stdin);

cout << "Digite os olhos:";

gets(vet.olhos);

cout << vet.olhos;

if (vet.olhos=='c')

{

cout << vet.idade;

cout << "entrei";

media = media + vet.idade;

}

}

cout << media;

cout << "Hello world!" << endl;

return 0;

}

Tá dando o seguinte erro: ISO C++ forbids comparison between pointer

Se eu colo =="c", funciona, mas nunca entra no for! alguém pode me ajudar? Obrigado!!

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Ola, você diz que não entra no for, más como não entra no for se o for faz repetir

o código três vêzes?

Aliás este código até funciona sem o for veja:

#include <iostream>
#include <string.h>
#include <stdio.h>
#include <conio2.h>
#define tam 1

using namespace std;

struct habitantes
{
char sexo[2];
int altura;
int idade;
char olhos[2];
};

int main()
{
int i,media;
media = 0;
habitantes vet[tam];

//for (i=0; i<tam; i++)
//{
cout << " Digite o sexo :";
gets (vet[i].sexo);
cout <<"\n";
cout << "Digite a altura";
cin >> vet[i].altura;
fflush(stdin);
cout << "Digite a idade";
cin >> vet[i].idade;
fflush(stdin);
cout << "Digite os olhos:";
gets(vet[i].olhos);
cout << vet[i].olhos;

if (vet[i].olhos=="c")
{
cout << vet[i].idade;
cout << "entrei";
media = media + vet[i].idade;
}
//}

cout << media;

cout << "Hello world!" << endl;
getche();
}

ou se não entendi me desculpe tah certo? Abraços...

Link para o comentário
Compartilhar em outros sites

  • 0

Quando você cria um "char olhos[2]"

você está criando um vetor de 3 posições, ou seja 0 , 1 e 2. Nunca esqueça do zero.

se você fizer isso olhos = "abc" terá um erro pois no final de toda string é coloca um sinal de fim da mesma, então o que se vê "abc" na verdade é "abc/0" o vetor para conter nossa string "abc" tem que ser de 4 espaços e não 3, nunca esqueça desse sinal de fim de string quando for criar um vetor de string. O nosso vetor de 2 só cabe "ab" pois a posição 2 receberá o sinal de fim de string.

olhos[3]= {'a','b','c'} é o mesmo que olhos[3] = "abc"

na hora que você faz um "gets(vet.olhos)" e coloca a letra c por exemplo essa letra irá para posição 0.

então para que você a localize terá que fazer o if assim : if (vet.olhos[0]=='c')

o C não reclama se você fizer isso if (vet.olhos=="c"), porque "c" significa um conjunto de string, ou uma palavra, será feita uma comparação com todos os campos do vetor olhos[2], enquanto que (vet.olhos=='c') você está querendo localizar um campo especifico que contenha uma letra. Como você não especificou esse campo como em vet.olhos[0]=='c' ele dará erro.

Da mesmo forma terá um erro se fizer vet.olhos[0]=="c", pois você quer localizar uma palavra inteira em uma posição apenas, que suporta apenas uma letra.

O correto então seria vet.olhos=="c" , sem especificar uma posição.

"forbids comparison between pointer" preste atenção na mensagem de erro, está falando que há um erro em se fazer comparação entre ponteiros, isso porque todo char na verdade é um vetor de ponteiros que apontam para caractere.

Editado por Ezequiel A. Ribeiro
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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...