Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Kristina10
0 / 0 / 0
Регистрация: 30.03.2018
Сообщений: 15
1

Проверить, чередуются ли в массиве положительные и отрицательные числа

17.03.2019, 21:22. Просмотров 880. Ответов 5

Дан массив ненулевых целых чисел размера N. Проверить, чередуются ли в нем положительные и отрицательные числа. Если чередуются, то вывести 0, если нет, то вывести порядковый номер первого элемента, нарушающего закономерность.
Написала код, но работает неправильно (точнее выводит не то, что требуется по условию задачи), помогите плиз изменить.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
N = int(input("N:"))
a = [1 for i in range(N)]
for i in range(N):
    a.append(int(input(" = ")))
 
Temp=(a[0]>0)
i = 1
 
while ((i<N) and (Temp!=(a[i]>0))) and (a[i]*a[i+1])<0:
    i+=1
    
if i>N:
    print('0')
else:
    print('', i,'элемент')
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2019, 21:22
Ответы с готовыми решениями:

Переписать компоненты файла f в файл g так, чтобы в файле g сначала шли положительные, потом отрицательные числа
Дан файл f, компоненты которого являются целыми числами. Используя вспомогательный файл h,...

Проверить, чередуются ли в массиве положительные и отрицательные числа
Дан массив ненулевых целых чисел размера N. Проверить, чередуются ли в нем положительные и...

Проверить, чередуются ли в массиве положительные и отрицательные числа
нужна помощь неучу:cry: 1.дан массив нулевых целых чисел размера N. проверить, чередуются ли в...

Проверить, чередуются ли в массиве положительные и отрицательные числа.
Прошу ПОМОГИТЕ! Дан массив ненулевых целых чисел размера N. Проверить, чередуются ли в нем...

Проверить, чередуются ли в массиве положительные и отрицательные числа
11.2 Дан массив ненулевых целых чисел размера N. Проверить, чередуются ли в нем положительные и...

5
Michael_Atak
50 / 55 / 24
Регистрация: 26.10.2011
Сообщений: 181
Завершенные тесты: 2
17.03.2019, 22:24 2
Лучший ответ Сообщение было отмечено Kristina10 как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
array_len = int(input("N: "))
array = []
for i in range(array_len):
    array.append(int(input(str(i) + " = ")))
 
k=0
for i in range(len(array) - 1):
    if array[i]<0 and array[i+1]>=0:
        continue
    elif array[i]>=0 and array[i+1]<0:
        continue
    else:
        k=i+1
        break
print(k)
Добавлено через 15 секунд
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
array_len = int(input("N: "))
array = []
for i in range(array_len):
    array.append(int(input(str(i) + " = ")))
 
k=0
for i in range(len(array) - 1):
    if array[i]<0 and array[i+1]>=0:
        continue
    elif array[i]>=0 and array[i+1]<0:
        continue
    else:
        k=i+1
        break
print(k)
1
Starfer
77 / 65 / 69
Регистрация: 30.11.2017
Сообщений: 158
Завершенные тесты: 3
17.03.2019, 23:25 3
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
N = int(input("N:"))
a = []
for i in range(N):
    a.append(int(input()))
prev = a[0]
res = True
for i,x in enumerate(a[1::]):
    if (prev >= 0 and x >= 0) or (prev <= 0 and x <= 0):
        res = False
        break
    prev = x
if (res):
    print(0)
else:
    print(i)
Добавлено через 42 секунды
Michael_Atak, решение хорошее, но в стиле "си"
0
Michael_Atak
50 / 55 / 24
Регистрация: 26.10.2011
Сообщений: 181
Завершенные тесты: 2
17.03.2019, 23:40 4
Цитата Сообщение от Starfer Посмотреть сообщение
решение хорошее, но в стиле "си"
хоть и в стиле Си, но, как мне кажется, понятнее.
тем более, вам не кажется, что флаг res лишний немного?
0
dondublon
2228 / 1163 / 241
Регистрация: 17.03.2012
Сообщений: 6,934
Записей в блоге: 5
18.03.2019, 12:28 5
Как-то так:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from itertools import tee, takewhile
 
 
def pairwise(iterable):
    "s -> (s0,s1), (s1,s2), (s2, s3), ..."
    a, b = tee(iterable)
    next(b, None)
    return zip(a, b)
 
 
def diff_sign(pair):
    a, b = pair
    return (a>=0 and b<0) or (a<0 and b>=0)
 
 
def alternated(seq):
    l = sum(1 for i in takewhile(diff_sign, pairwise(seq)))
    if l == len(seq)-1:
        return 0
    else:
        return seq[l+1]
 
print(alternated([1,-3, -4, -5, -6]))
Функция pairwise утащена из itertools recipes.
0
m0nte-cr1st0
443 / 174 / 84
Регистрация: 15.01.2019
Сообщений: 678
18.03.2019, 12:35 6
Michael_Atak,
Цитата Сообщение от Kristina10 Посмотреть сообщение
вывести порядковый номер первого элемента, нарушающего закономерность.
Цитата Сообщение от Michael_Atak Посмотреть сообщение
k=i+1
Python
1
k=i+2
0
18.03.2019, 12:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2019, 12:35

Проверить, чередуются ли в массиве положительные и отрицательные числа
Дан массив ненулевых целых чисел размера N. Проверить, чередуются ли в нем положительные и...

Проверить, чередуются ли в массиве положительные и отрицательные числа
Дан целочисленный массив из N элементов. Проверить, чередуются ли в нем положительные и...

Проверить, чередуются ли в массиве положительные и отрицательные числа
Не очень пока понимаю, каким образом построить цикл, чтобы определить, чередуются положительные...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru