Criar uma classe que só armazena as coordenadas cartesianas dos quatro cantos do retângulo.As coordenadas tem que ser maior que zero e menor que vinte.
Verificar se as coordenadas realmente definem um retângulo e as funções membros devem calcular comprimento,largura, perímetro e área.
Consegui resvolver o problema,mas não gostei porque não conseguir usar vetores para armazenar as coordenadas,pois não estava conseguindo passar como parâmetro para as funções.
Como eu faria para passar um vetor C[4][4] para as funções.Por exemplo,como ficaria a definição do construtor se eu usar C[4][4] em vez de criar 8 variáveis.
#ifndef RETANGULO_H
#define RETANGULO_H
class Retangulo{
private:
//Coordenadas
double x1,x2,x3,x4;
double y1,y2,y3,y4;
public:
Retangulo(double=0, double=0, double=0, double=0,
double=0, double=0, double=0, double=0);//Construtor
void instCoord(double,double,double,double,
double,double,double,double); //Função para inicializar as coordenada
bool vRetangulo();//Verifica se o objeto é realmente um retangulo
double Area();//Calcula a area
double Comprimento();//Calcula o comprimento
double Largura();//Calcula a largura
double Perimetro();//Calcula o perimetro
bool Quadrado();//Verifica se o retangulo é um quadrado
void Imprime(char);//Imprime o retangulo no formato especificado
};
#endif
//Construtor do retangulo
Retangulo::Retangulo(double cx1,double cy1,double cx2,double cy2,
double cx3,double cy3,double cx4,double cy4){
instCoord(cx1,cy1,cx2,cy2,cx3,cy3,cx4,cy4);
}
//Função que verifica se as coordenadas são corretas(x,y>0 e x,y<20)
//Senão inicializa com zero
void Retangulo::instCoord(double cx1,double cy1,double cx2,double cy2,
double cx3,double cy3,double cx4,double cy4){
//Coordenada 1
if(cx1>=0 && cy1>=0){
if(cx1<=20 && cy1<=20){
x1=cx1;
y1=cy1;
}
}
else{
cout<<"Coordenada:("<<cx1<<","<<cy1<<")"<<" invalida,iniciaizando com zero\n";
x1=0;
y1=0;
}
//Coordenada 2
if(cx2>=0 && cy2>=0){
if(cx2<=20 && cy2<=20){
x2=cx2;
y2=cy2;
}
}
else{
cout<<"Coordenada:("<<cx2<<","<<cy2<<")"<<" invalida,iniciaizando com zero\n";
x2=0;
y2=0;
}
//Coordenada 3
if(cx3>=0 && cy3>=0){
if(cx3<=20 && cy3<=20){
x3=cx3;
y3=cy3;
}
}
else{
cout<<"Coordenada:("<<cx3<<","<<cy3<<")"<<" invalida,iniciaizando com zero\n";
x3=0;
y3=0;
}
//Coordenada 4
if(cx4>=0 && cy4>=0){
if(cx4<=20 && cy4<=20){
x4=cx4;
y4=cy4;
}
}
else{
cout<<"Coordenada:("<<cx4<<","<<cy4<<")"<<" invalida,iniciaizando com zero\n";
x4=0;
y4=0;
}
}
Pergunta
thiberi0
Problema do livro do Deitel,C++ Como programar:
Criar uma classe que só armazena as coordenadas cartesianas dos quatro cantos do retângulo.As coordenadas tem que ser maior que zero e menor que vinte.
Verificar se as coordenadas realmente definem um retângulo e as funções membros devem calcular comprimento,largura, perímetro e área.
Consegui resvolver o problema,mas não gostei porque não conseguir usar vetores para armazenar as coordenadas,pois não estava conseguindo passar como parâmetro para as funções.
Como eu faria para passar um vetor C[4][4] para as funções.Por exemplo,como ficaria a definição do construtor se eu usar C[4][4] em vez de criar 8 variáveis.
#ifndef RETANGULO_H #define RETANGULO_H class Retangulo{ private: //Coordenadas double x1,x2,x3,x4; double y1,y2,y3,y4; public: Retangulo(double=0, double=0, double=0, double=0, double=0, double=0, double=0, double=0);//Construtor void instCoord(double,double,double,double, double,double,double,double); //Função para inicializar as coordenada bool vRetangulo();//Verifica se o objeto é realmente um retangulo double Area();//Calcula a area double Comprimento();//Calcula o comprimento double Largura();//Calcula a largura double Perimetro();//Calcula o perimetro bool Quadrado();//Verifica se o retangulo é um quadrado void Imprime(char);//Imprime o retangulo no formato especificado }; #endif //Construtor do retangulo Retangulo::Retangulo(double cx1,double cy1,double cx2,double cy2, double cx3,double cy3,double cx4,double cy4){ instCoord(cx1,cy1,cx2,cy2,cx3,cy3,cx4,cy4); } //Função que verifica se as coordenadas são corretas(x,y>0 e x,y<20) //Senão inicializa com zero void Retangulo::instCoord(double cx1,double cy1,double cx2,double cy2, double cx3,double cy3,double cx4,double cy4){ //Coordenada 1 if(cx1>=0 && cy1>=0){ if(cx1<=20 && cy1<=20){ x1=cx1; y1=cy1; } } else{ cout<<"Coordenada:("<<cx1<<","<<cy1<<")"<<" invalida,iniciaizando com zero\n"; x1=0; y1=0; } //Coordenada 2 if(cx2>=0 && cy2>=0){ if(cx2<=20 && cy2<=20){ x2=cx2; y2=cy2; } } else{ cout<<"Coordenada:("<<cx2<<","<<cy2<<")"<<" invalida,iniciaizando com zero\n"; x2=0; y2=0; } //Coordenada 3 if(cx3>=0 && cy3>=0){ if(cx3<=20 && cy3<=20){ x3=cx3; y3=cy3; } } else{ cout<<"Coordenada:("<<cx3<<","<<cy3<<")"<<" invalida,iniciaizando com zero\n"; x3=0; y3=0; } //Coordenada 4 if(cx4>=0 && cy4>=0){ if(cx4<=20 && cy4<=20){ x4=cx4; y4=cy4; } } else{ cout<<"Coordenada:("<<cx4<<","<<cy4<<")"<<" invalida,iniciaizando com zero\n"; x4=0; y4=0; } }Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
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.