0 / 0 / 0
Регистрация: 03.02.2011
Сообщений: 5
1

Найти номера двух соседних чисел из данного набора, произведение которых является минимальным, и вывести вначале меньший, а затем больший номер.

03.02.2011, 18:11. Показов 3447. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1) Дано целое число N (>1) и набор из N чисел. Найти номера двух соседних чисел из данного набора, произведение которых является минимальным, и вывести вначале меньший, а затем больший номер.

2) Дана матрица NxM. Найти максимальный среди элементов тех столбцов, которые упорядочены либо по возрастанию, либо по убыванию. Если упорядоченные столбцы в матрице отсутствуют, то вывести 0.

3) Дана матрица NxM. Удалить ее первый столбец, содержащий только положительные элементы. Если требуемых нет, то вывести матрицу без изменений.


Помогите пожалуйста!!!! Заранее огромное спасибо)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.02.2011, 18:11
Ответы с готовыми решениями:

Найти номера двух соседних чисел из данного набора, произведение которых является минимальным
написать программу на С++ Дано целое число N (> 1) и набор из N чисел. Найти номера двух соседних...

Найти номера двух соседних чисел из данного набора, произведение которых является минимальным
Дано целое число N (> 1). Задать N элементов одномерного массива. Найти номера двух соседних чисел...

Найти номера двух соседних чисел из данного набора, произведение которых является минимальным
с++ Дано целое число N (> 1) и набор из N чисел. Найти номера двух соседних чисел из данного...

Найти номера двух соседних чисел с этого набора, произведение которых является минимальным
Дано целое число N (> 1) и набор из N чисел. Найти номера двух соседних чисел с этого набора,...

10
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
04.02.2011, 04:44 2
Python
1
2
3
4
5
6
7
8
9
10
11
def f(lst):
    assert len(lst) > 1, 'list length < 2'
    ind, minval = (0, 1), lst[0] * lst[1]
    for i, v in enumerate(lst):
        if i <= 1:
            continue
        #print(lst[i - 1], lst[i])
        if lst[i - 1] * lst[i] < minval:
            #print('[', lst[i - 1], lst[i], 'mul:', lst[i - 1] * lst[i], ']')
            ind = (i - 1, i)
    return ind
тесты
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
>>> la
[1, 3, 2, 1, 4, 5, 2, -5]
>>> f(la)
(6, 7)
>>> f([1, 2, 3])
(0, 1)
>>> f([3, 2, 1])
(1, 2)
>>> f([3, 2])
(0, 1)
>>> f([3])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in f
AssertionError: list length < 2
>>> f([])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in f
AssertionError: list length < 2
>>>
1
0 / 0 / 0
Регистрация: 03.02.2011
Сообщений: 5
04.02.2011, 16:00  [ТС] 3
блин( я чёт не понял(( чё за тесты?
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
05.02.2011, 05:29 4
тесты проверяют, как работает функция (их можно отдельно разрабатывать подробнее и точнее)
1
Українець
424 / 318 / 16
Регистрация: 26.09.2009
Сообщений: 844
06.02.2011, 00:52 5
Python
1
for i, v in enumerate(lst):
не легче использовать
Python
1
for i in xrange(len(lst)):
???
2
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
07.02.2011, 04:41 6
да, скорее всего

Добавлено через 8 минут
Python
1
2
3
4
5
6
7
8
9
def f(lst):
    assert len(lst) > 1, 'list length < 2'
    ind, minval = (0, 1), lst[0] * lst[1]
    for i in range(len(lst)):
        if i <= 1:
            continue
        if lst[i - 1] * lst[i] < minval:
            ind = (i - 1, i)
    return ind
в третьем питоне range работает, как xrange

Добавлено через 1 час 40 минут
3) Дана матрица NxM. Удалить ее первый столбец, содержащий только положительные элементы. Если требуемых нет, то вывести матрицу без изменений.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
matr = [[1, 2, 3, -1], [1, 2, 3, 0], [1, 2, 3, 4], [4, 5, 6, 7]]
m_changed = False
 
for i, row in enumerate(matr):
    if len(row) != len([i for i in row if i > 0]):
        m_changed = True
        del matr[i]
        break
 
if not m_changed:
    for row in matr:
        for i in row:
            print('{:3d}'.format(i), end=' ')
        print()
2.
то вывести 0.
ноль не может быть максимальным элементом ?
1
0 / 0 / 0
Регистрация: 03.02.2011
Сообщений: 5
07.02.2011, 17:20  [ТС] 7
я думаю нет...это тогда будет столбец только из нулей! А он же не упорядочен никак...

Спасибо огромное)

Добавлено через 7 часов 11 минут
почему у меня и в первой и во второй задаче ничего не выводит?(
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
08.02.2011, 08:37 8
Цитата Сообщение от 22Leon
это тогда будет столбец только из нулей
[-2, -1, 0] - столбец, упорядоченный по возрастанию
[0, -1, -2] - столбец, упорядоченный по убыванию
ещё [0, -5, -20] и [-35, -25, -10]
то есть ноль может быть максимальным

Цитата Сообщение от 22Leon
почему у меня и в первой и во второй задаче ничего не выводит?
для первой задачи нужно сделать print(f([1, 2, 3, 4]))
а во второй задаче матрица выводится, если изменений не было, сделай print(matr)
(просто в условии не сказано, что при изменении матрицы её нужно выводить)

Добавлено через 4 часа 42 минуты
2) Дана матрица NxM. Найти максимальный среди элементов тех столбцов, которые упорядочены либо по возрастанию, либо по убыванию. Если упорядоченные столбцы в матрице отсутствуют, то вывести 0.
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
def is_ascending(lst):
    return sorted(lst) == lst
 
def is_descending(lst):
    return list(reversed(sorted(lst))) == lst
 
matr = [
    [1, -2, 3, 4],
    [5, -2, 2, 8],
    [1, -2, 2, 4],
    [5, -6, 0, 8]
]
 
maxval = None
 
for j in range(len(matr[0])):
    row = [matr[i][j] for i in range(len(matr))]
    if is_ascending(row) or is_descending(row):
        #print("I see:", row)
        if maxval == None or maxval < max(row):
            maxval = max(row)
 
if maxval == None:
    print("not found: 0");
else:
    print("found:", maxval)
1
0 / 0 / 0
Регистрация: 03.02.2011
Сообщений: 5
08.02.2011, 11:01  [ТС] 9
1)
lst=[1,2,0,3,1,1]
def f(lst):
assert len(lst) > 1, 'list length < 2'
ind, minval = (0, 1), lst[0] * lst[1]
for i in range(len(lst)):
if i <= 1:
continue
if lst[i - 1] * lst[i] < minval:
ind = (i - 1, i)
return ind
print(f(lst))

почему-то выводит (4,5), хотя должен (1,2)

3)
n,m=4,4
matr = [[1, 2, 3, 1],
[1, 2, -3, 5],
[1, -2, 3, 4],
[4, 5, 6, 7]]
for i in range(n):
for row in range(m):
print ("%2d" % matr[i][row],end=' ')
print()
print()

m_changed = False
for i, row in enumerate(matr):
if len(row) != len([i for i in row if i > 0]):
m_changed = True
del matr[i]
break
if not m_changed:
for row in matr:
print('{:3d}'.format(i), end=' ')
print(matr)
print()

почему-то удаляет 2ую строку, а должен удалить столбец [1,1,1,4]
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
09.02.2011, 05:46 10
да, это точно

1) Дано целое число N (>1) и набор из N чисел. Найти номера двух соседних чисел из данного набора, произведение которых является минимальным, и вывести вначале меньший, а затем больший номер.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
def f(lst):
    assert len(lst) > 1, 'list length < 2'
    ind, minval = (0, 1), lst[0] * lst[1]
    for i in range(len(lst)):
        if i <= 1:
            continue
        mul = lst[i - 1] * lst[i]
        #print(mul)
        if minval > mul:
            #print('[', lst[i - 1], lst[i], ']')
            minval = mul
            ind = (i - 1, i)
    return ind
Python
1
2
3
4
5
>>> f([1,2,0,3,1,1])
(1, 2)
>>> f([1,2,3,1,1])
(3, 4)
>>>
Цитата Сообщение от 22Leon
почему-то удаляет 2ую строку
это показалось

3) Дана матрица NxM. Удалить ее первый столбец, содержащий только положительные элементы. Если требуемых нет, то вывести матрицу без изменений.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
matr = [[1, -2, 3, 1], [1, 2, 3, 10], [1, 2, 3, -4], [4, 5, 6, 7]]
m_changed = False
 
for j in range(len(matr[0])):
    column = [row[j] for row in matr if row[j] > 0]
    #print('column:', column)
    if len(matr) == len(column):
        m_changed = True
        for row in matr:
            del row[j]
        break
 
if not m_changed:
    for row in matr:
        for i in row:
            print('{:3d}'.format(i), end=' ')
        print()
1
0 / 0 / 0
Регистрация: 03.02.2011
Сообщений: 5
09.02.2011, 10:13  [ТС] 11
accept!!!! Большое тебе человеческое спасибо)))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.02.2011, 10:13
Помогаю со студенческими работами здесь

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

Найти максимальную сумму двух соседних чисел из данного набора
Приветствую,Вас,посетители и администрация форума.Прошу у Вас помощи в решении списка задач,список...

Найти максимальную сумму двух соседних чисел из данного набора
Дано целое число N (&gt; 1). Задать N элементов одномерного массива. Найти максимальную сумму двух...

Найти максимальную сумму двух соседних чисел из данного набора
Дано целое число N(&gt;1) и набор из N чисел. Найти максимальную сумму двух соседних чисел из данного...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru