Если у вас и седьмой блин комом, к черту блины - пеките комочки!
Ааааааааыыыыыыыыыыщ Т.Т У меня сломался мозг, разлетелись болтики
Задача на экзамен (ну блин как завернут, так завернут!!):
Дана матрица. найти сумму модулей отрицательных нечетных элементов в столбцах с положительными элементами на побочной диагонали!!!
Я условие читала раза 4, что понять его Т.Т
Дорогая, madhat87 , если ты вдруг будешь свободна)) напиши здесь, я бы хотела спросить у тебя кое-что по задачам, мне один моментик уточнить надо. Я тебе там кинула в аську еще собщение, чтоб наверняка))
Решение, которое есть:
' Gambas class file
PUBLIC n AS Integer
PUBLIC m AS Integer
PUBLIC A AS Integer[]
PUBLIC SUB escbtn_Click()
ME.CLOSE
END
PUBLIC SUB makemas_Click()
DIM i, j AS Integer
m = InputBox("Задайте количество столбцов")
n = InputBox("Задайте количество строк")
A = NEW Integer[](n, m)
tv1.Columns.Count = m
tv1.Rows.Count = n
tv2.Columns.Count = m
tv2.Rows.Count = n
RANDOMIZE
FOR i = 0 TO n - 1
FOR j = 0 TO m - 1
A[i, j] = Rnd(20)
tv1[i, j].Text = A[i, j]
NEXT
NEXT
END
PUBLIC SUB solve_Click()
DIM c, mmin, num, i, j, k AS Integer
c = 0
FOR i = 0 TO n - 1
mmin = a[i, 0]
k = i
FOR j = 0 TO n - 1
IF a[j, 0] > mmin THEN
mmin = a[j, 0]
k = j
ENDIF
FOR c = 0 TO m - 1
num = a[k, c]
a[k, c] = a[i, c]
a[i, c] = num
NEXT
k = i
NEXT
NEXT
FOR i = 0 TO n - 1
FOR j = 0 TO m - 1
tv2[i, j].Text = a[i, j]
NEXT
NEXT
END
* курсивный кусок кода мне вообще непонятен
Вообще, есть такое правило программирования золотое: комментировать код, чтобы можно было не тратить уйму времени, чтобы в нем разобраться.
я думала, ты мне поможешь понять принцип, логику что ли...В принципе, если ты не помнишь этого, как никак уже столько времени прошло, то ничего же не поделаешь))
Буду надеяться, что ее не достанется на экзамене))
Вот смотри:
c = 0
FOR i = 0 TO n - 1 (тут я поняла, что она присваивает минимальной переменной(mmin) число из первой строки.)
mmin = a[i, 0]
k = i
FOR j = 0 TO n - 1 (тут мне не понятно, почему не выходя из первого цикла она сравнивает опять первый эл. с мин. и перезаписывает, при условии a[j, 0] > mmin )
IF a[j, 0] > mmin THEN
mmin = a[j, 0]
k = j
ENDIF
FOR c = 0 TO m - 1 (тут я ваще не поняла, что этим тут делает, что-то перезаписывает, и все в том же первом цикле.)
num = a[k, c]
a[k, c] = a[i, c]
a[i, c] = num
NEXT
k = i
NEXT
NEXT
я хотела записать эти первый числа строк в отдельный массив, распределить их и потом, находить одинаковый элемент уже в строках матрицы, и дописывать остальные элементы из матрицы в результат..
такое можно провернуть?
Методов сортировки тьма. Но на маленьких задачах они ничем не отличаются. Разве что более оптимальные методы обычно более сложные для понимания. Если этот метод у тебя все сортирует, то не вижу смысла что либо менять. Когда ты обычно сортируешь массив, то внутри цикла, ты не только ищешь более мелкий элемент, но и меняешь элементы местами. Тут же тебе надо менять местами не элементы а сроки в матрице. Для замены элементов обычно вводят временную переменную (обменную), в которую записывается одно из значений, которое участвует в обмене. Тут я бы завела одномерный массив для тех же целей. Но переписывать туда ты будет уже строку.