Glaucco 1 Denunciar post Postado Abril 2, 2009 Hola boa tarde! Presiso de ajuda nesse exercício logo abaixo. Escreva uma classe chamada Pessoa que contenha os atributos privados denominados nome, peso, altura e sexo. Além disso, a) Crie um construtor que inicialize todos os membros de dados com os valores recebidos como argumento. B) Crie os métodos de acesso (getters e setters) para todos os atributos. Os métodos setters (booleanos) devem validar os dados de entrada, retornando verdadeiro somente quando as condições definidas abaixo forem satisfeitas: . o nome deve conter pelo menos dois caracteres; . o peso deve ser positivo e menor que 200; . a altura (em metros) deve ser maior que 0,50 e menor que 2,40; . o sexo deve ser 'M' ou 'F' apenas. c) Escreva um método público para o cálculo do IMC (Índice de Massa Corporal). d) Escreva um método público para o cálculo do peso ideal de acordo com o sexo. e) Implemente uma função principal (main) que construa (declare) um objeto do tipo Pessoa, leia os atributos e escreva na tela o nome, o IMC e o peso ideal da pessoa, informando ainda quantos quilos ela deve perder (ou ganhar) para atingir o seu peso ideal. São dadas as fórmulas: IMC = peso/altura2 peso ideal = 72,7 x altura ? 58 (para homens) peso ideal = 62,1 x altura ? 44,7 (para mulheres) O que eu consegui fazer logo abaixo #include<iostream> //biblioteca using namespace std; class Pessoa { private: string nome; double peso,altura; //variável char sexo; public: Pessoa(){ //cria o construtor objeto } bool setNome(string n){ //recebe o valor do int main nome = n; } string getNome(){ return nome; } bool setPeso (double p) { if (peso >= 0.0 && peso < 200.0) { return false; } peso = p; return true; } double getPeso() { return peso; } bool setaltura (double a) { if (altura >= 0.50 && altura < 240.0) { return false; } altura = a; return true; } double getaltura() { return peso; } bool setsexo (char s) { if (sexo == 'M' || sexo == 'F'){ return false; } sexo = s; return true; } char setsexo(){ return sexo; } void print(){ //mostra o valor na tela cout << "-------------\n"; cout << "Nome e: " << nome << endl; cout << "Peso e: " << peso << endl; cout << "Altura e: " << altura << endl; cout << "Sexo e: " << sexo << endl; } }; int main(){ Pessoa p; // chama o construtor-padrão double peso,altura; string nome; char sexo; cout << "Digite o nome: "; getline(cin,nome); cout << "Digite o peso: "; cin >> peso; cout<< "Digite a altura: "; cin >> altura; cout << "Digite o sexo: "; cin >> sexo; p.setNome(nome); p.setPeso(peso); p.setaltura(altura); p.setsexo(sexo); //envia o valor para void setNome p.print(); //enviar o resultado para void print() } //fim Como faço? o nome deve conter pelo menos dois caracteres; como fazer? minha dúvida é como fazer para o nome. deve conter pelo menos dois caracteres;? como faço Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Abril 3, 2009 juro q naum entendi você ta qrendo fazer tipo uma verificação para ver c realmente o nome vai ter + de 2 caracteres? é iss? []s Compartilhar este post Link para o post Compartilhar em outros sites
Glaucco 1 Denunciar post Postado Abril 3, 2009 Isso quitZAUMM aí tipo o program pede pra digitar o nome aí o usuário digita uma letra exemplo D aí programa da uma mensagem de erro e pede pra ele digita 2 caracteres. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Abril 3, 2009 veja: http://www.arquivodecodigos.net/arquivo/vi...?qual_dica=1169 te ajudar muito ;D []s Compartilhar este post Link para o post Compartilhar em outros sites
Glaucco 1 Denunciar post Postado Abril 3, 2009 Cara não entende nada desse exemplo. Cara tenho muito dificuldade em programar. O jeito é comprar livro. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Abril 3, 2009 oloco mo exemplo de facil compreensão, c você jah chego nesse nivel no seu codigo isso vai ser o de menos.. você vai fazer algo assim: if (nome.length() < 2) ... naum sei onde você esta com dificuldade nisso []s Compartilhar este post Link para o post Compartilhar em outros sites
Glaucco 1 Denunciar post Postado Abril 3, 2009 É asim tem muita dificuldade tipo onde colocar cada comando dentro da estrutura. Entende? Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Abril 3, 2009 você vai colocá-lo na hora q você le o nome, se o nome for menor de 2 caracteres repete.. ow coloca no if, ow em um while Compartilhar este post Link para o post Compartilhar em outros sites
Glaucco 1 Denunciar post Postado Abril 3, 2009 quitZAUMMM livro de c++ ajuda o cara fica bom em programação? Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Abril 3, 2009 qlqr conteúdo "a mais" ajuda glaucco.. você pode tbm optar em ficar lendo artigos na net.. pega um aki, outro ali, ai vai montando tipo sua biblioteca. []s Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Abril 3, 2009 O "Big Deal" pra aprender a programar, é se esforçar MUITO, sempre buscar fazer programas além da sua capacidade, é assim que você aprende as coisas novas... Estudar outras ciências exatas (matemática, física e lógica) que vão te ajudar muito a pegar a forma de pensar. Não desistir! O impossível só demora um pouco mais tempo para ser feito! Se você está começando do zero, esquece C e C++. Essas linguagems são muito chatas na sintaxe e castings. Pegue qualquer coisa mais fácil. Eu iria de Pascal ou Python. Pascal é uma linguagem feita para inciantes. Boa Sorte! Compartilhar este post Link para o post Compartilhar em outros sites
Glaucco 1 Denunciar post Postado Abril 7, 2009 Tipo fis tudo certo agora programa ta rodando agora folta ver pq ele fica mostrando o resultado 6.91789e+268 no peso. Compartilhar este post Link para o post Compartilhar em outros sites
Glaucco 1 Denunciar post Postado Abril 7, 2009 Consegui mostra o resultado o peso ae aleluia. bool setpeso (float p) { if (peso >= 0.0 && peso < 200.0) { return true; } peso = p; { return false; } } float getPeso() { return peso; Compartilhar este post Link para o post Compartilhar em outros sites
Glaucco 1 Denunciar post Postado Abril 7, 2009 Agora não to conseguindo mostra o valor do IMC????? //GET é quando você quer pegar um valor, por exemplo um valor de um TextField. //SET é quando você deseja setar ou enviar algo, algum valor. #include<iostream> //biblioteca #include<conio.h> using namespace std; class Pessoa { private: string nome; float peso; double altura; char sexo; public: double imc; Pessoa(){ //cria o construtor objeto } //recebe o valor do int main bool setNome(string n){ nome=n; } string getNome(){ return nome; } bool setpeso (float p) { if (peso >= 0.0 && peso < 200.0) { return false; } peso = p; return true; } float getPeso(){ return peso; } bool setaltura (double a) { if (altura >= 0.50 && altura < 240.0) { return false; } altura = a; return true; } double getaltura() { return peso; } bool setsexo (char s) { if (sexo == 'M' || sexo == 'F'){ return false; } sexo = s; return true; } char setsexo(){ return sexo; } void print(){ //mostra o valor na tela cout << "-------------\n"; cout << "Nome: " <<nome<< endl; cout << "Peso: " <<peso<< endl; cout << "Altura: "<<altura<< endl; cout << "sexo: " <<sexo<< endl; cout << "IMC: " <<imc<<endl; } }; int main(){ Pessoa p; // chama o construtor-padrão string nome; float peso; double altura; double imc; char sexo; cout << "\nDigite o nome: "; cin>>nome; cout << "\nDigite o peso: "; cin>>peso; cout << "\nDigite a altura: "; cin>>altura; cout << "\nDigite o sexo: "; cin>>sexo; p.setNome(nome); p.setpeso(peso); p.setaltura(altura); p.setsexo(sexo); p.imc=(peso/altura)*2; p.print(); //enviar o resultado para void print() system("PAUSE"); return 0; } //fim Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Abril 7, 2009 antes de usar o print.. coloque um : cout << "IMC: " <<p.imc<<endl;no fim da sua main para ver se ele esta passando algum valor. []s Compartilhar este post Link para o post Compartilhar em outros sites
Glaucco 1 Denunciar post Postado Abril 7, 2009 Cara esse comando que você posto n funciona da erro. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Abril 7, 2009 a) Crie um construtor que inicialize todos os membros de dados com os valoresrecebidos como argumento. Cadê os construtores?Só vi o construtor padrão que nem precisa ser especificado,por sinal. bool setaltura (double a) { if (altura >= 0.50 && altura < 240.0) { return false; } altura = a; return true; } 240.0 metros??? Cara alto,hein... A condição está errada. bool setPeso (double p) { if (peso >= 0.0 && peso < 200.0) { return false; } peso = p; return true; } A condição está errada. double getaltura() { return peso; } Método errado. bool setsexo (char s) { if (sexo == 'M' || sexo == 'F'){ return false; } sexo = s; return true; } char setsexo(){ return sexo; } Condição errada. peso ideal = 72,7 x altura ? 58 (para homens)peso ideal = 62,1 x altura ? 44,7 (para mulheres) O que vem a ser o ?? #include <iostream> #include <cctype> using namespace std; class Pessoa { string nome; float peso,altura; char sexo; public: Pessoa(string NOME, float PESO, float ALTURA, char SEXO) { nome = NOME; peso = PESO; altura = ALTURA; sexo = SEXO; } bool setNome(string NOME){ if (NOME.length() > 1) { nome = NOME; return true; } return false; } string getNome(){ return nome; } bool setPeso (float PESO) { if (PESO < 1 || PESO > 200) return false; peso = PESO; return true; } float getPeso() { return peso; } bool setAltura (float ALTURA) { if (ALTURA < 0.50 || ALTURA > 2.40) return false; altura = ALTURA; return true; } float getAltura() { return altura; } bool setSexo (char SEXO) { if (toupper(SEXO) != 'M' && toupper(SEXO) != 'F') return false; sexo = toupper(SEXO); return true; } char getsexo(){ return sexo; } float calculaIMC() { return peso/(altura*altura); } float calculaPesoIdeal() { if (sexo == 'M') return 62.1*altura; return 72.7*altura; } }; int main(){ Pessoa p("Joao",76.8,1.67,'M'); cout << "Nome:" << p.getNome() << endl; cout << "IMC:" << p.calculaIMC() << endl; float ideal = p.calculaPesoIdeal(); cout << "Peso ideal:" << ideal << endl; cout << "Quilos a perder:" << ((p.getPeso() > ideal)?p.getPeso()-ideal:0) << endl; return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
Glaucco 1 Denunciar post Postado Abril 8, 2009 Agora está quase terminando o exercício. Falta alguém pode me ajudar como vou fazer para o IMC e o peso ideal da pessoa, informando ainda quantos quilos ela deve perder (ou ganhar) para atingir o seu peso ideal. //GET é quando você quer pegar um valor, por exemplo um valor de um TextField. //SET é quando você deseja setar ou enviar algo, algum valor. #include<iostream> //directiva do pré processamento #include<iomanip> //Manipulador de Tamanho de campo na impressao using namespace std;//directiva using class Pessoa { private: string nome; float peso; double altura; char sexo; public: double imc; Pessoa() { //cria o construtor objeto } Pessoa(string no,float pe,double al,char se) { nome=no; peso=pe; altura=al; sexo=se; } bool setNome(string no) { return true; nome=no; } string getNome() { return nome; } bool setpeso (float pe) { if (pe < 0 || pe > 200) { cout<<"\nPeso incorreto. Digite o peso maior que 0 e menor que 200"<<endl<<endl; return false; } peso = pe; return true; } float getPeso() { return peso; } bool setAltura (double al) { if (al < 0.50 || al > 2.40) { cout<<"\nAltura incorreta. Digite a altura maior que 0.50 e menor que 2.40"<<endl<<endl; return false; } altura = al; return true; } double getaltura() { return peso; } bool setSexo (char se) { if (se != 'M' && se != 'F') { cout<<"\nSexo Incorreto. Digite o sexo com a letra M ou F"<<endl<<endl; return false; } sexo = se; return true; } char setsexo() { return sexo; } double setImc() { return peso/(altura*altura); } void print() { //mostra o valor na tela cout << "-------------\n"; cout << "Nome: " <<nome<< endl; cout << "Peso: " <<peso<<"Kg"<< endl; cout << "Altura: "<<altura<<"m"<< endl; cout << "Sexo: " <<sexo<< endl; cout << "IMC: " <<setprecision(3)<<setImc()<<endl;//Setprecision. Define o número de casa decimais a ser impressas para um número em ponto flutuante. } }; int main() { Pessoa p; // chama o construtor-padrão string nome; float peso; double altura; double imc; char sexo; do { cout << "Digite o nome: "; getline(cin,nome); } while (!p.setNome(nome)); do { cout << "Digite o peso: "; cin>>peso; } while (!p.setpeso(peso)); do { cout << "Digite a altura: "; cin>>altura; } while (!p.setAltura(altura)); do { cout << "Digite o sexo: "; cin>>sexo; } while (!p.setSexo(sexo)); p.print(); //enviar o resultado para void print() system("PAUSE"); return 0; } //fim Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Abril 8, 2009 Está pronto nada. 1- Por que a variável imc é pública? 2- Por que a variável altura é double? Os métodos setters (booleanos) devem validar os dados de entrada, retornando verdadeiro somente quando as condições definidas abaixo forem satisfeitas:. o nome deve conter pelo menos dois caracteres; Olha teu código: bool setNome(string no) { return true; nome=no; } Esse setter não vai fazer nada. void print() { //mostra o valor na tela cout << "-------------\n"; cout << "Nome: " <<nome<< endl; cout << "Peso: " <<peso<<"Kg"<< endl; cout << "Altura: "<<altura<<"m"<< endl; cout << "Sexo: " <<sexo<< endl; cout << "IMC: " <<setprecision(3)<<setImc()<<endl;//Setprecision. Define o número de casa decimais a ser impressas para um número em ponto flutuante. } O exercício não pede que você crie um método print na classe. E também não há necessidade disso. você não criou os getters à toa. using namespace std;//directiva using p.print(); //enviar o resultado para void print() Esse tipo de comentário não acrescenta nada ao código. E o segundo comentário está errado. você não está enviando resultado nenhum para o método. você está passando uma mensagem p/ o objeto p. double getaltura() { return peso; } bool setSexo (char se) { if (se != 'M' && se != 'F') { cout<<"\nSexo Incorreto. Digite o sexo com a letra M ou F"<<endl<<endl; return false; } sexo = se; return true; } char setsexo() { return sexo; } double setImc() { return peso/(altura*altura); } Continua errado. Compartilhar este post Link para o post Compartilhar em outros sites
Glaucco 1 Denunciar post Postado Abril 9, 2009 Agora foi corrigido Como vou fazer para o peso ideal da pessoa, informando ainda quantos quilos ela deve perder (ou ganhar) para atingir o seu peso ideal. #include<iostream> //directiva do pré processamento #include<iomanip> using namespace std;//directiva using class Pessoa { private: string nome; double peso,altura; char sexo; public: Pessoa() { //cria o construtor objeto } Pessoa(string no,double pe,double al,char se) { nome=no; peso=pe; altura=al; sexo=se; } bool setNome(string no) { int tam=no.size(); if (tam<2) return false; nome=no; return true; } string getNome() { return nome; } bool setpeso (double pe) { if (pe < 0 || pe > 200) { cout<<"\nPeso incorreto. Digite o peso maior que 0 e menor que 200"<<endl<<endl; return false; } peso = pe; return true; } double getPeso() { return peso; } bool setAltura (double al) { if (al < 0.50 || al > 2.40) { cout<<"\nAltura incorreta. Digite a altura maior que 0.50 e menor que 2.40"<<endl<<endl; return false; } altura = al; return true; } double getaltura() { return peso; } bool setSexo (char se) { if (se != 'M' && se != 'F') { cout<<"\nSexo Incorreto. Digite o sexo com a letra M ou F"<<endl<<endl; return false; } sexo = se; return true; } char setsexo() { return sexo; } double pesoIdeal() { if (sexo=='M') { return(72.7*altura-58); } return(62.1*altura-44.7); } double pesoCerto() { if (peso>pesoIdeal()) { return (peso-pesoIdeal()); } return (pesoIdeal()-peso); } double setImc() { return peso/(altura*altura); } void print() { //mostra o valor na tela cout << "-------------\n"; cout << "Nome: " <<nome<< endl; cout << "Peso: " <<peso<<"Kg"<< endl; cout << "Altura: "<<altura<<"m"<< endl; cout << "Sexo: " <<sexo<< endl; cout << "IMC: " <<setprecision(3)<<setImc()<<endl; cout <<"Deve perder: "<<pesoCerto()<<endl; } }; int main() { Pessoa p; string nome; double peso,altura; char sexo; do {//Repita cout << "Digite o nome: "; getline(cin,nome); } while (!p.setNome(nome));//Até do {//Repita cout << "Digite o peso: "; cin>>peso; } while (!p.setpeso(peso));//Até do {//Repita cout << "Digite a altura: "; cin>>altura; } while (!p.setAltura(altura));//Até do {//Repita cout << "Digite o sexo: "; cin>>sexo; } while (!p.setSexo(sexo));//Até p.print(); //enviar o resultado para void print() system("PAUSE"); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites