Ovaj Python program, na osnovu instrukcija koje su date u obliku smerova (levo “<“, desno “>”, gore “^”, dole “v”) i dužine zida (npr. ^5.33, <2.95, v1.79, >0.45, v0.41, <0.61, ^0.45, <1.5, v3.5, >4.61), prvo interpretira smer u kojem se prostire svaki zid, a zatim dužinu tog zida, i na kraju izračuna površinu plafona ili prostorije na osnovu tih podataka.
Šta treba program sve da uradi:
- Parsirati komande u obliku (
smer, dužina
). - Konstruisati putanju zidova.
- Izračunati površinu prostorije koristeći algoritam za računanje površine poligona (npr. Shoelace formula).
Evo kako može izgledati Python program koji će primati interaktivne komande i izračunavati površinu prostorije na osnovu tih komandi. Program koristi Shoelace metodu za izračunavanje površine poligona (koji predstavlja prostoriju). Krenućemo sa unosom komandi koje definišu zidove prostorije:
def calculate_area(coordinates): # Shoelace formula (Gauss's area formula) n = len(coordinates) area = 0 for i in range(n): j = (i + 1) % n area += coordinates[i][0] * coordinates[j][1] area -= coordinates[j][0] * coordinates[i][1] area = abs(area) / 2.0 return area def parse_instructions(instructions): # Početna tačka je (0, 0) x, y = 0, 0 coordinates = [(x, y)] # Parsiranje instrukcija i praćenje koordinata for instruction in instructions: direction, length = instruction[0], float(instruction[1:]) if direction == '^': # Gore y += length elif direction == 'v': # Dole y -= length elif direction == '<': # Levo x -= length elif direction == '>': # Desno x += length coordinates.append((x, y)) return coordinates def main(): print("Unesi komande u obliku: <, >, ^, v + dužina zida (npr. ^5.33).") print("Unesi 'kraj' za završetak.") instructions = [] while True: command = input("Unesi komandu: ") if command.lower() == 'kraj': break instructions.append(command) coordinates = parse_instructions(instructions) area = calculate_area(coordinates) print(f"Površina prostorije (plafona) je: {area:.2f} kvadratnih jedinica.") if __name__ == "__main__": main()
Kako funkcioniše:
parse_instructions
: Ova funkcija parsira komande u formatu (smer, dužina
), započinje u (0, 0) i prati koordinate dok ne prođe kroz sve zidove.calculate_area
: Koristi Shoelace formulu da izračuna površinu zatvorene oblasti.- Interaktivni unos: Korisnik unosi komande u obliku (
smer, dužina
) dok ne unese “kraj”.
Primer:
Ako korisnik unese:
iMac-od-user:Desktop user$ python3 povrsina.py Unesi komande u obliku: <, >, ^, v + dužina zida (npr. ^5.33). Unesi 'kraj' za završetak. Unesi komandu: ^5.53 Unesi komandu: <2.95 Unesi komandu: v1.86 Unesi komandu: >0.5 Unesi komandu: v0.41 Unesi komandu: <0.66 Unesi komandu: ^0.25 Unesi komandu: <1.5 Unesi komandu: v3.5 Unesi komandu: >4.61 Unesi komandu: kraj Površina prostorije (plafona) je: 21.85 kvadratnih jedinica. iMac-od-user:Desktop user$
Program će pratiti putanju zidova, izračunati površinu i ispisati rezultat.