Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
1104 / 480 / 33
Регистрация: 05.07.2018
Сообщений: 1,870
Записей в блоге: 7

Программа пишет программу. Проверить

25.05.2020, 11:54. Показов 1109. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне потребовалось написать программу, которая вычисляет определитель пятой степени по заданному алгоритму.
Алгоритм основан на определении.
1. Определитель матрицы равен сумме всевозможных произведений элементов этой матрицы взятых по одному в каждой строке и каждом столбце.
2. Знак каждого слагаемого определяется (при условии, что элементы берутся из каждой строки по порядку) чётностью набора индексов (j1, j2, j3, j4, j5)
где j1, j2, j3, j4, j5 - номера столбцов элементов, входящих в слагаемое. Чётный набор - слагаемое положительное. Нечётный - отрицательное.

справка:
чётность набора индексов определяется чётностью числа перестановок, которые необходимы, чтобы набор имел вид 1, 2, 3, 4, 5

ВОПРОС
Обе программы работают. Правильно или нет? Вопрос в том, что надо проверить, а верно ли вычисляет вторая программа определитель? Определитель пятого порядка в ручную вычислить крайне сложно. Ну если только он содержит много нулей. Диагональные определители программа вычисляет верно. А как остальные? Надеюсь вы сможете это проверить.

Решение
1. понятно, что для матрицы пятого порядка количество слагаемых равно 5! = 120
2. и каждое слагаемое имеет ровно 5 сомножителей.
3. Тут я и подумал:
Чёрт, легче написать программу, которая сама напишет нужную мне программу
Пусть эта программа скинет вычисленный код в текстовый файл и мне останется только скопировать его и вставить в мою (вторую) программу

Вот эта программа

Пояснение:
В программе задана строковая матрица x(5, 5) которая содержит элементы заданной матрицы и имеющей вид:
a b c d e
f g h i j
k l m n o
p q r s t
u v w x y
DET. txt - файл, в который программа записывает код новой программы
y(120) - массив, который содержит все слагаемые определителя
e(120) - знаки всех слагаемых. Они вычисляются отдельно с помощью функции Minus(j1, j2, j3, j4, j5)

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
Option Explicit
Dim i%, j%, k%, u%
Dim j1%, j2%, j3%, j4%, j5%
Dim x(5, 5) As String, z As String, z2 As String
Dim y(120) As String, e(120) As Integer
Const x25 = "abcdefghijklmnopqrstuvwxy"
 
Private Sub Form_DblClick()
    Cls
    Open "DET.txt" For Output As #1
    
    For i = 1 To 5
    For j = 1 To 5
        x(i, j) = Mid(x25, 5 * (i - 1) + j, 1)
    Next: Next
    
    u = 0
    
    For j1 = 1 To 5
        z = x(1, j1)
    For j2 = 1 To 5
        If j2 = j1 Then GoTo 400
        z = z + x(2, j2)
    For j3 = 1 To 5
        If j3 = j1 Or j3 = j2 Then GoTo 300
        z = z + x(3, j3)
    For j4 = 1 To 5
        If j4 = j1 Or j4 = j2 Or j4 = j3 Then GoTo 200
        z = z + x(4, j4)
    For j5 = 1 To 5
        If j5 = j1 Or j5 = j2 Or j5 = j3 Or j5 = j4 Then GoTo 100
        z = z + x(5, j5)
        
        z2 = Left(z, 1)
        
        For i = 2 To 5
            z2 = z2 + "*" + Mid(z, i, 1)
        Next
        
        u = u + 1
        y(u) = z2
        e(u) = Minus(j1, j2, j3, j4, j5)
        
        z = Left(z, 4)
100:    Next j5
                z = Left(z, 3)
200:    Next j4
                z = Left(z, 2)
300:    Next j3
                z = Left(z, 1)
400:    Next j2
           Next j1
           
    Print #1, "Dd=";
    
    For u = 1 To 120
        If e(u) = 1 Then Print #1, "-"; y(u); Else Print #1, "+"; y(u);
        If u Mod 5 = 0 Then Print #1,: Print #1, "Dd=Dd";
    Next
    Close
End Sub
 
Private Function Minus%(a%, b%, c%, d%, e%)
Dim M(5) As Integer
Dim V%, N%
M(1) = a: M(2) = b: M(3) = c: M(4) = d: M(5) = e
N = 0
 
    For i = 1 To 4
    For j = i To 5
        If M(i) > M(j) Then
            V = M(i): M(i) = M(j): M(j) = V
            N = N + 1
        End If
    Next: Next
    
    Minus = N Mod 2
End Function
Это вторая программа. Фактически на 99% написана первой программой и вычисляет определитель пятого порядка
Сама матрица находится в файле M.txt. То есть записана именно как матрица - пять строк по пять чисел, разделённых одним пробелом

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
Option Explicit
Option Base 1
Dim Dd As Single
Dim a!, b!, c!, d!, e!, f!, g!, h!, i!, j!, k!, l!, m!, n!, o!, p!, q!, r!, s!, t!, u!, v!, w!, x!, y!
 
Private Sub Form_DblClick()
    Cls
    Open "M.txt" For Input As #1
    
    Input #1, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y
    
    Close
Dd = 0        ' Весь этот код написала предыдущая программа
 
Dd = a * g * m * s * y - a * g * m * t * x - a * g * n * r * y + a * g * n * t * w + a * g * o * r * x
Dd = Dd - a * g * o * s * w - a * h * l * s * y + a * h * l * t * x + a * h * n * q * y - a * h * n * t * v
Dd = Dd - a * h * o * q * x + a * h * o * s * v + a * i * l * r * y - a * i * l * t * w - a * i * m * q * y
Dd = Dd + a * i * m * t * v + a * i * o * q * w - a * i * o * r * v - a * j * l * r * x + a * j * l * s * w
Dd = Dd + a * j * m * q * x - a * j * m * s * v - a * j * n * q * w + a * j * n * r * v - b * f * m * s * y
Dd = Dd + b * f * m * t * x + b * f * n * r * y - b * f * n * t * w - b * f * o * r * x + b * f * o * s * w
Dd = Dd + b * h * k * s * y - b * h * k * t * x - b * h * n * p * y + b * h * n * t * u + b * h * o * p * x
Dd = Dd - b * h * o * s * u - b * i * k * r * y + b * i * k * t * w + b * i * m * p * y - b * i * m * t * u
Dd = Dd - b * i * o * p * w + b * i * o * r * u + b * j * k * r * x - b * j * k * s * w - b * j * m * p * x
Dd = Dd + b * j * m * s * u + b * j * n * p * w - b * j * n * r * u + c * f * l * s * y - c * f * l * t * x
Dd = Dd - c * f * n * q * y + c * f * n * t * v + c * f * o * q * x - c * f * o * s * v - c * g * k * s * y
Dd = Dd + c * g * k * t * x + c * g * n * p * y - c * g * n * t * u - c * g * o * p * x + c * g * o * s * u
Dd = Dd + c * i * k * q * y - c * i * k * t * v - c * i * l * p * y + c * i * l * t * u + c * i * o * p * v
Dd = Dd - c * i * o * q * u - c * j * k * q * x + c * j * k * s * v + c * j * l * p * x - c * j * l * s * u
Dd = Dd - c * j * n * p * v + c * j * n * q * u - d * f * l * r * y + d * f * l * t * w + d * f * m * q * y
Dd = Dd - d * f * m * t * v - d * f * o * q * w + d * f * o * r * v + d * g * k * r * y - d * g * k * t * w
Dd = Dd - d * g * m * p * y + d * g * m * t * u + d * g * o * p * w - d * g * o * r * u - d * h * k * q * y
Dd = Dd + d * h * k * t * v + d * h * l * p * y - d * h * l * t * u - d * h * o * p * v + d * h * o * q * u
Dd = Dd + d * j * k * q * w - d * j * k * r * v - d * j * l * p * w + d * j * l * r * u + d * j * m * p * v
Dd = Dd - d * j * m * q * u + e * f * l * r * x - e * f * l * s * w - e * f * m * q * x + e * f * m * s * v
Dd = Dd + e * f * n * q * w - e * f * n * r * v - e * g * k * r * x + e * g * k * s * w + e * g * m * p * x
Dd = Dd - e * g * m * s * u - e * g * n * p * w + e * g * n * r * u + e * h * k * q * x - e * h * k * s * v
Dd = Dd - e * h * l * p * x + e * h * l * s * u + e * h * n * p * v - e * h * n * q * u - e * i * k * q * w
Dd = Dd + e * i * k * r * v + e * i * l * p * w - e * i * l * r * u - e * i * m * p * v + e * i * m * q * u
 
    Print Dd
End Sub
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.05.2020, 11:54
Ответы с готовыми решениями:

Программа пишет о числе всё...
Нужно написать программу в которой вводится число а программа пишет про него все что знает... там типо четное или не четное положительное...

Что и в какие файлы пишет программа
Доброго всем здравия, телесного и духовного! Не могу разобраться как можно записать что-то в файл и затем это прочитать. Нашел на одном...

Программа пишет все на анг. языке
Нужна помошь, программа пишет все на анг.. Программирую через коде блокс, пробивал через команду SetConsoleCP(1251); ...

1
Наивное Существо
 Аватар для vedunasv
666 / 141 / 27
Регистрация: 09.05.2020
Сообщений: 750
Записей в блоге: 15
25.05.2020, 22:54
Это ИИ.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.05.2020, 22:54
Помогаю со студенческими работами здесь

Почему программа не пишет все результаты?
Почему код читает данные только из первого файла и соответственно делает только 1 результат? program lab9; {$APPTYPE CONSOLE} uses ...

Программа пишет, что выполняется, но ничего не выводит
Нашёл код в интернете, решил полюбоваться. Данная программа должна выводить изображение сердца, но когда я её запускаю, пишет, что...

Перед div программа пишет неверное выражение
Var b : boolean; x, i : integer; Begin Readln(x); b:=false; i:=0; While not (b) do Begin; ...

Программа пишет, что отсутствуют подходящие комплекты
Добрый день. Хочу начать осваивать работу с Qt по книге Шлее М. - Профессиональное программирование на C++. Qt 4.8. но там, к сожалению, не...

Вместо открытия браузера программа пишет букву
Итак, я хочу, чтобы когда пользователь писал программе "открой браузер" она нам задавала вопрос "какой?: ", это сделал,...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru