Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
ПростоЯ
184 / 101 / 8
Регистрация: 30.05.2009
Сообщений: 759
1

Поменять местами элементы матрицы

31.05.2009, 18:03. Просмотров 2638. Ответов 6
Метки нет (Все метки)

При помощи датчика случайных чисел получить матрицу A порядка N (N – целое четное случайное число в диапазоне от 7 до 15). Поменять местами элементы в 1ой области с элементами в 4ой области. Вывести обе матрицы. 1ую и 4ую области выделить различным цветом.
Код до того момента, когда нужно условие - Поменять элементы.
Как нужно написать условие, что бы поменять элементы?
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub zadacha()
Dim a() As Double,  N As Integer
Randomize Timer
N = Rnd * 8 + 7
ReDim a(N, N), Sum(N)
Sheets("Лист1").Select: Cells.Clear 'Очищаем весь рабочий лист
For i = 1 To N
For j = 1 To N
a(i, j) = Rnd * 8
Cells(i, j) = a(i, j)
Next j
Next i
 
End Sub
0
Изображения
 
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2009, 18:03
Ответы с готовыми решениями:

Поменять местами элементы матрицы симметрично побочной диагонали
Составьте программу, меняющую местами элементы матрицы симметрично побочной...

В заданной матрицы Н (4,2) поменять местами элементы с четными и не четными индексами
В заданной матрицы Н (4,2) поменять местами элементы с четными и не четными...

Поменять местами элементы
Поменять местами симметрично элементы верхней четверти и нижней четверти...

Поменять местами 3 и 8 элементы массива
в Visual Basic нужно написать программки: 1.Поменять местами 3 и 8 элементы...

Поменять местами 3 и 8 элементы массива
в Visual Basic нужно написать программки: 1.Поменять местами 3 и 8 элементы...

6
Toxa33rus
3814 / 878 / 120
Регистрация: 16.04.2009
Сообщений: 1,767
31.05.2009, 19:53 2
провожу я мысленно границу между 4 и 3, 1 и 2 и встает вопрос: вот те половинки которые получаются их к какой области относить? Например ячейка(первая строка, последний столбец) это 1 область или 2?
А еще по какому алгоритму происходит замена? Как бы зеркальное отображение или поворот на 90 градусов? Думаю первое иначе будет не ясно к кому относится ячейка(1,1) - к 1 или к 4, а при зеркальном переносе ячейки главной диагонали останутся на своих местах.
Цитата Сообщение от ПростоЯ Посмотреть сообщение
N – целое четное случайное число в диапазоне от 7 до 15
Цитата Сообщение от ПростоЯ Посмотреть сообщение
N = RND * 8 + 7
Тут я в ступоре: согласно коду четность не учитывается вообще, а согласно условию N должно быть четным, но тогда не понятно почему от 7 до 15 (7 и 15 - не четные числа).
0
ПростоЯ
184 / 101 / 8
Регистрация: 30.05.2009
Сообщений: 759
31.05.2009, 20:07  [ТС] 3
Цитата Сообщение от Toxa33rus Посмотреть сообщение
провожу я мысленно границу между 4 и 3, 1 и 2 и встает вопрос: вот те половинки которые получаются их к какой области относить? Например ячейка(первая строка, последний столбец) это 1 область или 2?
А еще по какому алгоритму происходит замена? Как бы зеркальное отображение или поворот на 90 градусов? Думаю первое иначе будет не ясно к кому относится ячейка(1,1) - к 1 или к 4, а при зеркальном переносе ячейки главной диагонали останутся на своих местах.
Элементы матрицы, которые составляют диагонали матрицы не входят ни в одну область.
Заменить нужно поворотом на 90 градусов. Хотя в условии не сказано как, поэтому, думаю, можно и методом поворота и методом зеркального отражения каждой области на другую...как легче так и проще будет сделать.

Цитата Сообщение от Toxa33rus Посмотреть сообщение
Тут я в ступоре: согласно коду четность не учитывается вообще, а согласно условию N должно быть четным, но тогда не понятно почему от 7 до 15 (7 и 15 - не четные числа).
Честно говоря эта часть была взята из аналогично задачи (видимо там не обратили внимания на четность N). Если для выполнения условия четности порядка N вам не составит труда написать код, буду очень признателен. Но мне кажется, что это ошибка в условии задачи и не столь важна четность матрицы.
0
Toxa33rus
3814 / 878 / 120
Регистрация: 16.04.2009
Сообщений: 1,767
01.06.2009, 16:37 4
Вот так зеркально:
Visual Basic
1
2
3
4
5
6
7
8
9
For i = 1 To (N - 1) \ 2
  For j = 2 To N - 1
    If j > i And N - i >= j Then
      tmp = Cells(i, j).Value
      Cells(i, j).Value = Cells(j, i).Value
      Cells(j, i).Value = tmp
    End If
  Next j
Next i
1
ПростоЯ
184 / 101 / 8
Регистрация: 30.05.2009
Сообщений: 759
02.06.2009, 09:18  [ТС] 5
Цитата Сообщение от Toxa33rus Посмотреть сообщение
Вот так зеркально:
В этом коде как раз и есть, то, что нужно)) . Осталось только спустить вторую матрицу на несколько строк, ниже первой, что бы наглядно было, какие элементы поменялись местами).
Спасибо, Toxa33rus, за помощь.

Добавлено через 45 минут 11 секунд
Цитата Сообщение от Toxa33rus Посмотреть сообщение
Вот так зеркально:
А замену методом поворота на 90 градусов, сложнее?
0
Toxa33rus
3814 / 878 / 120
Регистрация: 16.04.2009
Сообщений: 1,767
02.06.2009, 20:34 6
Цитата Сообщение от ПростоЯ Посмотреть сообщение
А замену методом поворота на 90 градусов, сложнее?
Ничуть!
Вот это:
Visual Basic
1
2
3
tmp = Cells(i, j).Value
Cells(i, j).Value = Cells(j, i).Value
Cells(j, i).Value = tmp
заменить этим:
Visual Basic
1
2
3
tmp = Cells(i, j).Value
Cells(i, j).Value = Cells(N - j + 1, i).Value
Cells(N - j + 1, i).Value = tmp
1
ПростоЯ
184 / 101 / 8
Регистрация: 30.05.2009
Сообщений: 759
02.06.2009, 21:38  [ТС] 7
Спасибо, Toxa33rus, за помощь по данной задачке.
0
02.06.2009, 21:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2009, 21:38

Поменять местами элементы 3-й и 6-й строк массива
Добрый день, всем и каждому. Помогите с решением следующей задачки. Нужно ...

Как можно поменять местами элементы в treeview?
Подскажие плз как можно поменять местами элементы в treeview(н-р два соседних)

Поменять местами наибольший и наименьший элементы массива
Даны действительные числа a1, a2, ..., an. Поменять местами наибольший и...


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

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

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