![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Kruger2 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 9.1.2011 Репутация: нет Всего: нет |
Для заданной матрицы размером 8 на 8 найти такие k, что k-я строка матрицы совпадает с k-м столбцом.
Найти сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент. По первой части проблема в том, что он мне всегда выводит последнюю строку, даже если там нет совпадений. Я так понимаю, что не хватает проверки на ложность или на выход из массива? Но пытался вписать else и прога перестала работать вообще. По всей проге вопрос такой: он мне считает все элементы начиная с 0 (как и полагается в массиве), но когда я пытаюсь сдвинуть цикл for (i=1; i=N-1; i++) всё рушится :( И третий вопрос нафига тут flag? Без него прога не работала, я просто нагло скопировал часть с флагом и поэтому не врубаюсь фигли без него не работает.
Это сообщение отредактировал(а) Kruger2 - 30.6.2011, 14:13 |
|||
|
||||
baldina |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
flag надо инициализировать на каждом шаге цикла по i:
зачем? Это сообщение отредактировал(а) baldina - 30.6.2011, 14:54 |
||||
|
|||||
Kruger2 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 9.1.2011 Репутация: нет Всего: нет |
baldina
Начал писать и придумал как решить проблему ![]() Инициализировал flag нулем, но ничего не изменилось. Всегда выдает, что есть совпадение в последней строке. |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
||||
|
||||
Kruger2 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 9.1.2011 Репутация: нет Всего: нет |
Нет. Бывают совпадения в других строках. А последнюю выводит всегда, вне зависимости от того есть там совпадения или нет.
Добавлено @ 15:42 Вот блин, он мне и сложение не правильно дает, каждую строку после первой он начинает не с ноля, а с конечной суммы. Чорд чорд чорд) Это сообщение отредактировал(а) Kruger2 - 30.6.2011, 15:43 |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
||||
|
||||
newbieone |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 14.3.2010 Репутация: 1 Всего: 1 |
В условии же сказано о полном равенстве строки и столбца, верно?
А у вас там в алгоритме выводится, что совпадение найдено, если есть хотя бы один такой элемент на позиции i,j, что симметричный ему элемент на j,i имеет то же значение...
Попробуйте вот так, кажется, то, что нужно.
Это сообщение отредактировал(а) newbieone - 30.6.2011, 16:42 |
||||||
|
|||||||
Kruger2 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 9.1.2011 Репутация: нет Всего: нет |
Всегда выдает: there is no equality =(
|
|||
|
||||
baldina |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
...на главной диагонали, i==j
Добавлено через 1 минуту и 55 секунд это проверка совпадения хотябы одного элемента. если надо проверить все, то
Это сообщение отредактировал(а) baldina - 30.6.2011, 16:46 |
||||
|
|||||
newbieone |
|
||||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 14.3.2010 Репутация: 1 Всего: 1 |
а для случайно сгенерированной матрицы у вас, собственно, никогда и не будет никакой equality. вы смотрите на свою матрицу, на первую строку, потом на первый столбец. все элементы в строке и столбце одинаковые? очевидно, при использовании rand() для заполнения массива - нет.
это вы откуда взяли про главную диагональ? там идет прогонка по всему массиву
Давайте для определенности N=8, i=1, j=0. Рассмотрим 4 строку:
Отнюдь не главная диагональ. Это сообщение отредактировал(а) newbieone - 30.6.2011, 16:56 |
||||||||
|
|||||||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
я имел в виду, что array[i][j] всегда ==array[j][i] при i==j
Добавлено через 53 секунды именно поэтому у него всегда последняя строка попадает: там у последнего проверяемого элемента j==i и, соответственно, flag==1 |
|||
|
||||
newbieone |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 14.3.2010 Репутация: 1 Всего: 1 |
Главная диагональ там играет роль именно только в последнем элементе последней строки.
На предыдущих же строках главная диагональ алгоритму Kruger2 вообще не важна: flag затирается при переходе от элемента к элементу, первые N-1 элементов могут быть различны, а N-тый элемент строки, в случае равенства N-тому элементу столбца, выставит flag в положение true, что якобы приводит к решению о равенстве строки и столбца (по сути, для положительного ответа программы у автора должны быть равны лишь A последних элементов строки и столбца, где A>=1 и не обязательно равно размеру строки/столбца N).
Ну всё просто, нужно обнулять ваш аккумулятор (sum) в начале каждого прохода по строке. Это сообщение отредактировал(а) newbieone - 30.6.2011, 17:25 |
|||
|
||||
Kruger2 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 9.1.2011 Репутация: нет Всего: нет |
Видимо я не понимаю задания. У меня получается есть допустим массив:
1 1 1 1 1 2 3 4 1 3 3 2 Вот тут первая строка совпадет с первым столбцом и только такой выдаст нужный ответ? |
|||
|
||||
newbieone |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 14.3.2010 Репутация: 1 Всего: 1 |
Kruger2, внимательнее. В общем случае, если вы хотите, чтобы строка совпадала со столбцом, то количество элементов в них должно быть одинаковым (т.е. матрица должна быть квадратной). Иначе как вы, например, для вашего примера:
скажете, равен ли элемент [0][3]=1 элементу [3][0], если у вас четвертая строка отсутствует? Если четвертую строку всё-таки добавить как-то так: 1 1 1 1 1 2 3 4 1 3 3 2 1 6 5 3 то, безусловно, ответом будет k=1 (т.е. только 1 строка и 1 столбец содержат одинаковые элементы). Это сообщение отредактировал(а) newbieone - 30.6.2011, 18:00 |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
newbieone, похоже, вы читаете невнимательно)))) долго объясняете то, что уже говорено
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |