Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
-2 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 13

Транспонирование матрицы

17.12.2017, 18:57. Показов 1783. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Снова я) На этот раз метод шифрования у меня другой - Сцитал. По сути при шифровании просто транспонируем матрицу, только у меня снова не получается и я снова не могу понять почему. Надеюсь, кто-то в этом разбирается и сможет мне помочь) Заранее благодарна!
Вот код:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Option Explicit
Dim A() As String
Dim H As String 'исходный текст
Dim m As Long 'количество строк матрицы
Dim n As Long 'колицество столбцов матрицы
Dim lentext As Long 'число знаков в тексте
Dim i As Long
Dim j As Long
Dim buf As String
 
Private Sub Command1_Click()
H = Text1.text
'исходный текст
m = Text2.text
'количество строк матрицы
lentext = Len(H)
n = Abs((lentext - 1) \ m) + 1 'количество столбцов
 
ReDim A(1 To m, 1 To n)
f = ""
For i = 1 To m
 For j = i To n
 buf = A(i, j)
 A(i, j) = A(j, i)
 A(j, i) = buf
 Next j
Next i
f = f & buf
Text3.text = f
End Sub
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.12.2017, 18:57
Ответы с готовыми решениями:

Транспонирование матрицы
Вечер добрый. Есть задание в котором надо выполнить транспонирование матрицы С размерности m*n , но чтоб транспонированная матрица...

Транспонирование матрицы
нужно транспортировать матрицу 2х2!спасибо большое

Транспонирование матрицы
Вроде как сделал но транспонирует как-то не правильно (в ворде): Dim a(1 To 2, 1 To 3), b(1 To 3, 1 To 2) As Single Dim i As Integer, j...

7
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
18.12.2017, 21:25
Цитата Сообщение от Eveeer Посмотреть сообщение
и я снова не могу понять почему
Потому,что у вас транспонировать нечего.Матрицы нет.
Вам нужно сформировать массив слов и преобразовать его в матрицу.
Сформировать массив слов можно функцией Split.
Преобразовать в матрицу как то так
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Dim A(1 To 20) As Integer, B(1 To 5, 1 To 4) As Integer
Dim i As Integer, j As Integer, x As Integer
    For i = 1 To 5
        For j = 1 To 4
              x = x + 1                   ' Можно сделать так
              B(i, j) = A(x)
             'B(i, j) = A((i - 1) * 4 + j)' Или так
              Print B(i, j);
        Next j
        Print
    Next i
Что не понятно спрашивайте, чем смогу помогу.
1
-2 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 13
20.12.2017, 17:09  [ТС]
Цитата Сообщение от Genn55 Посмотреть сообщение
Что не понятно спрашивайте, чем смогу помогу.
массив, образованный функцией split это я так понимаю х?
тогда не получается
не могу понять как связать массив букв с его преобразованием в матрицу
Visual Basic
1
x() = Split(H, "", -1, vbTextCompare)
у меня вот так

Добавлено через 1 час 49 минут
Цитата Сообщение от Genn55 Посмотреть сообщение
Что не понятно спрашивайте, чем смогу помогу.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Option Explicit
Dim A() As String
Dim B() As String
Dim H As String 'исходный текст
Dim m As Integer 'количество строк матрицы
Dim n As Integer 'колицество столбцов матрицы
Dim lentext As Long 'число знаков в тексте
Dim f As String
Dim i As Integer
Dim j As Integer
Dim x As Integer
Dim buf As String
 
Private Sub Command1_Click()
H = Text1.Text
'исходный текст
m = Text2.Text
'количество строк матрицы
lentext = Len(H)
n = Abs((lentext - 1) \ m) + 1 'количество столбцов
A() = Split(H, "", -1, vbTextCompare) 'формируем массив из введенных слов
 
ReDim A(1 To lentext) As String, B(1 To m, 1 To n) As String 'формируем матрицу
    For i = 1 To m
        For j = 1 To n
              x = x + 1
              B(i, j) = A(x)
            Print B(i, j);
        Next j
       Print
    Next i
    
For i = 1 To m 'транспонируем матрицу
 For j = i To n
 buf = B(i, j)
 B(i, j) = B(j, i)
 B(j, i) = buf
 Next j
Next i
 
 ReDim B(1 To m * n) 'формируем обратно одномерный массив
    For i = 1 To m * n
    buf = B(i)
        Print B(i);
    Next i
Text3.Text = B(i)
End Sub
Вообщем, вот что в итоге получилось, ругается на вывод зашифрованного текста, ошибка subscript out of range.
Visual Basic
1
Text3.Text = B(i)
0
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
20.12.2017, 17:56
Уточните.Вы хотите шифровать все символы или по словам?
Часа через 3-4 скины пример сейчас не могу.
0
-2 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 13
20.12.2017, 18:05  [ТС]
Все символы.
Например я ввожу абвгде, матрица с 2 строками и 3 столбцами
абв
где
Потом эта матрица транспонирцется
аг
бд
ве
Потом должен формироваться массив, то есть зашифрованый текст: агбдве
Вот так
0
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
21.12.2017, 00:43
Как обещал.Думаю понятно.
Оптимизировать не стал.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Option Explicit
 
Private Sub Command1_Click()
     Dim A() As String, B() As String, Temp() As String, H As String
    Dim i As Long, j As Long, N As Long, M As Long, lentext As Long
    H = "Наша Маша громко плачет,уронила в речку мячик.Тише Машенька не плачь,не утонет в речке мяч!!!!!"
    lentext = Len(H)
    ReDim A(1 To lentext)
    'Вычислим число строк и столбцов
    For i = 1 To lentext
        For j = i To lentext
            If i * j = lentext Then M = i: N = j 'их будет много,но лучшее соотношение будет в конце
        Next
    Next
    Print M, N, lentext
    For i = 1 To lentext
        A(i) = Mid(H, i, 1) ' Запишем все символы в массив
        Print A(i) & " ";
    Next
    Print
    ReDim B(1 To M, 1 To N), Temp(1 To N, 1 To M)
    Print "Двумерный массив"
    Print
    'Преобразуем в двумерный массив
    For i = 1 To M
        For j = 1 To N
            B(i, j) = A((i - 1) * N + j)
            Temp(j, i) = B(i, j) 'Временный массив
    Print B(i, j),
        Next j
    Print
    Next i
    ReDim B(1 To N, 1 To M) 'переопределяем
    B = Temp 'копируем
    Print
    Print "Транспонированный массив"
    Print
    H = "" 'обнулим строку
    For i = 1 To N
        For j = 1 To M
        Print B(i, j),
        H = H & B(i, j) 'и запишем что получилось
    Next j
    Print
    Next i
    Print H 'распечатаем на форме
End Sub
Надеюсь понятно,что дешифрировать нужно в обратном порядке.
Подправите как вам нужно,что не ясно,спрашивайте.Удачи!

Добавлено через 1 час 10 минут
Чтобы расшифровать достаточно изменить 12ю строчку на
Visual Basic
1
If i * j = lentext Then N = i: M = j 'их будет много,но лучшее соотношение будет в конце
0
-2 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 13
22.12.2017, 16:13  [ТС]
Цитата Сообщение от Genn55 Посмотреть сообщение
Подправите как вам нужно,что не ясно,спрашивайте.Удачи!
Спасибо большое! Вы очень-очень помогли! Не ясно одно:
Visual Basic
1
B = Temp
что значит копируем? Ведь переменные В и Temp у нас массивы, а тут обычные переменные
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
23.12.2017, 23:06
Я же делал тебе эту задачу
Применение функции ASCII ко ВСЕМУ тексту

Ты хочешь еще комуто голову нагреть ?

Цитата Сообщение от Genn55 Посмотреть сообщение
If i * j = lentext Then N = i: M = j 'их будет много,но лучшее соотношение будет в конце
там нужно 2 условия i * j и i * j+1 - потомучто длина текста может оказаться простым числом
лучшее соотношение выводим из среднестоящего элемента при таком сочетании


Хотя я сам виновать наверное, нужно было требовать одна тема один вопрос
в той теме было решено три вопроса

1) Применение функции ASCII ко ВСЕМУ тексту
2) шифрование текста методом Вернама
3) Транспонирование матрицы

Убедительная просьба к админам, разнесите мои ответы по соотвествующим темам
Впредь буду отвечать только на один вопрос
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.12.2017, 23:06
Помогаю со студенческими работами здесь

Реализовать умножение матрицы, транспонирование матрицы, обращение матрицы
Реализовать умножение матрицы, транспонирование матрицы, (функция должна быть универсальной) обращение матрицы (процесс такой матрицы, что...

Даны матрицы А(5, 5) и В(5, 5). Напечатать матрицу Ат+Вт. Транспонирование матрицы оформить процедурой
Даны матрицы А(5, 5) и В(5, 5). Напечатать матрицу Ат+Вт. Транспонирование матрицы оформить процедурой. подскажите пожалуйста где...

Транспонирование матрицы. Содержание квадратной матрицы повернуть относительно центра на 90*.
Задача: Содержание квадратной матрицы повернуть относительно центра на 90*. Вот моя версия, она меняет местами четвертинки матрицы, а...

Даны матрицы А(5,5) и В(5,5).Напечатать матрицу А^T+B^T.Транспонирование матрицы оформить процедурой.
Помогите пожалуйста с программой. Даны матрицы А(5,5) и В(5,5).Напечатать матрицу А^T+B^T.Транспонирование матрицы оформить процедурой. ...

Транспонирование матрицы
Доброго времени суток!Как сделать матрицу,чтобы при транспонировании прямоугольной матрицы в результирующей матрице переделывалась сама...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru