• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

fabmelboy

Professora não sabe

10 mensagens neste tópico

#include<iostream>
using namespace std;
class gato{
private:
	char*nome;
	//char raca[40];
public:
	float peso;
	int idade;
	void setnome(char*n){nome=n;}
	//void setraca(char c){raca=c;}
	char*getnome() { return nome;}
	//getraca() { return raca;}
	void mostra();
} g1,g2;

main() {
//strcpy (g1.nome,"oscar");
g1.setnome("tareco");
/*	g1.raca,"refeiro";
	g2.nome,"Tareco";
	g2.raca,"persa";
	cout<<"Insira o peso do animal oscar\n";
	cin>>g1.peso;
	cout<<"insira a idade do animal oscar\n";
	cin>>g1.idade;
	cout<<"Insira o peso do animal tareco\n";
	cin>>g2.peso;
	cout<<"insira a idade do animal tareco\n";
	cin>>g2.idade;*/
	g1.mostra();
}
void gato::mostra(){
		cout<<"O nome do cao é "<<g1.nome;
			//<<" a raca "<<g1.raca<<" o peso "<<g1.peso<<" a idade: "<<g1.idade<<"\n";
		//cout<<"O nome do cao é "<<g2.nome<<" a raca "<<g2.raca<<" o peso "<<g2.peso<<" a idade: "<<g2.idade<<"\n";
}

a profe deu este enunciado:

cria um novo programa em c++

criar classe com os os seguintes campos

privados:

nome

raça

publicos:

peso,idade

cria dois objectos da classe gato g1,g2

dentro da classe gato cria duas funçoes que permitam aceder ao campo nome fora da classe

uma do tipo set e outra do tipo get

dentro de uma classe gato

dentro da classe gato cria duas funçoes que permitam aceder ao campo raça fora da classe

uma do tipo set e outra do tipo get

preencha os seguintes campos

g1 nome oscar raça rafeiro

g2 nome tareco raça persa

o programa deve pedir ao user para pedir o peso e a idade de cada um dos animais

criar uma funçao membro fora da classe gato com o nome mostra .

esta funçao deve imprimir todos os campos da classe gato

utiliza a funçao mostra para imprimir os dados do objecto g1 e g2

___________________________________________________________________

nos fizemos o que soubemos

a profe quando chegou pos tudo a comentario e pouco mais ajudou..

podiam ajudar?

abraço

Fábio Rosa

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Deves ter faltado a algumas aulas importantes. Ou então estavas distraído.

char raca[40]; -> compara com a maneira como declaraste o nome.

void setraca(char c){raca=c;} -> compara o tipo do parâmetro com o do setnome.

Falta ali qualquer coisa no cabeçalho do método getraca... compara com o getnome e descobre o que é :D

strcpy (g1.nome,"oscar"); -> não podes aceder a campos privados de uma classe. Dica: tens métodos setnome e e setraca, utiliza-os! O mesmo se aplica ao seguinte:

g1.raca,"refeiro";

g2.nome,"Tareco";

g2.raca,"persa";

cin>>g1.peso;

cin>>g1.idade;

cin>>g2.peso;

cin>>g2.idade;

e também aos comentários no método mostra.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ninguem gosta de trabalhar para os outros mas é Natal...

#include <iostream.h>
#include <stdlib.h>

class gato
{
private:
char nome[40];
char raca[40];
public:
float peso;
int idade;

//Funções para atribuir
void setnome(char *novo_nome)
      {
      strcpy(nome,novo_nome);
      }
void setraca(char *nova_raca)
      {
      strcpy(raca,nova_raca);
      }
//Funções para ler
char *getnome()
      {
      return nome;
      }
char *getraca()
      {
      return raca;
      }
};

void mostra (gato o1, gato o2)
{
//Output do objecto o1
cout << "O animal " << o1.getnome() << " da raca " << o1.getraca() << '\n';
cout << "pesa " << o1.peso << " kg\n";
cout << "tem " << o1.idade << " anos\n\n";
//Output do objecto o2
cout << "O animal " << o2.getnome() << " da raca " << o2.getraca() << '\n';
cout << "pesa " << o2.peso << " kg\n";
cout << "tem " << o2.idade << " anos\n\n";
}


void main()
{
//criação dos objectos g1 e g2 apartir da classe gato
gato g1,g2;

//objecto g1, nome="oscar" e raca="rafeiro"
g1.setnome("oscar");
g1.setraca("rafeiro");
//objecto g2, nome="tareco" e raca="persa"
g2.setnome("tareco");
g2.setraca("persa");

//Pedido de input da idade e do peso

//objecto g1
//peso
cout << "Insira o peso do animal " << g1.getnome() << ": ";
cin >> g1.peso;
//idade
cout << "Insira a idade do animal " << g1.getnome() << ": ";
cin >> g1.idade;

//objecto g2
//peso
cout << "Insira o peso do animal " << g2.getnome() << ": ";
cin >> g2.peso;
//idade
cout << "Insira a idade do animal " << g2.getnome() << ": ";
cin >> g2.idade;

//Vamos chamar a função mostra para onde iremos enviar os objecto g1 e g2
mostra(g1,g2);

//um comando de sistema para o programa não sair rapidamente depois do output
system("pause");

}

So o fiz porque não tenho nada mesmo pra fazer :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Kriptosgeek podes dar uma breve explicação da razão para declarares as funções de leitura getnome() e getraca() como pointers?

Obrigado desde já.

Cumps,

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o que ele declarou é que o valor de retorno da função é um char * (que vai ser nome ou raça dependendo da função). Se o valor de retorno fosse por exemplo um inteiro seria int get..(), se fosse boleano seria bool get...() e por ai fora

cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não era bem isso mas já percebi o porquê.

Eu percebo a diferença entre tipos de dados, etc. Mas a minha dúvida residia no facto de ele utilizar char *get... e não char get... mas da segunda forma não retornaria os vector de caracteres e apenas um caracter (se estiver errado corrijam-me).

Anyway, obrigado.

Cumps,

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Com char *get.. o tipo de retorno é um apontador para um caracter. Neste caso esse caracter é o 1º de vários, mas o que importa é que retorna o endereço de um caracter.

Se fosse char get.., o valor retornado seria o valor do próprio caracter, e não seria possível aceder ao resto do array.

Por isso acho que tens a ideia correcta :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora