Program za izračunavanje površine prostorije

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:

  1. Parsirati komande u obliku (smer, dužina).
  2. Konstruisati putanju zidova.
  3. 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:

  1. 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.
  2. calculate_area: Koristi Shoelace formulu da izračuna površinu zatvorene oblasti.
  3. 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.

By Abel

Leave a Reply

Your email address will not be published. Required fields are marked *