Страница: 1 |
Страница: 1 |
Вопрос: матрица.
Добавлено: 08.05.10 19:55
Автор вопроса: Yagami Light
Приветствую уважаемые форумчане. Помогите пожалуйста решить одну лабораторную работу. Язык програмирования
visual basic 6.
Создать матрицу A(N*N) элементов где N вводится по запросу программы. С помощью подпрограмм:
1.упорядочить строки матрицы по возрастанию вторых элементов каждой строки
2.Найти максимальный элемент матрицы делимый без остатка на 5. Переставляя строки и столбцы матрицы, поместить этот элемент на место первого элемента в первой строке матрицы.
3.Найти две строки с максимальной разностью элементов стоящих на побочной диагонали.
Исходную матрицу и результаты записать в Файл в основной программе. Информацию из файла выводить на экран с пояснениями.
Понимаю задача трудная и наверняка такие делают не за бесплатно. Но студент человек бедный и если у кого получится помочь в качестве бонуса пополню счёт вашего мобильника на сумму 4$ =)
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
UnDeAdZak
Вопросов: 80
Ответов: 476
Профиль | | #1
Добавлено: 08.05.10 22:06
Вот решения первых 2 - х, решение третьего, дам ,если обьясниш, что такое "побочные диагонали".
В моём варианте форма, на ней текстбокс, куда вводится N, кнопка старта, 2 лейбла , матрица заполняется случайными елементами от 0, до 100.
Dim n As Integer
Dim mass(0 To 50, 0 To 50) As Integer
Dim mass1(0 To 49) As Integer
Private Sub Command1_Click()
Label1.Caption = ""
Label2.Caption = ""
'считываю N
n = Val(Text1.Text)
'обьявляю переменные
Dim Max As Integer
Dim a As Integer
Max = 0
a = 0
Dim i As Integer
Dim j As Integer
Dim g As Integer
'заполняю массив случайными элементами
For i = 0 To n
For j = 0 To n
Randomize
mass(i, j) = Fix(Rnd * 100)
Next j
Next i
'сортирую, начиная от числа, с индексом "0", если надо по другому разобраться в коже несложно
For i = 0 To n
For j = 0 To n
If mass(i, j) > Max Or mass(i, j) = Max Then
Max = mass(i, j)
For g = 1 To n
If g = j Then
Else
mass1 = mass(i, g)
End If
a = a + 1
Next g
a = 0
mass(i, 0) = mass(i, j)
For g = 1 To n
mass(i, g) = mass1
a = a + 1
Next g
End If
Next j
Next i
'Записываю результат в лейбл1
For i = 0 To n
For j = 0 To n
Label1.Caption = Label1.Caption & " " & Str(mass(i, j))
Next j
Label1.Caption = Label1.Caption & vbCrLf
Next i
'ищщу максимальный элемент, делящщийся на 5
Max = 0
For i = 0 To n
For j = 0 To n
If mass(i, j) > Max Then
If mass(i, j) / 5 = Int(mass(i, j) / 5) Then
Max = mass(i, j)
End If
End If
Next j
Next i
'вывожу его во второй лейбл
If Max = 0 Then
Label2.Caption = "нет элементов ,которые делятся на 5"
Else
Label2.Caption = Str(Max)
End If
End Sub
Номер ответа: 2
Автор ответа:
Yagami Light
Вопросов: 1
Ответов: 4
Профиль | | #2
Добавлено: 08.05.10 22:23
Спасибо вам большое за помощь
побочная диагональ квадратной матрицы проходит через ее правый верхний и левый нижний угол
Номер ответа: 3
Автор ответа:
UnDeAdZak
Вопросов: 80
Ответов: 476
Профиль | | #3
Добавлено: 08.05.10 22:27
блин) чтото я с сортировкой намудрил(
Номер ответа: 4
Автор ответа:
Yagami Light
Вопросов: 1
Ответов: 4
Профиль | | #4
Добавлено: 08.05.10 22:36
Если у вас получится доделать напишите номер своего мобильного мне в личку и я как обещал пополню ваш счёт в знак благодарности)