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

Для того чтобы компы поддерживали актуальное время, они могут обращаться к серверам точного времени sntp. к сожалению комп не может просто получить время у сервера,потому что информация по сети передается не мгновенно; пока сообщение с текущим временем дойдет до компа,оно потеряет свою актуальность . протокол взаймодействия клиента выглядит 1)клиент отправляет запрос на сервер и запоминает вреия отправления a. 2)сервер получает запрос в момент времени b и отправляет клиенту сообщение содержащее время b 3)клиент получает ответ на свой запрос в момент вреиени c и запоминает его. теперь клиент, из предположения,что сетевые задержки при передаче сообщений от клиента серверу и от сервера клиенту одинаковы может определить и установить себе точное время используя известные значения a,b,c. ваи предстоит реализовать алогритм с точностью до скенунды определяющий точное время для установки на клиенте по известным a,b и c. при необходимости округлите резултат до целого числа секунд по правилам арифметики. возможно что пока клиент ожидал ответа по клиентскому времени успели наступить новые сутки однако известно,что между отправкой клиентом запроса и получением ответа от сервера менее 24 часов. прграииа получает на вход три времменные метки a,b,c по одной в каждой строке.все временные метки представлены в формате hh: mm: ss, где hh-это часы, mm-это минуты, ss-cеукнды.часы,минуты и секунды записываются ровно двуия цифрами каждоею программа должна вывести одну врмменную метку в формате,описаннои во входных данных-выичсленное точное время для установки на клиенте. в выводе не должно быть пробелов,пустых строк в начале вывода.

👇
Ответ:
nz010
nz010
30.12.2022
Если на прохождение запроса нужно время t секунд. то с момента отправки запроса клиентом до получения ответа сервера пройдёт время 2t. Зная, что запрос был отправлен в момент времени A и получен ответ в момент времени C, можно вычислить t. Учитывая, что t секунд назад было время B, то сейчас время B + t.

def timestamp_to_time(timestamp):
    seconds = 0
    for token in timestamp.split(":"):
        seconds = seconds * 60 + int(token)
    return seconds
 
def time_to_timestamp(time):
    seconds = time % 60
    time //= 60
    minutes = time % 60 
    time //= 60
    hours = time % 24
    return "{:02d}:{:02d}:{:02d}".format(hours, minutes, seconds)
 
A = timestamp_to_time(input())
B = timestamp_to_time(input())
C = timestamp_to_time(input())
 
if C < A:
    C += timestamp_to_time("24:00:00")
 
t = (C - A + 1) // 2
current_time = B + t
print(time_to_timestamp(current_time))
 
 
Пример ввода:
23:59:59
01:00:51
00:00:20
 
Пример вывода:
01:01:02
4,6(60 оценок)
Открыть все ответы
Ответ:
dylanboy
dylanboy
30.12.2022
// PascalABC.NET 3.3, сборка 1579 от 18.11.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var d:(real,real,real,real)->real:=
      (x1,y1,x2,y2)->Sqrt(Sqr(x2-x1)+Sqr(y2-y1));
  var (x1,y1):=ReadReal2('Введите координаты 1-й точки:');
  var (x2,y2):=ReadReal2('Введите координаты 2-й точки:');
  var (x3,y3):=ReadReal2('Введите координаты 3-й точки:');
  var a:=d(x1,y1,x2,y2);
  var b:=d(x2,y2,x3,y3);
  var c:=d(x1,y1,x3,y3);
  if (a+b>c) and (a+c>b) and (b+c>a) then begin
    var p:=(a+b+c)/2;
    var s:=Sqrt(p*(p-a)*(p-b)*(p-c));
    Writeln('S = ',s)
    end
  else
    Writeln('Невозможно построить треугольник')
end.

Пример
Введите координаты 1-й точки: -2.5 1.6
Введите координаты 2-й точки: 5.2 4
Введите координаты 3-й точки: 1 -1
S = 14.21

Pascal ABC, Free Pascal

var
  x1,y1,x2,y2,x3,y3,a,b,c,p,s:real;

function d(x1,y1,x2,y2:real):real;
begin
  d:=Sqrt(Sqr(x2-x1)+Sqr(y2-y1))
end;

begin
  Write('Введите координаты 1-й точки:'); Read(x1,y1);
  Write('Введите координаты 2-й точки:'); Read(x2,y2);
  Write('Введите координаты 3-й точки:'); Read(x3,y3);
  a:=d(x1,y1,x2,y2);
  b:=d(x2,y2,x3,y3);
  c:=d(x1,y1,x3,y3);
  if (a+b>c) and (a+c>b) and (b+c>a) then begin
    p:=(a+b+c)/2;
    s:=Sqrt(p*(p-a)*(p-b)*(p-c));
    Writeln('S = ',s)
    end
  else
    Writeln('Невозможно построить треугольник')
end.

С процедурой:

var
  x1,y1,x2,y2,x3,y3,a,b,c,p,s:real;

procedure d(x1,y1,x2,y2:real; var r:real);
begin
  r:=Sqrt(Sqr(x2-x1)+Sqr(y2-y1))
end;

begin
  Write('Введите координаты 1-й точки:'); Read(x1,y1);
  Write('Введите координаты 2-й точки:'); Read(x2,y2);
  Write('Введите координаты 3-й точки:'); Read(x3,y3);
  d(x1,y1,x2,y2,a);
  d(x2,y2,x3,y3,b);
  d(x1,y1,x3,y3,c);
  if (a+b>c) and (a+c>b) and (b+c>a) then begin
    p:=(a+b+c)/2;
    s:=Sqrt(p*(p-a)*(p-b)*(p-c));
    Writeln('S = ',s)
    end
  else
    Writeln('Невозможно построить треугольник')
end.
4,5(30 оценок)
Ответ:
Five11
Five11
30.12.2022
10. 11.
#include <stdlib.h>
#include <iostream>
#include <iomanip>
using namespace std;

int main() {
const int n = 5;
int a[n][n];
int s1=0, s2=0;

srand(time(0));
for (int i = 0; i < n; i++){
 for (int j = 0; j < n; j++){
a[i][j]=10+(51.0 / RAND_MAX) * rand();
cout << fixed << setw (7) << a[i][j];
 }
cout <<endl;
}

for (int i = 0; i < n; i++) {
 s1 += a[i][i]; s2 += a[i][n-i-1];
 }
 cout << "s1 = " << s1 << "  s2 = " << s2 << endl;
}

Пример:
37 47 11 12 34
13 55 15 18 38
57 12 24 52 17
31 36 21 57 43
30 56 47 26 33
s1 = 206 s2 = 142

1.
#include <iostream>
using namespace std;

long int Fact(int n)
{
       if (n==0) return 1;
       else return Fact(n-1)*n;
}

int main()
{
    int n;
    cout << "n = ";
    cin >> n;
    cout << n << "! = " << Fact(n) << "\n";
    system("Pause");
    return 0;
}

Пример:
n = 5
5! = 120
4,4(50 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ