Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

soraiaduarte

classes e objectos

Mensagens Recomendadas

soraiaduarte    0
soraiaduarte

Boas! Tenho estado a tentar resolver um exercício que o meu professor nos propôs, mas surgiram-me algumas duvidas. O enunciado é o seguinte:

"Implemente a função overlap(r1,r2) que, dadas duas instâncias da classe Rectangle, devolve um novo objeto desta classe, correspondendo ao retângulo que é a interseção de r1 e r2. Caso a interseção seja nula, deverá devolver o objeto especial do Python None. Deve considerar como retângulos os casos degenerados em que a interseção é uma reta ou um ponto. Nota: copie, sem a alterar, a definição da classe do link http: // www.dcc. fc. up. pt/ ~jpp/ ip/ rectangle. py para o ficheiro com o seu programa que vai submeter. (Sugestão: utilize o máximo das coordenadas dos lados inferiores e esquerdos de r1 e r2, e o mínimo das respetivas coordenadas dos lados superiores e direitos. Pode utilizar as funções max e min predefinidas em Python.)"

Pelo que podem ver a função overlap(r1,r2) que estive a tentar escrever ia ter um montão de condições. Gostava apenas que dissessem como posso fazer esta função a partir da sugestão do meu prof., isto é, como é que o método max e min me pode, neste contexto, ajudar a simplificar a resolução?

class Rectangle:
def __init__(self,a,b,c,d):
	"""rectangle parallel to x-axis, with opposite corners (a,b) and (c,d)"""
	if a > c:
		(a,c) = (c,a)
	if b > d:
		(b,d) = (d,b)
	self.a = a
	self.b = b
	self.c = c
	self.d = d

def __str__(self):
	return "bottom left: (%s,%s), " % (self.a, self.b) + "top right: (%s,%s)" % (self.c, self.d)

def bottom_left(self):
	return (a,b)

def top_right(self):
	return (c,d)

def bottom_right(self):
	return (c,b)

def top_left(self):
	return (a,d)

def overlap(r1,r2):
	if r1.a==r2.a and r1.b==r2.b and r1.c==r2.c and r1.d==r2.d:
		return r1
	if r1.a <= r2.a <= r1.d and r2.b <= r1.b <= r2.c:
		r=(r1.a,r2.b,r         #etc, etc...
		return r
	else: return None    

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


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade