bizi2002
26.05.2023 02:16

1)приведите примеры использования таблиц и списков в школьной жизни? 2) какие визуализации информации вы можете использовать в процессе : подготовки реферата по истории, решения логических задач , оформления наблюдений за изменением температуры? ответьте

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
Polinka0898
21.06.2020 00:02

--- 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]

0,0(0 оценок)
Ответ:
минимаус9
10.04.2022 04:20
uses crt;
const nmax=100;
 var x:array[1..nmax] of integer;
     n,m,i,j,k,a,p:integer;
 begin clrscr;
randomize;
 repeat
write('Размер массива от 2 до ',nmax,' n=');
 readln(n);
until n in [2..nmax];
writeln('Исходный массив:');
for i:=1 to n do
  begin  
 x[i]:=random(10);  
write(x[i]:4);  end;
 writeln; i:=1;
m:=n;
 while i<n-1 do
  begin
   k:=1;  
 a:=x[i];  
for j:=n downto i+1 do
  if x[j]=a then k:=k+1;
  if k>2 then
     begin
      j:=i;
      while j<=n do
      if x[j]=a then
       begin
        if j=n then n:=n-1
        else
         begin
          for p:=j to n-1 do
          x[p]:=x[p+1];
          n:=n-1;
         end;
     end    
  else j:=j+1;
    end
  else i:=i+1;
  end; if n=0 then
  begin
   
 exit  
end;
 if n=m then
write('Все элементы встречены не более 2 раз и не удалены') else
  begin
 for i:=1 to n do   write(x[i]:4);
 for i:=1 to n-1 do
   for j:=i+1 to n do
   if(i mod 2=0)and(j mod 2=0) and(x[i]<x[j]) then
    begin
     a:=x[i];
     x[i]:=x[j];
     x[j]:=a;
    end;
   for i:=1 to n do
   write(x[i]:4);
  end;
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота