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:
Programski kod za merenje.py
#merenje.py
# The MIT License (MIT)
# Copyright (c) 2025 Aleksandar Maričić
#
# Ovim se omogućava bilo kome da koristi, kopira, menja, spaja, objavljuje,
# distribuira, daje podlicencu i/ili prodaje kopije ovog softverskog programa,
# uz uslov da u svim kopijama ili značajnim delovima softverskog programa bude
# uključena sledeća obavest:
#
# Copyright (c) 2025 Aleksandar Maričić
#
# Ovaj softverski program je pružen "takav kakav jeste", bez bilo kakvih garancija,
# izričitih ili impliciranih, uključujući, ali ne ograničavajući se na, garancije o
# prikladnosti za prodaju ili pogodnosti za određenu svrhu. U svakom slučaju, autori
# ili nosioci prava nisu odgovorni za bilo kakvu štetu ili druge obaveze koje mogu nastati
# usled upotrebe ovog softverskog programa.
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.
