• 0
Sign in to follow this  
Mateus Fontanini

Dúvida de Registro, o que esta errado?

Question

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!!

Share this post


Link to post
Share on other sites

3 answers to this question

Recommended Posts

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

Share this post


Link to post
Share on other 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.

Edited by Ezequiel A. Ribeiro

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this