Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 17.11.2022
Сообщений: 15

Список: линейный и двоичный поиск всех товаров, имеющих цену меньше 20000 руб

08.02.2023, 13:32. Показов 862. Ответов 3

Студворк — интернет-сервис помощи студентам
Дан список, содержащий 10 записей, каждая из которых имеет структуру:
Шифр товара Наименование Цена (в руб.) Количество
тип строка тип строка вещественное экземпляров
5 символов 20 символов число целое число
Список упорядочен по убыванию цены товара.
Разработать алгоритмы и программы линейного и двоичного поиска всех товаров, имеющих цену меньше 20000 руб. с выводом найденных записей на экран.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.02.2023, 13:32
Ответы с готовыми решениями:

Разработать программу, выполняющую поиск товаров, имеющих цену меньше 20000 руб
Дан список, содержащий не менее 10 записей, каждая из которых имеет структуру: (Шифр товара, Наименование, Цена (в руб.), Количество) ...

Поиск всех товаров, имеющих цену не меньше 25000 руб
Дан список, содержащий 10 записей, каждая из которых имеет структуру: ----- Шифр товара-----Наименование товара...

Односвязный линейный список: Для трёх товаров с максимальной ценой уменьшить цену в два раза
Помогите пожалуйста составить алгоритм решения задачи с односвязным линейным списком. Для трёх товаров с максимальной ценой (->price),...

3
 Аватар для Lusinka
28 / 26 / 3
Регистрация: 09.02.2023
Сообщений: 31
09.02.2023, 17:14
Лучший ответ Сообщение было отмечено Catstail как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#Алгоритм линейного поиска
def linear_search(products, target_price):
    result = []
    for product in products:
        if product[2] < target_price:
            result.append(product)
    return result
 
# Алгоритм бинарного поиска
def binary_search(products, target_price):
    low = 0
    high = len(products) - 1
    result = []
    while low <= high:
        mid = (low + high) // 2
        if products[mid][2] == target_price:
            break
        elif products[mid][2] < target_price:
            low = mid + 1
        else:
            high = mid - 1
    for i in range(mid, len(products)):
        if products[i][2] < target_price:
            result.append(products[i])
        else:
            break
    return result
 
# Примерный список продуктов
products = [    ['P0001', 'Product 1', 35000, 5],
    ['P0002', 'Product 2', 30000, 10],
    ['P0003', 'Product 3', 25000, 15],
    ['P0004', 'Product 4', 20000, 20],
    ['P0005', 'Product 5', 15000, 25],
    ['P0006', 'Product 6', 10000, 30],
    ['P0007', 'Product 7', 5000, 35],
    ['P0008', 'Product 8', 3000, 40],
    ['P0009', 'Product 9', 2000, 45],
    ['P0010', 'Product 10', 1000, 50],
]
 
# Цена
target_price = 20000
 
# Результат линейного поиска
result = linear_search(products, target_price)
print("Linear search result:")
for product in result:
    print(product)
 
# Результат бинарного поиска
result = binary_search(products, target_price)
print("\nBinary search result:")
for product in result:
    print(product)
Результатом моей программы будет такой вывод:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Результат линейного поиска:
['P0004', 'Product 4', 20000, 20]
['P0005', 'Product 5', 15000, 25]
['P0006', 'Product 6', 10000, 30]
['P0007', 'Product 7', 5000, 35]
['P0008', 'Product 8', 3000, 40]
['P0009', 'Product 9', 2000, 45]
['P0010', 'Product 10', 1000, 50]
 
Результат бинарного поиска:
['P0004', 'Product 4', 20000, 20]
['P0005', 'Product 5', 15000, 25]
['P0006', 'Product 6', 10000, 30]
['P0007', 'Product 7', 5000, 35]
['P0008', 'Product 8', 3000, 40]
['P0009', 'Product 9', 2000, 45]
['P0010', 'Product 10', 1000, 50]
2
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38196 / 21129 / 4309
Регистрация: 12.02.2012
Сообщений: 34,737
Записей в блоге: 14
10.02.2023, 07:47
Lusinka, что-то ты напутал(а) с двоичным поиском... Не должен он захватывать цену поиска (в условии - меньше 20000).

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
products = [    ['P0001', 'Product 1', 35000, 5],
                ['P0002', 'Product 2', 30000, 10],
                ['P0003', 'Product 3', 25000, 15],
                ['P0004', 'Product 4', 20000, 20],
                ['P0004', 'Product 4', 20000, 20],
                ['P0005', 'Product 5', 15000, 25],
                ['P0006', 'Product 6', 10000, 30],
                ['P0007', 'Product 7', 5000, 35],
                ['P0008', 'Product 8', 3000, 40],
                ['P0009', 'Product 9', 2000, 45],
                ['P0010', 'Product 10', 1000, 50],
           ]
           
def bin_search (lst,pr):
    sz=len(lst)
    left=0
    right=sz-1
    while right-left>1:
        mid=(right+left)//2
        if lst[mid][2] == pr:
            i=mid+1
            while lst[i][2] == pr:
                i+=1
            return lst[i:]
        elif lst[mid][2] > pr:
            left=mid
        else:
            right=mid
    return lst[right:]
    
print(bin_search(products,10000))
0
 Аватар для Lusinka
28 / 26 / 3
Регистрация: 09.02.2023
Сообщений: 31
10.02.2023, 17:09
Catstail, спасибо, что поправили, действительно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.02.2023, 17:09
Помогаю со студенческими работами здесь

Структуры: найти суммарный вес товаров, цена которых не превосходит среднюю цену всех товаров
Даны сведения о товарах: наименование , вес, страна, производитель. Найти суммарный вес товаров , цена которых не превосходит среднюю цену...

Линейный и двоичный поиск рейсов, вылетающих из всех пунктов, наименование которых начинается с буквы "К"
Задание: Разработать схему алгоритма и программу решения задачи поиска в массиве записей по заданным полям, с использованием алгоритмов...

Линейный поиск в неупорядоченной таблице без барьера, двоичный поиск, поиск в двоичном дереве
Помогите пожалуйста написать программу, которая позволяет подсчитать, сколько раз в текстовом файле(ах) встретилось каждое из слов,...

Выдать наименования товаров, имеющие цену меньше 100
Поля структуры: шифр товара, наименование, количество едениц и цена одной еденицы. Выдать наименования товаров, имеющие цену меньше 100.

Напечатать список изделий,изготовленных на сумму от 20000 до 25000 руб.
Даны массивы s1,...,s10-наименование предприятий; с1,...,c10-стоимость изделий; k1,...,k10-количество изделий изготовленных за месяц;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru