М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Nastya90Lapka
Nastya90Lapka
20.05.2023 23:40 •  Информатика

Даны длины а,в,с сторон некоторого треугольника. найти медианы треугольника, сторонами которого являются медианы исходного треугольника. pascal abc нужно написать программу, используя процедуру(ы) и функцию(ы). , ! : )

👇
Ответ:
sane08one
sane08one
20.05.2023
Type
  num=double; { в этом месте можно сменить тип на иной }

function Legal(a,b,c:num):boolean;
  { возвращает True, если из отрезков длиной a,b,c
    можно построить треугольник }
begin
  Legal:=(a+b>c) and (a+c>b) and (b+c>a)
end;

function Med(a,b,c:num):num;
  { возвращает длину медианы, проведенную к стороне а }
begin
  Med:=sqrt(2*(sqr(b)+sqr(c))-sqr(a))/2
end;

procedure Med3(a,b,c:num; var m1,m2,m3:num);
  { возвращает длины m1,m2,m3 всех медиан треугольника,
    построенного из отрезков длиной a,b,c.
    При этом m1- длина медианы, проведенной к стороне а,
    m2- дилна медианы,проведенной к стороне b и т.д.
    Если треугольник построить нельзя, m1=m2=m3=0 }
begin
  if Legal(a,b,c) then
  begin m1:=Med(a,b,c); m2:=Med(b,a,c); m3:=Med(c,a,b) end
  else begin m1:=0; m2:=0; m3:=0 end
end;

{ основная программа }
var
  a,b,c,m1,m2,m3:num;
begin
  Write('Введите длины сторон треугольника: '); Readln(a,b,c);
  Med3(a,b,c,m1,m2,m3);
  if m1>0 then begin
    Med3(m1,m2,m3,m1,m2,m3);
    if m1>0 then Writeln('Длины медиан: ',m1,', ',m2,', ',m3)
    else Writeln('Из полученных медиан нельзя построить треугольник.')
    end
  else
    Writeln('Невозможно построить треугольник с такими сторонами.')
end.

Тестовое решение:
Введите длины сторон треугольника: 14.3 18.9 8.6
Длины медиан: 10.725, 14.175, 6.45
4,4(52 оценок)
Открыть все ответы
Ответ:
DashaZhelezniak
DashaZhelezniak
20.05.2023
Думаю, логика у нас здесь будет такая: нужно разложить данные три числа на простые сомножители. Получится:
132 = 2 * 2 * 3 * 11
106 = 2 * 53
134 = 2 * 67
Что у них есть общего - то можно откинуть, потому что количество кругов будет при общих сомножителях делиться без остатка. Собрать в ответ нужно следующее:
от первого - 2 * 2 * 3 * 11
от второго - 53 (двойку не берём, потому что она уже взята с первым)
от третьего - 67 (двойку опять не берём)

Получается: 2 * 2 * 3 * 11 * 53 * 67 = 468732 секунды. Это, как я думаю, ответ.

При этом (чисто для сведения), до момента встречи:
первый намотает 3551 круг
второй - 4422 круга
третий - 3498 кругов.
4,5(65 оценок)
Ответ:
chernov5
chernov5
20.05.2023
/*
C++ compiler
gcc (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010
Copyright (C) 2015 Free Software Foundation, Inc.
*/

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    int count = 0;
    cout <<"Введите количество призывников: ";
    cin >>count;
    if (count>17) count=17;
    vector<int> tanks(count);
    for (unsigned i=0; i<tanks.size(); i++) cin >>tanks[i];
    int min=300, max=0;
    for (unsigned i=0; i<tanks.size(); i++)
    {
        if (min>tanks[i]) min=tanks[i];
        if (max<tanks[i]) max=tanks[i];
    }
    int cnt=0;
    for (unsigned i=0; i<tanks.size(); i++)
    {
        if ((tanks[i]!=min) and (tanks[i]!=max)) cnt++;
    }

    cout <<cnt <<endl;
}
4,6(23 оценок)
Новые ответы от MOGZ: Информатика
Полный доступ к MOGZ
Живи умнее Безлимитный доступ к MOGZ Оформи подписку
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ