Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 28.03.2021
Сообщений: 2
1

Ошибка "Process returned -1073741819 (0xC0000005)"

28.03.2021, 13:34. Показов 1348. Ответов 7

Author24 — интернет-сервис помощи студентам
Я только начинаю учиться программировать, и при отладке программы всплывает непонятная мне ошибка сегментирования(скорее всего), но я не могу с ней разобраться. Прошу вашей помощи.
Выдает что-то такое : "Программа получила сигнал SIGSEGV, Ошибка сегментации. 0x0000000000400924 в ft_encryption (word = 0x7fffffffe9e0 "д \ 320lll", n = 6, пароль = 0x7fffffffeae0 "erty", k = 4) на main.c: 53 53 arrpass [p1] = p2;

C++
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
#include <stdio.h>
#include <malloc.h>
#include <string.h>
 
int main() {
    char word[256];
    char password[256];
    int n;
    int k;
 
    printf ("Enter text: ");
    scanf("%s", word);
    printf ("Enter your keyword: ");
    scanf("%s", password);
    n = strlen(word);
    k = strlen(password);
    if (ft_encryption(word, n, password, k) == (-1)) {
        printf ("Error\n");
    }
    return (0);
}
 
int ft_sqrt(int nb) {
    int i;
    i = 0;
    while (i * i < nb) {
        i++;
    }
    if (i * i == nb) {
        return (i);
    }
    else {
        return (-1);
    }
}
 
int ft_encryption(char *word, int n, char *password, int k) {
    int w1, w2, p1, p2, q;
    int *arrpass;
    int *arrword;
    int **matrword;
    int **matrpass;
    char alf[29] = "abcdefghijklmnopqrstuvwxyz,. ";
 
    q = ft_sqrt(k); // шифровка нашего ключа
    if (q == (-1)) {
        return (-1);
    }
    p1 = 0; p2 = 0;
    while ((password[p1] != '\0') && (p2 != 38))
    {
        if (password[p1] == alf[p2]) {
            arrpass[p1] = p2;
            p1++;
            p2 = 0;
        }
        else {
            p2++;
        }
    }
    if (p2 == 38) {
        return (-1);
    }
    p1 = 0;
    for (int x = 0; x < q; x++) {
        for (int y = 0; y < q; y++) {
             matrpass[x][y] = arrpass[p1];
             p1++;
        }
    }
    if (det(matrpass, q) == 0) {
        return (-1);
    }
    while ((n % q) != 0) { // шифровка нашего текста
        word[n + 1] = ' ';
        n++;
    }
    w1 = 0; w2 = 0;
    while ((word[w1] != '\0') && (w2 != 38))
    {
        if (word[w1] == alf[w2]) {
            arrword[w1] = w2;
            w1++;
            w2 = 0;
        }
        else {
            w2++;
        }
    }
    if (w2 == 38) {
        return (-1);
    }
    w1 = 0;
    for (int i = 0; i < (n / q); i++) {
        for (int j = 0; j < q; j++) {
             matrword[i][j] = arrword[w1];
             w1++;
        }
    }
    ft_multiplication_massive(arrword, arrpass, n, q);
    return (0);
}
 
int **matr(int **a, int n, int x){
    int **res = (int **)malloc((n - 1) * sizeof(int *));
    for (int i = 0; i < n - 1; ++i)
        res[i] = (int *)malloc((n - 1) * sizeof(int));
    for (int i = 1; i < n; ++i)
        for (int j = 0, k = 0; j < n; ++j, ++k){
            if (j == x){
                --k;
                continue;
            }
            res[i - 1][k] = a[i][j];
        }
    return res;
}
 
int det(int **a, int n){
    if (n == 1)
        return a[0][0];
    if (n == 2)
        return (a[1][1] * a[0][0]) - (a[0][1] * a[1][0]);
    int ans = 0, sig = 1;
    for (int i = 0; i < n; ++i){
        ans += (sig * a[0][i] * det(matr(a, n, i),n - 1));
        sig *= -1;
    }
    return ans;
}
 
void ft_multiplication_massive(int *arrword, int *arrpass, int n, int q) {
    int *c;
    int i = -1;
    int j = q * (-1);
    for (int k = 0; k < n; k++) {
        c[k] = ((arrword[i + 1] * arrpass[j + q]) % 29);
        i = i + 1;
        j = j + q;
    }
    ft_uncryption(c, n);
}
 
void ft_uncryption(int *c, int n) {
    char alf[29] = "abcdefghijklmnopqrstuvwxyz,. ";
    int i = 0;
    int k = 0;
    char *output;
 
    if ((k < n) && (c[k] == i)) {
        output[k] = alf[i];
        k++;
        i = 0;
    }
    else
        i++;
    void ft_print(output);
}
 
void ft_print(char *output) {
    int l;
    l = strlen(output);
    for (int i = 0; i < l; i++) {
        printf("%c", output[i]);
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.03.2021, 13:34
Ответы с готовыми решениями:

Ошибка (Process returned -1073741819 (0xC0000005) в простом алгоритме
Поиск кратчайшего пути в графе (правда с некоторыми нюансами). В консоле выходит ошибка Process...

Process returned -1073741819 0xc0000005
process returned -1073741819 0xc0000005 Не могу понять в чем проблема void func4() { using...

Процесс возвращает странное значение: Process returned -1073741819 (0xC0000005)
#include &lt;iostream&gt; using namespace std; class Weapon { public: string name; ...

Консоль крошится с сообщением Process returned -1073741819 (0xC0000005), при использовании векторов и чтении из файла
Вот, написала программу, которая может записывать и читать строки файла. Для хранения строк...

7
Заблокирован
28.03.2021, 14:14 2
Цитата Сообщение от pkari Посмотреть сообщение
Я только начинаю учиться программировать
Сразу учись юзать отладчик: это ОЧЕНЬ сильно упростит тебе жизнь. Для выявления причин подобных ошибок (втч) его и придумали добрые бородатые дядьки.
1
Заблокирован
28.03.2021, 14:19 3
Чую выход за пределы массива:
Ошибка "Process returned -1073741819 (0xC0000005)"
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,718
28.03.2021, 14:31 4
Лучший ответ Сообщение было отмечено pkari как решение

Решение

Не понимаю, как можно было получить ошибку исполнения Process returned,
если ошибок компиляции в программе море.

Цитата Сообщение от pkari Посмотреть сообщение
char alf[29] = "abcdefghijklmnopqrstuvwxyz,. ";
символов в этой строке больше, чем 29. Уберите 29, компилятор сам разберется сколько их.

Цитата Сообщение от pkari Посмотреть сообщение
int *arrpass;
int *arrword;
int **matrword;
int **matrpass;
Эти переменные нигде не инициализируются.

Нет заголовочного файла с объявлениями функций.
1
Заблокирован
28.03.2021, 14:40 5
Цитата Сообщение от zss Посмотреть сообщение
символов в этой строке больше, чем 29
Ты ошибся.
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,718
28.03.2021, 14:42 6
Цитата Сообщение от Verevkin Посмотреть сообщение
Ты ошибся.
с терминальным нулем их 30 (может ТС не посчитал пробел в конце).
0
Заблокирован
28.03.2021, 14:48 7
Цитата Сообщение от zss Посмотреть сообщение
с терминальным нулем их 30 (может ТС не посчитал пробел в конце).
Ты прав. Там пробел ещо
0
Заблокирован
28.03.2021, 15:13 8
вот так компилится, но ...
C++
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#include <stdio.h>
#include <malloc.h>
#include <string.h>
 
 
int **matr(int **a, int n, int x){
    int **res = (int **)malloc((n - 1) * sizeof(int *));
    for (int i = 0; i < n - 1; ++i)
        res[i] = (int *)malloc((n - 1) * sizeof(int));
    for (int i = 1; i < n; ++i)
        for (int j = 0, k = 0; j < n; ++j, ++k){
            if (j == x){
                --k;
                continue;
            }
            res[i - 1][k] = a[i][j];
        }
    return res;
}
 
 
int det(int **a, int n){
    if (n == 1)
        return a[0][0];
    if (n == 2)
        return (a[1][1] * a[0][0]) - (a[0][1] * a[1][0]);
    int ans = 0, sig = 1;
    for (int i = 0; i < n; ++i){
        ans += (sig * a[0][i] * det(matr(a, n, i),n - 1));
        sig *= -1;
    }
    return ans; 
}
 
 
int ft_sqrt(int nb) {
    int i;
    i = 0;
    while (i * i < nb) {
        i++;
    }
    if (i * i == nb) {
        return (i);
    }
    else {
        return (-1);
    }
}
 
 
 
void ft_print(char *output) {
    int l;
    l = strlen(output);
    for (int i = 0; i < l; i++) {
        printf("%c", output[i]);
    }
}
 
void ft_uncryption(int *c, int n) {
    char alf[] = "abcdefghijklmnopqrstuvwxyz,. ";
    int i = 0;
    int k = 0;
    char *output;
 
    if ((k < n) && (c[k] == i)) {
        output[k] = alf[i];
        k++;
        i = 0;
    }
    else
        i++;
    
    ft_print(output);
}
 
void ft_multiplication_massive(int *arrword, int *arrpass, int n, int q) {
    int *c;
    int i = -1;
    int j = q * (-1);
    for (int k = 0; k < n; k++) {
        c[k] = ((arrword[i + 1] * arrpass[j + q]) % 29);
        i = i + 1;
        j = j + q;
    }
    ft_uncryption(c, n);
}
 
int ft_encryption(char *word, int n, char *password, int k) {
    int w1, w2, p1, p2, q;
    int *arrpass;
    int *arrword;
    int **matrword;
    int **matrpass;
    char alf[] = "abcdefghijklmnopqrstuvwxyz,. ";
 
    q = ft_sqrt(k); // шифровка нашего ключа
    if (q == (-1)) {
        return (-1);
    }
    p1 = 0; p2 = 0;
    while ((password[p1] != '\0') && (p2 != 38))
    {
        if (password[p1] == alf[p2]) {
            arrpass[p1] = p2;
            p1++;
            p2 = 0;
        }
        else {
            p2++;
        }
    }
    if (p2 == 38) {
        return (-1);
    }
    p1 = 0;
    for (int x = 0; x < q; x++) {
        for (int y = 0; y < q; y++) {
             matrpass[x][y] = arrpass[p1];
             p1++;
        }
    }
    if (det(matrpass, q) == 0) {
        return (-1);
    }
    while ((n % q) != 0) { // шифровка нашего текста
        word[n + 1] = ' ';
        n++;
    }
    w1 = 0; w2 = 0;
    while ((word[w1] != '\0') && (w2 != 38))
    {
        if (word[w1] == alf[w2]) {
            arrword[w1] = w2;
            w1++;
            w2 = 0;
        }
        else {
            w2++;
        }
    }
    if (w2 == 38) {
        return (-1);
    }
    w1 = 0;
    for (int i = 0; i < (n / q); i++) {
        for (int j = 0; j < q; j++) {
             matrword[i][j] = arrword[w1];
             w1++;
        }
    }
    ft_multiplication_massive(arrword, arrpass, n, q);
    return (0);
}
 
 
 
int main() {
    char word[256];
    char password[256];
    int n;
    int k;
 
    printf ("Enter text: ");
    scanf("%s", word);
    printf ("Enter your keyword: ");
    scanf("%s", password);
    n = strlen(word);
    k = strlen(password);
    if (ft_encryption(word, n, password, k) == (-1)) {
        printf ("Error\n");
    }
    return (0);
}
Ошибка "Process returned -1073741819 (0xC0000005)"
0
28.03.2021, 15:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.03.2021, 15:13
Помогаю со студенческими работами здесь

SFML. Ошибка "Process returned -1073741819"
Доброго времени суток. Возникла проблема, которую я не понимаю как решить. При запуске...

Ошибка "Process finished with exit code -1073741819 (0xC0000005)"
Дан файл, в котором содержится в каждой строке фамилия, имя, класс обучения (год и буква) и 4...

Process returned -1073741571 (0xC00000FD)
Добрый день! пишу код, работа с файлами. СodeBlocks &quot;warning&quot; не выдаёт, но выдаёт &quot;Process...

Не работает программа (Process returned o)
Доброго времени суток! Столкнулся с проблемой, при компиляции ошибок нет, но при запуске выдается...

Программа вылетает с ошибкой Process returned -1073740940 (0xC0000374)
Всем привет! Есть вот такое задание : &quot;Одномерный массив А, состоящий из N элементов, заполняется...

Компилятор выдает process returned 0xc00000fd после ввода данных
Программа запускается, но после ввода данных сразу же вылетает. Заметил что это проблема с...

Process returned -107. в среде codeblocks как расшифровать ошибку?
Помогите понять какую ошибку выдает? стандарт c99, при уменьшении dz до 0.001 работает но метод...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru