Объяснение:
#include <bits/stdc++.h>
using namespace std;
int bigger_P(int a, int b, int c, int d)
{
if(a+b+sqrt(pow(a, 2)+pow(b, 2))>c+d+sqrt(pow(c, 2)+pow(d, 2)))return 1;
if(a+b+sqrt(pow(a, 2)+pow(b, 2))<c+d+sqrt(pow(c, 2)+pow(d, 2)))return 0;
return -1;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int a, b, c, d;
cin>>a>>b>>c>>d;
if(bigger_P(a, b, c, d)==1)cout<<"First perimetr is bigger.";
if(bigger_P(a, b, c, d)==0)cout<<"Second perimetr is bigger.";
if(bigger_P(a, b, c, d)==-1)cout<<"They are equal.";
return 0;
}
--- Python 3.8.3 ---
import typing
from typing import Iterable
from typing import List
from typing import Any
from typing import AnyStr
from typing import Callable
from typing import NoReturn
def _Ok(func: Callable[[Any], Any]):
def OkWrapper(*a, **kw):
r = func(*a, **kw)
if(r):
print('ok')
else:
print('Error')
return OkWrapper
class Queue:
buffer = []
_t = None
_iterPos = 0
def __init__(self, t, InitSeq : Iterable[Any] = None):
if (InitSeq != None):
self.buffer.extend(InitSeq)
self._t = t
def __getitem__(self, position):
return self.buffer[position]
def __len__(self):
return len(self.buffer)
@property
def T(self):
return self._t
@_Ok
def push(self, item):
assert isinstance(type(item), type(self._t))
self.buffer.append(item)
self._length = len(self.buffer)
return True
@_Ok
def clear(self):
self.buffer.clear()
return True
def front(self):
return self._peek(0)
@_Ok
def pop(self):
if (len(self.buffer) > 0):
self.buffer.pop(0); return True
return False
def _peek(self, itempos):
if (len(self.buffer) > 0):
return self.buffer[itempos]
print('Error: Empty Queue'); return
def CommandHandler(q: Queue, cmds: List[AnyStr]) -> NoReturn:
IsRunning = True
while IsRunning:
NewCmd = input()
Tokens = NewCmd.split(' ')
if (Tokens[0] == 'push'):
try:
q.push(q.T(Tokens[1]))
except IndexError:
print('Invalid Command')
except AssertionError:
print('Invalid pushed type')
if (Tokens[0] == 'pop'):
q.pop()
if (Tokens[0] == 'front'):
print(q.front())
if (Tokens[0] == 'size'):
print( len(q) )
if (Tokens[0] == 'clear'):
q.clear()
if (Tokens[0] == 'exit'):
print('bye')
IsRunning = False
def main():
q = Queue(int)
avCommands = ['push','pop','front','size','clear', 'exit']
CommandHandler(q, avCommands)
if __name__ == "__main__":
main()
Пояснения:
Экземпляр Queue может инициализироваться как пустой очередью, так и уже заполненной. Что бы инициализировать пустую очередь, не передавайте в конструктор InitSeq:
q = Queue(int)
Что бы инициализировать очередь с некоторыми значениями, передайте в конструктор InitSeq:
q = Queue(int, [1,2,4,5,6])
Класс Queue строго типизирован, и каждый новый элемент будет проверяться на соответствие хранимому типу, с которым был инициализирован текущий экземпляр.
В моей реализации класс Queue не поддерживает изменение хранимого типа с приведением всех хранимых значений к новому типу
В моей реализации класс Queue не поддерживает изменение хранимого типа без приведения хранимых значений
В моей реализации класс Queue не поддерживает изменение хранимого типа при пустом буфере.
В моей реализации класс Queue является итерируемым объектом (Поддерживает простой перебор в цикле for), а так же поддерживает доступ к элементу по индексу из вне.
q[index] -> q.buffer[index]
Поделитесь своими знаниями, ответьте на вопрос:
Как в паскале поменять первый элемент со вторым и предпоследний элемент с последним? (одномерный целочисленный массив размерностью n)
program tt;
var a: array [1..100] of integer;
n,b: integer;
begin
read(n);
for i: =1 to n do
read(a[i]);
b: =a[1];
a[1]: =a[2];
a[2]: =b;
b: =a[n];
a[n]: =a[n-1];
a[n-1]: =b;
for i: =1 to n do
write(a[i],’,’);
end.