Ir ao conteúdo
  • Cadastre-se

duvidas c++


FilipiBh

Posts recomendados

bom o negocio e o seguinte tentei fazer um struct como se fosse uma agenda

com nome telefone e cidade porém ao final do processo gostaria que fosse exibido

na tela quantas pessoas moram em belo horizonte porém o programa ta dando pau

alguem sabe me dizer onde esta o erro???

#include<iostream.h>

#include<conio.h>

#include<stdio.h>

struct agenda

{

char nome[50];

double telefone;

char cidade[30];

};

void main()

{

agenda cad[5];

int i,bh=0;

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

{

cout<<"Digite o nome:\n";

gets(cad.nome);

cout<<"Digite o numero do Telefone com o DDD:\n";

cin>>cad.telefone;

cout<<"Digite o nome da Cidade onde você mora:\n";

gets(cad.cidade);

if (cad.cidade=="belo horizonte")

bh++;

}

cout<<bh++<<" pessoas moram em Belo horizonte";

}

Link para o comentário
Compartilhar em outros sites

1- Você incluiu a cabeçalho <iostream> do C++ com a extensão .h, é só apagar a extensão.

2- Você esqueceu de adicionar as palavras-chave logo abaixo dos cabeçalhos para acessar a biblioteca padrão do C++: using namespace std; Ou se preferir, pode adicionar no início da função cout e cin: std::cout, std::cin.

3- Faça a função main() retornar int.

4- Digite essa expressão while(getchar() != '\n'); depois da expressão gets(cad.cidade); para forçar a limpeza do buffer de entrada.

5- Se eu não me engano, não se pode comparar strings dessa forma: if(cad.cidade=="belo horizonte"), procure outra maneira, como a função strcmp() ou strncmp().

Link para o comentário
Compartilhar em outros sites

1- Você incluiu a cabeçalho <iostream> do C++ com a extensão .h, é só apagar a extensão.

2- Você esqueceu de adicionar as palavras-chave logo abaixo dos cabeçalhos para acessar a biblioteca padrão do C++: using namespace std; Ou se preferir, pode adicionar no início da função cout e cin: std::cout, std::cin.

3- Faça a função main() retornar int.

4- Digite essa expressão while(getchar() != '\n'); depois da expressão gets(cad.cidade); para forçar a limpeza do buffer de entrada.

5- Se eu não me engano, não se pode comparar strings dessa forma: if(cad.cidade=="belo horizonte"), procure outra maneira, como a função strcmp() ou strncmp().

1- você pode usar iostream.h, ele não pertence ao padrão C++, mas funciona perfeitamente, embora não seja recomendado

2- o iostream.h já inclui a linha using namespace std; no código...

3- dependendo do compilador, ele realmente não aceita void como retorno de main mesmo (o padrão é int, tanto em C quanto em C++)

4- muito improvável que o programa tenha dado pau por causa disso...

anyway...

seja mais específico...

onde exatamente aconteceu o erro?

Link para o comentário
Compartilhar em outros sites

olha a verdade é que o erro não tem nada a ver com o que vocês disseram ai em cima o compilador é o turbo c++4.5 da borland

ele trabalha com a biblioteca iostream.h normalmente acho que o problema esta na logica o erro deve estar no if porque o struct sem o if funciona normalmente ou de repente coloquei o cout no lugar errado sei lá agradeço a ajuda de vocês mas se puderem ser mais especificos em relação aos erros agradeço!!!!

Link para o comentário
Compartilhar em outros sites

TioPatinhas, só um detalhe:

1- você pode usar iostream.h, ele não pertence ao padrão C++, mas funciona perfeitamente, embora não seja recomendado

2- o iostream.h já inclui a linha using namespace std; no código...

3- dependendo do compilador, ele realmente não aceita void como retorno de main mesmo (o padrão é int, tanto em C quanto em C++)

4- muito improvável que o programa tenha dado pau por causa disso...

4 dessas dicas que eu postei não foi para corrigir o erro, e sim para ajudar a otimizar o código! Mas para ser mais franco, eu pensava que o erro estava exatamente na troca do int pelo void da função main().

Enquanto aqui:

4- muito improvável que o programa tenha dado pau por causa disso...

Tente consertar o código do DJ-WEBMASTER sem incluir essa linha "while(getchar() != '\n');" para ver o que acontece!

T+

Link para o comentário
Compartilhar em outros sites

TioPatinhas, só um detalhe:

4 dessas dicas que eu postei não foi para corrigir o erro, e sim para ajudar a otimizar o código! Mas para ser mais franco, eu pensava que o erro estava exatamente na troca do int pelo void da função main().

Enquanto aqui:

Tente consertar o código do DJ-WEBMASTER sem incluir essa linha "while(getchar() != '\n');" para ver o que acontece!

T+

eu nunca tive problemas com o buffer de entrada a ponto de precisar forçar seu esvaziamento

bom, se você disse que o problema está no if, então provavelmente ele não tá conseguindo comparar a string c/ o char *

sugiro que você use

if(!strcmp(cad.cidade,"belo horizonte"))

no lugar do seu

if (cad.cidade=="belo horizonte")

bem provável que funcione

Link para o comentário
Compartilhar em outros sites

strcmp é uma função de comparação de strings...

se a primeira string for maior que a segunda, ela retorna um valor maior que zero. Se a segunda for maior, retorna menor que zero.

Quando as 2 são iguais, retorna zero

o ! antes da strcmp faz o zero ser verdadeiro (o que você precisa na verdade é ver se elas são iguais, certo?)

entendeu??

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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