Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
 Аватар для Nik Golor
3 / 3 / 0
Регистрация: 07.01.2017
Сообщений: 101

Потоки. Исправить ошибку

28.03.2018, 13:51. Показов 556. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, помогите найти ошибку. Показывает ошибку в 71 строке. Не знаю, что еще попробовать уже. Суть задания в введение данных в матрицы, с последующим вычислением детерминанта с помощью потоков. Все вроди верно сделал...
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
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
 
struct Param
{
int **matrix;
};
 
// ------------ выводим двумерный массив на экран -------------
void PrintMatrix (int a[][3], const int x, const int y)
{
int i, k;
for (i=0; i<x; i++)
{
for (k=0; k<y; k++)
printf("%-4d", a[i][k]);
printf("\n");
}
}
// ------------------- рассчет детерминанта --------------------
void* determinant (void *argv)
{
struct Param *param = argv;
int **a = param->matrix;
int k = (a[0][0]*a[1][1]*a[2][2]);
k += (a[0][1]*a[1][2]*a[2][0]);
k += (a[0][2]*a[1][0]*a[2][1]);
k -= (a[0][2]*a[1][1]*a[2][0]);
k -= (a[0][1]*a[1][0]*a[2][2]);
k -= (a[0][0]*a[1][2]*a[2][1]);
return (void*)k;
}
 
int main (void)
{
pthread_attr_t attr;
pthread_attr_init(&attr);
const int o = 5, n = 3, m = 3; // размеры трехмерного массива
int matrix[o][n][m]; // собственно массив
pthread_t thread[o];
int i, j, k; // переменные - счетчики
 
// заполняем 5 матриц значениями:
for (i=0; i<o; i++)
{
printf("%d matrix 3x3:\n", i+1);
for (j=0; j<n; j++)
for (k=0; k<m; k++)
{
printf("tach %d %d: ", j, k);
scanf("%d", &matrix[i][j][k]);
//fflush(stdin);
}
printf("\n");
}
 
// выводим матрицы на экран:
printf("MATRIX:\n");
for (i=0; i<o; i++)
{
printf("%d matrix 3x3:\n", i+1);
PrintMatrix(matrix[i], n, m);
// printf("\n");
}
puts("");
printf("DETERMINANTS:\n");
for(i=0; i<o; i++)
{
struct Param param;
param.matrix = matrix[i];
pthread_create(&thread[i], &attr, &determinant, &param);
}
for(i=0; i < o; i++)
{
int res;
pthread_join(thread[i], (void*)&res);
printf("Deter of Matrix #%i: %i\n", i + 1, ((int)res));
}
pthread_attr_destroy(&attr);
return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.03.2018, 13:51
Ответы с готовыми решениями:

Потоки. Исправить ошибку
Здравствуйте, не могу понять в чем ошибка(((В процедуре TFormTwoTreads.TwoTHreadStarting в этой строке Handles := CreateThread(nil, 0,...

Потоки. Нужно исправить ошибку
#include &lt;stdio.h&gt; #include &lt;iomanip.h&gt; #include &lt;conio.h&gt; #include&lt;stdlib.h&gt; #include&lt;string.h&gt; #include&lt;iostream.h&gt; #include...

Как исправить ошибку: формат теста исправить нельзя, только текст программы
class AmericanDate: def __init__(self, y, m, d): self.get_year = str(y) self.get_month = str(m//10)+str(m%10) ...

1
2493 / 1157 / 709
Регистрация: 25.04.2016
Сообщений: 3,325
29.03.2018, 16:48
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
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
/* *** для сборки: gcc file.c -o progname -pthread *** */
// ------------ выводим двумерный массив на экран -------------
void PrintMatrix (int a[][3], const int x, const int y)
{
    int i, k;
    for (i=0; i<x; i++)
    {
        for (k=0; k<y; k++)
            printf("%-4d", a[i][k]);
        printf("\n");
    }
}
// ------------------- рассчет детерминанта --------------------
int determinant (int a[][3])
{
    int k = a[0][0]*a[1][1]*a[2][2];
    k += a[0][1]*a[1][2]*a[2][0];
    k += a[0][2]*a[1][0]*a[2][1];
    k -= a[0][2]*a[1][1]*a[2][0];
    k -= a[0][1]*a[1][0]*a[2][2];
    k -= a[0][0]*a[1][2]*a[2][1];
    return k;
}
// ---------------------- главная функция ----------------------
int main (void)
{
    pthread_attr_t attr;
    pthread_attr_init(&attr);
    const int o = 5, n = 3, m = 3; // размеры трехмерного массива
    int matrix[o][n][m]; // собственно массив
    pthread_t thread[o];
    int i, j, k; // переменные - счетчики
 
    // заполняем 5 матриц значениями:
    for (i=0; i<o; i++)
    {
        printf("%d matrix 3x3:\n", i+1);
        for (j=0; j<n; j++)
            for (k=0; k<m; k++)
            {
                printf("tach %d %d: ", j, k);
                scanf("%d", &matrix[i][j][k]);
                //fflush(stdin);
            }
        printf("\n");
    }
    // выводим матрицы на экран:
    printf("MATRIX:\n");
    for (i=0; i<o; i++)
    {
        printf("%d matrix 3x3:\n", i+1);
        PrintMatrix(matrix[i], n, m);
        // printf("\n");
    }
    printf("\nDETERMINANTS:\n");
    for(i=0; i<o; i++)
        pthread_create(&thread[i], &attr, (void *) &determinant, matrix[i]);
    for(i=0; i<o; i++)
    {
        int res;
        pthread_join(thread[i], (void*)&res);
        printf("Deter of Matrix #%i: %i\n", i + 1, ((int)res));
    }
    pthread_attr_destroy(&attr);
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.03.2018, 16:48
Помогаю со студенческими работами здесь

Подскажите как исправить ошибку. прога ломается на 79 строке. а ошибку не выдает
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using namespace std; int chisla(int a,int b) { ...

В коде выдает ошибку на 15 строчке. Мне надо исправить эту ошибку
procedure TForm1.BOkClick(Sender: TObject); var e1, e2: double; begin Label1.Caption := ''; if not...

Структура: Не могу понять, почему выдает ошибку и как собственно эту ошибку можно исправить?
Привет,не могу понять почему ошибку выдает и как сбстно эту ошибку можно исправить? #include &lt;stdio.h&gt; #include...

Как исправить исправить ошибку в коде
Здравствуйте,помогите пожалуйста исправить ошибку в коде.using System; using System.Threading; namespace Gorokhov_2 { class...

Потоки. Устранить ошибку heap corruption
Задание: Написать программу, которая разбивает файл любого формата на заданное количество кусочков, а затем восстанавливаем файл из этих...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru