Advertisement
informaticage

SOL Ex 1

Feb 11th, 2021 (edited)
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.79 KB | None | 0 0
  1. class Punto2D:
  2.   x = 0
  3.   y = 0
  4.  
  5. class RAS:
  6.   xAS = 0
  7.   yAS = 0
  8.   base = 0
  9.   altezza = 0
  10.  
  11.   def xBD(self):
  12.     return self.xAS + self.base
  13.  
  14.   def yBD(self):
  15.     return self.yAS - self.altezza
  16.  
  17.  
  18. def puntoInterno(punto, rettangolo):
  19.   # Se maggiore del punto x più piccolo e minore del punto x più grande
  20.   inX = punto.x > rettangolo.xAS and punto.x < rettangolo.xBD()
  21.  
  22.   # Se maggiore del punto y più piccolo e minore del punto y più grande
  23.   inY = punto.y > rettangolo.yBD() and punto.y < rettangolo.yAS
  24.  
  25.   # Sono dentro se rispetto entrambi
  26.   return inX and inY
  27.  
  28. # rettangoli r1, r2, lista punti aP
  29. def numeroPunti(r1, r2, aP):
  30.   puntiDentro = 0
  31.  
  32.   for punto in aP:
  33.     # Se sono dentro ALMENO uno dei 2 rettangoli
  34.     if(puntoInterno(punto, r1) or puntoInterno(punto, r2)):
  35.       puntiDentro = puntiDentro + 1
  36.  
  37.   return puntiDentro
  38.  
  39. def main():
  40.   rettangolo_1 = RAS()
  41.   rettangolo_2 = RAS()
  42.  
  43.   rettangolo_1.xAS = int(input("X alto sinistra (R1): "))
  44.   rettangolo_1.yAS = int(input("Y alto sinistra (R1): "))
  45.   rettangolo_1.base = int(input("Base (R1): "))
  46.   rettangolo_1.altezza = int(input("Altezza (R1): "))
  47.  
  48.   rettangolo_2.xAS = int(input("X alto sinistra (R2): "))
  49.   rettangolo_2.yAS = int(input("Y alto sinistra (R2): "))
  50.   rettangolo_2.base = int(input("Base (R1): "))
  51.   rettangolo_2.altezza = int(input("Altezza (R1): "))
  52.  
  53.   numero_punti = int(input("Numero punti: "))
  54.   lista_punti = []
  55.  
  56.   for i in range(numero_punti):
  57.     punto_temp = Punto2D()
  58.     punto_temp.x = int(input("x: "))
  59.     punto_temp.y = int(input("y: "))
  60.  
  61.     lista_punti.append(punto_temp)
  62.  
  63.   numero_punti_interni = numeroPunti(rettangolo_1, rettangolo_2,lista_punti)
  64.   print("Ci sono %d punti interni ad uno dei 2 rettangoli" % numero_punti_interni)
  65.  
  66. if __name__ == "__main__":
  67.   main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement