Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2020, 14:46   #1
Mister Mi
Пользователь
 
Регистрация: 25.10.2020
Сообщений: 14
По умолчанию Python код программы

Дан массив x целых чисел. Вывести в порядке возрастания все числа, стоящие на четных
местах и встречающиеся более двух раз. Помогите пожалуйста написать код по алгоритмизации.
Mister Mi вне форума Ответить с цитированием
Старый 03.11.2020, 22:45   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Где встречающиеся более 2 раз? Во всём массиве или на чётных местах?
Black Fregat вне форума Ответить с цитированием
Старый 04.11.2020, 11:57   #3
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Этот запрос уже был в разделе Python.
Там приведён порядок решения.
ТС не в состоянии его реализовать и решил спросить в другом месте
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 04.11.2020, 12:28   #4
Mister Mi
Пользователь
 
Регистрация: 25.10.2020
Сообщений: 14
По умолчанию

Black Fregat, во всем массиве
Mister Mi вне форума Ответить с цитированием
Старый 04.11.2020, 12:29   #5
Mister Mi
Пользователь
 
Регистрация: 25.10.2020
Сообщений: 14
По умолчанию

ViktorR, я просто не пойму как это реализовать
Mister Mi вне форума Ответить с цитированием
Старый 04.11.2020, 12:52   #6
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

1. Создайте пример массива
2. Посмотрите на предложенный порядок решения
3. напишите несколько строк
4. Если что-то не получается, то ищем в Сети как это можно сделать.
5. Затрачиваем энергию своего серого вещества на его же развитие.
6. Не получившееся решение выкладываем и пишем:
"Вот, написал что-то, но результат плохой" или "Вот, написал, но выдаётся ошибка" и т.п.

Покажите что сделали.
Напишите, что непонятно в том описании, которое я привёл.
Что такое срез и как он делается? Запрашиваем в Сети, читаем, пробуем, ...
...

PS:
Пожалуйста, сделайте хоть что-то сами.
Раздавать команды или сидеть на паперти - это ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 04.11.2020, 17:52   #7
Mister Mi
Пользователь
 
Регистрация: 25.10.2020
Сообщений: 14
По умолчанию

ViktorR,
Код:
a = [1, 2, 3, 4, 5,-5, -6, 1, 2, 3, 4, 5]
a = sorted(a)
i = 0
j = 1
 while a[i] =a[j]:
    j += 1
 else:
    if j - i > 2:
    print(a[i])
    i = j; j += 1
ViktorR, так получается, но это не правильно

Последний раз редактировалось BDA; 04.11.2020 в 18:30.
Mister Mi вне форума Ответить с цитированием
Старый 04.11.2020, 19:09   #8
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

У меня написано:
Код:
а) Получить список
б) Получить срез по чётным элементам
в) Сортировать по возрастанию
г) i = 0 - указывает на первый элемент
   j = 1 - указывает на следующий
д) в цикле:
   если a[i] == a[j] то j += 1
   иначе
       если j - i > 2:
          print(a[i])
       i = j; j += 1
Первый пункт - получить список.
Второй пункт получить срез по чётным элементам.
Если написать так:
Код:
b = a[1::2]  # то в b будут чётные по порядку элементы
Код:
from random import *

# Готовим список
a = []
for i in range(50):
    a.append(randint(-50, 50))
# Для проверки алгоритма в списке должны быть одинаковые числа
# Это можно сделать по разному.
a = a + a # или так a = a + a

# получим срез по чётным элементам
b = a[1::2]
print(b)   # смотрим на результат
b.sort()   # сортируем
print(b)   # смотрим на результат
i = 0
j = 1
while True: # в вечном цикле
    if b[i] == b[j]:
        j += 1
    else:
        if j - i > 2:
            print(b[i])
        i = j
        j += 1
    if j >= len(b):
        break       # прыгаем на "волю"
Я использовал "вечный цикл" и условный оператор для выхода, но условие цикла можно поменять.
Пробуй сам как.

PS:
В приведённом тобой примере нет чисел, которые бы повторялись более 2-х раз, как это дано по условию задачи.
Для генерации списка я использовал генератор случайных чисел, а полученную последовательность удвоил (утроил).
К стати, я это сделал через сложение, но можно и проще.

PSS:
При вводе кода делай так:
1. Копируешь код у себя
2. Вставляешь код в форму
3. Выделяешь код в форме
4. Жмёшь на кнопку [CODE], которая есть над формой ввода.

Иначе сложно гадать как писатель расставил пробелы.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 04.11.2020, 19:46   #9
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

ViktorR, в текущем виде не выводится повторяющийся элемент, если он завершает отсортированный список. Ну это скорее задачка для ТС подумать, как такое исправить.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 04.11.2020, 22:12   #10
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Спасибо.
Увидел. Есть ляп.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать код программы Mister Mi Python 2 28.10.2020 15:03
HTML код AlanRaf2101 Общие вопросы по программированию, компьютерный форум 2 28.09.2020 21:39
Помогите изменить код AgentZoy Perl 1 24.09.2020 15:34
Перевод программы с Python на C++ DrFaust1729 Общие вопросы C/C++ 3 20.02.2020 00:25
Python остановка программы Василий15 Python 2 23.05.2016 20:51