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