|
Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения |
14.10.2010, 18:56
|
#1
|
Знающий
Регистрация: 26.11.2009
Сообщений: 313
Написано 35 полезных сообщений (для 95 пользователей)
|
Массивы
Непредставляю как написать алгоритм для решения етих задач
может кто знает:
1. Дан массив ненулевых целых чисел размера N. Проверить, чередуются ли в нем положительные и
отрицательные числа. Если чередуются, то вывести 0, если нет, то вывести номер первого
элемента, нарушающего закономерность.
2. Дан массив A[1..N,1..N]. Составить программу, которая прибавила бы каждому элементу данной
строки элемент, принадлежащий этой строке и главной диагонали.
__________________
StimuL
Maks
|
(Offline)
|
|
14.10.2010, 19:58
|
#2
|
Дэвелопер
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений (для 1,985 пользователей)
|
Ответ: Массивы
1.
Цикол для i от 0 до N
Если знак(a[i])=знак(a[i+1]) выводим i+1 и заканчиваем программу
Конец цикола
Выводим 0
Конец программы
2. Не понял условия.
Как ты игру написал если не можешь такие задачи решить?
Вот вам и blitz3d...
|
(Offline)
|
|
Эти 4 пользователя(ей) сказали Спасибо Reks888 за это полезное сообщение:
|
|
14.10.2010, 22:40
|
#3
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Массивы
Насчёт второго, типа так что ли?
1 2 3 4 5 | +1
6 7 8 9 0 | +7
7 4 5 1 2 | +5
9 5 4 2 3 | +2
7 9 7 3 2 | +2
|
(Offline)
|
|
18.10.2010, 23:59
|
#4
|
Знающий
Регистрация: 26.11.2009
Сообщений: 313
Написано 35 полезных сообщений (для 95 пользователей)
|
Ответ: Массивы
Reks888 ахах так просто оказалось
а я начал перемножать a[i]*a[i+1] и если равно меньше нуля то продолжаем
а если больше нуля то выводим
И я сам чото не пойму второй задачи, ну написал алгоритм как я его понял
завтра папробую здать, надеюсь приймет
__________________
StimuL
Maks
|
(Offline)
|
|
19.10.2010, 20:03
|
#5
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Массивы
Reks888,
Такой массив не прокатит:
{1,2,3,5,6,..}
Нужно проверять на модулис (оператор % в си-подобных языках), в BlitzBasic это MOD.
Проверяешь на деление по модулю на 2, и если следующий по индексу такойже, значит либо это два чётных, либо два нечётных, в зависимости от результата при делении по модулю.
C# код (сори, я тупо забыл блиц):
// цикл для каждого эллемента исключая последний
for (int i=0;i<A.Length()-1,i++) {
if(A[i] %2 == A[i+1] %2) {
return A[i+1];
}
}
return null;
код написан в броузере
В Блице условное выражение будет что-то типо:
If (A[i] MOD 2)=(A[i+1] MOD 2)
Таким образом подобный массив пройдёт:
{1,4,7,8,9,10,27}
Т.к. он подходит под условие что каждый следующий должен быть чётным если предыдущий не чётный, и в точности наоборот.
|
(Offline)
|
|
19.10.2010, 21:03
|
#6
|
Дэвелопер
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений (для 1,985 пользователей)
|
Ответ: Массивы
MoKa, посмотри условие первой задачи. В условии нет ничего про четные и нечетные числа, только про собственно знак.
|
(Offline)
|
|
19.10.2010, 21:23
|
#7
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Массивы
Упс точно. Хе хе.
Тогда поправка:
{-5,4,2,-3,6,-7}
Такой массив не пройдёт учитывая тот код выше.
Тут же нужно проверять примерно таким образом:
Уже не помню, позволяет ли блиц получять результат логического выражения в скобках без привязки, если да то такой код прокатит:
If (Abs(A[i])=A[i])=(Abs(A[i+1])=A[i+1])
Выражение "(Abs(A[i])=A[i])" проверяет чётное или нет, если чётное то возвратит true, если не чётное то false, т.к. Abs получает модуль числа, который всегда положительный.
С таким выражением, массив приведённый сверху не пройдёт проверку.
|
(Offline)
|
|
19.10.2010, 21:32
|
#8
|
Дэвелопер
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений (для 1,985 пользователей)
|
Ответ: Массивы
такой массив по-любому не пройдет, хватит чушь нести.
If sgn(a[i])=sgn(a[i+1]) решает все проблемы
|
(Offline)
|
|
19.10.2010, 21:51
|
#9
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Массивы
sgn, угу, не abs.
Нету у меня манеры править предыдущие сообщения..
Зы, сперва думал речь идёт о чётном не чётном, вот и из непонимания напостил..
Блин, блиц открыть что-ли, 2 года с лишним уже прошло..
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:47.
|