Предмет: Информатика, автор: romaantonov200p7qsd7

ПОМОГИТЕ ХОТЬ С ОДНИМ ЗАДАНИЕ ДАЮ 69 БАЛЛОВ
1)Даны координаты вершин двух треугольников. Используя подпрограммы определить, какой из них имеет большую площадь.(Подпрограмма, считающая площадь по координатам, и подпрограмма, считающая какое число больше)

2)Используя функцию max2(a,b), которая определяет максимальное из двух данных чисел, записать функцию max3(a,b,c), определяющую максимальное из трех чисел, и организовать вызов этой функции для вычисления суммы наибольших значений из трех троек произвольных действительных чисел.
ВСЕ ЗАДАНИЕ ВиПОЛНЯЮТЬСЯ В PYTHON!!!!!!!!!!!!!!!!!

Ответы

Автор ответа: KnowsUser1
0

Ответ:

Python 3.7

Не указано, что понимать под подпрограммами, по этому первая задача реализована с использованием классов и ООП

#1

import math

class Vector(object):

   def __init__(self, starts:dict, ends:dict):

       self.startpoint = starts

       self.endpoint = ends

   def length(self):

       coords = self.coords

       return math.sqrt(sum([coord**2 for coord in coords.values()]))

   @property

   def coords(self):

       xcoord = self.endpoint['x'] - self.startpoint['x']

       ycoord = self.endpoint['y'] - self.startpoint['y']

       try:

           zcoord = self.endpoint['z']- self.startpoint['z']

       except:

           return {'x': xcoord, 'y' : ycoord}

       else:

           return {'x' : xcoord, 'y' : ycoord, 'z' : zcoord}

def GeronTriangleArea(lena, lenb, lenc):

   halfperimeter = (lena + lenb + lenc)/2

   return math.sqrt((halfperimeter * (halfperimeter - lena) * (halfperimeter - lenb) *(halfperimeter-lenc)))

def main():

   print('Введите данные для первого треугольника')

   firstpoint = (float(input('Первая точка. Х - координата: ')), float(input('First point: Y - coordinates: ')))

   secondpoint = (float(input('Second point. X - coordinates: ')), float(input('Second point. Y - coordinates: ')))

   thirdpoint = (float(input('Third point: X - coordinates: ')), float(input('Third point. Y - coordinates: ')))

   AB = Vector({'x' : firstpoint[0], 'y': firstpoint[1]}, {'x': secondpoint[0], 'y': secondpoint[1]})

   BC = Vector({'x' : secondpoint[0], 'y': secondpoint[1]}, {'x' : thirdpoint[0], 'y': thirdpoint[1]})

   AC = Vector({'x' : thirdpoint[0], 'y': thirdpoint[1]}, {'x' : firstpoint[0], 'y': firstpoint[1]})

   first_area = GeronTriangleArea(AB.length(), BC.length(), AC.length())

   print('Введите данные для второго треугольника')

   firstpoint = (float(input('Первая точка. Х - координата: ')), float(input('First point: Y - coordinates: ')))

   secondpoint = (float(input('Second point. X - coordinates: ')), float(input('Second point. Y - coordinates: ')))

   thirdpoint = (float(input('Third point: X - coordinates: ')), float(input('Third point. Y - coordinates: ')))

   AB = Vector({'x' : firstpoint[0], 'y': firstpoint[1]}, {'x': secondpoint[0], 'y': secondpoint[1]})

   BC = Vector({'x' : secondpoint[0], 'y': secondpoint[1]}, {'x' : thirdpoint[0], 'y': thirdpoint[1]})

   AC = Vector({'x' : thirdpoint[0], 'y': thirdpoint[1]}, {'x' : firstpoint[0], 'y': firstpoint[1]})

   second_area = GeronTriangleArea(AB.length(), BC.length(), AC.length())

   print('Площадь первого треугольника больше' if (first_area > second_area) else 'Площадь второго треугольника больше')

if __name__ == '__main__':

   main()

#3 //Бесполезнее и глупее задания я не встречал.

def max2(a,b):

   return max(a,b)

def max3(a, b, c):

   return max(max2(a, b), c)

nums = [int(input()) for i in range(3)]

print(max3(*nums))

Объяснение:


romaantonov200p7qsd7: А ты уверен, что задачу которую ты решил про треугольник - подходит для питона 3.7 (просто слишком много всего написано)
KnowsUser1: Я сам писал это на Python 3.7.0. Много писанины потому, что мне было лень делать какую нибудь красивую функцию считывания координат вершин.
romaantonov200p7qsd7: смотри, я ввела в питон решение как и первой так и второй,
первую задачу оно не запускает. пишет ошибка, а вторая ничего не выводит,что делать подскажи пожалуйста
KnowsUser1: "Пишет ошибка". Хорошо, не отрицаю, что знания опять что то сломали. Лично я этот код тестировал и у меня прекрасно всё работало. Можете ли вы написать, какую ошибку выдаёт первое решение?
KnowsUser1: А вторая задача ждёт от вас какого либо ввода. Она же числа для сравнения не самостоятельно придумывает
romaantonov200p7qsd7: запускаю первую появляется окно и там invalid characterin identifier
KnowsUser1: попробуйте вручную расставить все отступы, сайт очень любит менять подряд идущие пробелы на какой то свой дурацкий символ, который не переваривает питоний интерпретатор
romaantonov200p7qsd7: сейчас попробую, если не получиться скажу. да и спасибо большое за помочь, вторая задача получилось- еще раз спасибо)
Похожие вопросы
Предмет: Английский язык, автор: aip37