Професионална програма
Loading...
+ Нов въпрос
Stanislava_Vasileva avatar Stanislava_Vasileva 0 Точки

Решение на задача: "Учебна зала"

Условие на задачата: Учебна зала има правоъгълен размер l на w метра, без колони във вътрешността си. Залата е разделена на две части – лява и дясна, с коридор - приблизително по средата. В лявата и в дясната част има редици с бюра. В задната част на залата има голяма входна врата. В предната част на залата има катедра с подиум за преподавателя. Едно работно място заема 70 на 120 cm (маса с размер 70 на 40 cm + място за стол и преминаване с размер 70 на 80 cm). Коридорът е широк поне 100 cm. Изчислено е, че заради входната врата (която е с отвор 160 cm) се губи точно 1 работно място, а заради катедрата (която е с размер 160 на 120 cm) се губят точно 2 работни места. Напишете програма, която въвежда размери на учебната зала и изчислява броя работни места в нея при описаното разположение (вж. фигурата).

 

Здравейте,

Има ли алтернативен начин за решаване на задачата, освен показания начин с редовете и бюрата? Мисля, че логиката на предложеното от мен по-долу решение е вярна, но резултатът е (138) с 9 работни места повече от решението (129). Разбирам, че тънкит момент е в определянето на типа данни като цели числа ( integer)  и целочислено деление, но къде точно бъркам? 

 

l_m = float(input("Enter the length of the room in meters: "))
w_m = float(input("Enter the width of the room in meters: "))

w_cm = w_m * 100
l_cm = l_m * 100
print(f"Conversion of the width of the room in centimeters, 'w_cm': {w_cm} cm")
print(f"Conversion of the length of the room in centimeters, l_cm: {l_cm} cm")

area_room_cm = (l_cm * w_cm)

print(f"The area of the room is: {int(area_room_cm)} cm")
desk_cm = 70 * 40
print(f"desk_cm = {desk_cm}")

place_cm = 70 * 80
print(f"place_cm = {place_cm}")

work_place_cm = desk_cm + place_cm
print (f"work_place_cm = {work_place_cm}")

effective_area_room = area_room_cm - (100*1500) - 3*(work_place_cm)
print (f"effective area of the room_cm = {int(effective_area_room)}")
number_workplaces = effective_area_room // work_place_cm
print (f"number of workplaces = {int(number_workplaces)}")

 

Тагове:
0
Python 14/12/2020 22:42:52
MartinBG avatar MartinBG 3863 Точки
Best Answer

Този ред изглежда съмнителен (какво точно представлява числото 1500?):

effective_area_room = area_room_cm - (100*1500) - 3*(work_place_cm)

 

1
Stanislava_Vasileva avatar Stanislava_Vasileva 0 Точки

(100*1500) :  Това е изчислената площ на коридора в сm (или : 1 m * 1.5m), която също не се включва в полезната площ т.е. там няма работи места. 

 

0
15/12/2020 09:41:56
MartinBG avatar MartinBG 3863 Точки

@Stanislava_Vasileva

В такъв случай, трябва да умножите 1000 по дължината на стаята в cm а не по 100 (което е 1м):

effective_area_room = area_room_cm - l_cm * 1000 - 3*(work_place_cm)
0
15/12/2020 21:45:18
boykostoyanoff avatar boykostoyanoff 15 Точки

Тънкият момент е че не ни интересува площ нито на залата нито на пътеката

Интересува ни само колко места стават по дължина (в цяло число закръглено към по малкото)

и колко места стават в ширина(в цяло число закръглено към по малкото), като точно тук преди да пресмяташ трябва да извадиш 1м от ширината на залата заради пътеката.

след което умножаваш двете стойности и вадиш 3 те места който се губят

в един ред решението

1,2 е дължината на едно място

0,7 е ширината му

а вадим едно от ширината заради пътеката

seats = (length // 1.2) * ((width - 1) // 0.7) - 3

 

1