-2 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 13

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

17.12.2017, 18:57. Показов 1801. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru