
Вопрос задан 01.08.2023 в 00:51.
Предмет Информатика.
Спрашивает Богданов Дима.
Заполнить очередь случайными числами из интервала [-20; 40]. Найти сумму последнего нечетного
элемента и третьего элемента очереди. Результат поместить в очередь. Удалить 4 элемент из очереди. После выполнения каждой операции выводить содержимое очереди на экран. (ЧЕРЕЗ ПРОЦЕДУРЫ)

Ответы на вопрос

Отвечает Пак Диана.
PascalABC.NET 3.3.5, сборка 1650 от 01.04.2018
Внимание! Если программа не работает, обновите версию!
type
tQ=queue<integer>;
procedure ЗаполнениеОчереди(q:tQ; n:integer);
begin
Randomize;
loop n do begin
var k:=Random(-20,40);
q.Enqueue(k)
end;
end;
procedure СуммаНужныхЭлементов(q:tQ; var s:integer);
begin
var ko,k:integer;
for var i:=1 to q.Count do begin
k:=q.Dequeue; q.Enqueue(k);
if k.IsOdd then ko:=k;
if i=3 then s:=k
end;
s+=ko
end;
procedure УдалитьЭлемент(q:tQ; p:integer);
begin
for var i:=1 to q.Count do begin
var k:=q.Dequeue;
if i<>p then q.Enqueue(k)
end
end;
begin
var MyQ:=new tQ;
var n:=ReadInteger('Кол-во элементов (не менее 4):');
ЗаполнениеОчереди(MyQ,n);
MyQ.Println;
var s:integer;
СуммаНужныхЭлементов(MyQ,s);
MyQ.Enqueue(s); // искомая сумма помещена в очередь
MyQ.Println;
УдалитьЭлемент(MyQ,4);
MyQ.Println
end.
Пример
Кол-во элементов (не менее 4): 13
-7 12 -18 4 23 -1 15 -11 9 12 5 3 2
-7 12 -18 4 23 -1 15 -11 9 12 5 3 2 -15
-7 12 -18 23 -1 15 -11 9 12 5 3 2 -15
Внимание! Если программа не работает, обновите версию!
type
tQ=queue<integer>;
procedure ЗаполнениеОчереди(q:tQ; n:integer);
begin
Randomize;
loop n do begin
var k:=Random(-20,40);
q.Enqueue(k)
end;
end;
procedure СуммаНужныхЭлементов(q:tQ; var s:integer);
begin
var ko,k:integer;
for var i:=1 to q.Count do begin
k:=q.Dequeue; q.Enqueue(k);
if k.IsOdd then ko:=k;
if i=3 then s:=k
end;
s+=ko
end;
procedure УдалитьЭлемент(q:tQ; p:integer);
begin
for var i:=1 to q.Count do begin
var k:=q.Dequeue;
if i<>p then q.Enqueue(k)
end
end;
begin
var MyQ:=new tQ;
var n:=ReadInteger('Кол-во элементов (не менее 4):');
ЗаполнениеОчереди(MyQ,n);
MyQ.Println;
var s:integer;
СуммаНужныхЭлементов(MyQ,s);
MyQ.Enqueue(s); // искомая сумма помещена в очередь
MyQ.Println;
УдалитьЭлемент(MyQ,4);
MyQ.Println
end.
Пример
Кол-во элементов (не менее 4): 13
-7 12 -18 4 23 -1 15 -11 9 12 5 3 2
-7 12 -18 4 23 -1 15 -11 9 12 5 3 2 -15
-7 12 -18 23 -1 15 -11 9 12 5 3 2 -15



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Для выполнения данной задачи, мы можем создать следующие процедуры:
fill_queue
: заполнение очереди случайными числами из интервала [-20; 40].sum_and_enqueue
: нахождение суммы последнего нечетного элемента и третьего элемента очереди, помещение результата в очередь.remove_4th_element
: удаление 4-го элемента из очереди.print_queue
: вывод содержимого очереди на экран.
Давайте реализуем эти процедуры на языке Python:
pythonimport random
from collections import deque
def fill_queue(queue, size):
for _ in range(size):
queue.append(random.randint(-20, 40))
def sum_and_enqueue(queue):
last_odd = None
third_element = None
# Перебираем очередь, чтобы найти последний нечетный элемент и третий элемент
for element in queue:
if element % 2 != 0:
last_odd = element
if queue.index(element) == 2:
third_element = element
if last_odd is not None and third_element is not None:
queue.append(last_odd + third_element)
def remove_4th_element(queue):
if len(queue) >= 4:
queue.remove(queue[3])
def print_queue(queue):
print("Очередь:", list(queue))
def main():
queue = deque()
queue_size = 10
fill_queue(queue, queue_size)
print("Исходная очередь:")
print_queue(queue)
sum_and_enqueue(queue)
print("Очередь после нахождения суммы последнего нечетного элемента и третьего элемента:")
print_queue(queue)
remove_4th_element(queue)
print("Очередь после удаления 4-го элемента:")
print_queue(queue)
if __name__ == "__main__":
main()
Обратите внимание, что мы используем модуль collections.deque
для реализации очереди. Это упрощает операции добавления и удаления элементов из начала и конца очереди. В результате выполнения скрипта, вы увидите последовательный вывод содержимого очереди после каждой операции.


Похожие вопросы

Информатика 23

Информатика 41

Информатика 26

Информатика 142

Информатика 33

Информатика 33

Информатика 52
Топ вопросов за вчера в категории Информатика

Информатика 2132

Информатика 63

Информатика 14

Информатика 32

Информатика 19

Информатика 15

Информатика 175

Информатика 31

Информатика 48
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili