Форум программистов, компьютерный форум CyberForum.ru

Даны три квадратные матрицы - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 5.00
1991mador
0 / 0 / 0
Регистрация: 05.04.2010
Сообщений: 7
29.06.2010, 21:21     Даны три квадратные матрицы #1
Need help^^
Кто-нибудь знает как это реализовать на Си,не на С++.
Хотя пофиг))
"
Даны три квадратные матрицы А, В и С порядка n (n10). Получить вектор Х, элементами которого являются суммы элементов исходных матриц. Построить диаграмму максимальных элементов исходных матриц"
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2010, 21:21     Даны три квадратные матрицы
Посмотрите здесь:

Даны три квадратные матрицы. Сформировать вектор, состоящий из минимальных элементов каждой матрицы, отличных от нуля C++
C++ Даны 3 квадратные матрицы
C++ Даны две действительные квадратные матрицы порядка n. Получить новую матрицу: путем умножения элементов каждой строки первой матрицы на наибольшее из
1)Даны две действительные квадратные матрицы порядка n. Получить новую матрицу : А) умножение элементов каждой строки первой матрицы на наибольшее из C++
Даны две действительные квадратные матрицы порядка n. Получить новую матрицу: а) умножением элементов каждой строки первой матрицы на наибольш C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-comrade-
355 / 356 / 42
Регистрация: 11.06.2010
Сообщений: 703
29.06.2010, 23:28     Даны три квадратные матрицы #2
Цитата Сообщение от 1991mador Посмотреть сообщение
Получить вектор Х, элементами которого являются суммы элементов исходных матриц.
вектор Х будет иметь три координаты???
1991mador
0 / 0 / 0
Регистрация: 05.04.2010
Сообщений: 7
30.06.2010, 01:45  [ТС]     Даны три квадратные матрицы #3
Порядок матрицы n(n<=10)...

Я признаюсь сам до конца не понимаю. Мне кажется в зависимости от порядка матриц.
Но как это сотворить одному Богу известно))
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
30.06.2010, 03:42     Даны три квадратные матрицы #4
Проще было бы сделать одну трёхмерную матрицу и один вектор, но как просили, так и получайте
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define LIMIT 10
 
int main(void){
    int ** a, ** b, **c, *x, i, j, size;
    
    printf("Size: ");
    scanf("%d", &size);
    if ( size < 1 || size > LIMIT ){
        fprintf(stderr, "Too long or too small.\n");
        exit(EXIT_FAILURE);
    }
    
    srand(time(NULL));
    
    if ( ( a = (int**)calloc(size, sizeof(int*)) ) == NULL ){
        perror("calloc");
        exit(EXIT_FAILURE);
    }
    if ( ( b = (int**)calloc(size, sizeof(int*)) ) == NULL ){
        perror("calloc");
        exit(EXIT_FAILURE);
    }
    if ( ( c = (int**)calloc(size, sizeof(int*)) ) == NULL ){
        perror("calloc");
        exit(EXIT_FAILURE);
    }
    if ( ( x = (int*)calloc(size * size, sizeof(int)) ) == NULL ){
        perror("calloc");
        exit(EXIT_FAILURE);
    }
    for ( i = 0; i < size; ++i ){
        if ( ( a[i] = (int*)calloc(size, sizeof(int)) ) == NULL ){
            perror("calloc");
            exit(EXIT_FAILURE);
        }
        if ( ( b[i] = (int*)calloc(size, sizeof(int)) ) == NULL ){
            perror("calloc");
            exit(EXIT_FAILURE);
        }
        if ( ( c[i] = (int*)calloc(size, sizeof(int)) ) == NULL ){
            perror("calloc");
            exit(EXIT_FAILURE);
        }
        for ( j = 0; j < size; ++j ){
            a[i][j] = rand() % 10;
            b[i][j] = rand() % 10;
            c[i][j] = rand() % 10;
            x[i * size + j] = a[i][j] + b[i][j] + c[i][j];
        }
    }
    
    printf("\nMatrix A:\n");
    for ( i = 0; i < size; ++i ){
        for ( j = 0; j < size; ++j )
            printf("%d ", a[i][j]);
        printf("\n");
    }
    printf("\nMatrix B:\n");
    for ( i = 0; i < size; ++i ){
        for ( j = 0; j < size; ++j )
            printf("%d ", b[i][j]);
        printf("\n");
    }
    printf("\nMatrix C:\n");
    for ( i = 0; i < size; ++i ){
        for ( j = 0; j < size; ++j )
            printf("%d ", c[i][j]);
        printf("\n");
    }
    
    printf("\nSum of elements:\n");
    for ( i = 0; i < size * size; ++i )
        printf("%d ", x[i]);
    printf("\n");
    
    for ( i = 0; i < size; ++i ){
        free(a[i]);
        free(b[i]);
        free(c[i]);
    }
    free(a);
    free(b);
    free(c);
    free(x);
    
    exit(EXIT_SUCCESS);
}
Добавлено через 3 минуты
Цитата Сообщение от 1991mador Посмотреть сообщение
Построить диаграмму максимальных элементов исходных матриц
каким образом? звёздочки рисовать?
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
30.06.2010, 04:03     Даны три квадратные матрицы #5
матрицы линейные
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
#include <stdio.h>
#include <stdlib.h>
 
int mtxsum(double *, double *, int, int);
int PrintMtx(const double *, int, int);
 
/* составляет вектор из сумм элементов трёх матриц */
int main(void) /* ANSI C89 */
{
    double a[3*3] = {
        1.1, 2.2, 3.3,
        1.1, 2.2, 3.3,
        1.1, 2.2, 3.3
    };
    
    double b[4*4] = {
        1.1, 2.2, 3.3, 4.4,
        1.1, 2.2, 3.3, 4.4,
        1.1, 2.2, 3.3, 4.4,
        1.1, 2.2, 3.3, 4.4
    };
    
    double c[2*2] = {
        1.1, 2.2,
        1.1, 2.2
    };
    
    double x[3], tmp;
    int retval;
    
    
    retval = mtxsum(&tmp, a, 3, 3);
    
    if (retval != 0)
        return EXIT_FAILURE;
        
    x[0] = tmp;    
        
    
    retval = mtxsum(&tmp, b, 4, 4);
    
    if (retval != 0)
        return EXIT_FAILURE;
        
    x[1] = tmp;
        
    
    retval = mtxsum(&tmp, c, 2, 2);
    
    if (retval != 0)
        return EXIT_FAILURE;
        
    x[2] = tmp;
    
        
    PrintMtx(a, 3, 3);
    
    
    printf(" x(%g, %g, %g)" "\n", x[0], x[1], x[2]);
    
    
    return EXIT_SUCCESS;
}
 
int mtxsum(double *p, double *mtx, int rows, int cols)
{
    int i, j;
    double sum;
    
    
    sum = 0.0;
    
    for (i = 0; i < rows; i++)
        for (j = 0; j < cols; j++)
            sum += mtx[rows*i+j];
            
    
    *p = sum;
    
    
    return 0;
}
 
int PrintMtx(const double *mtx, int rows, int cols)
{
    int i, j;
    
    
    for (i = 0; i < rows; i++) {
        
        for (j = 0; j < cols; j++)
            printf(" %5.3f", mtx[i*rows+j]);
        
        putchar('\n');
    
    }
    
    
    return 0;
}
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
01.07.2010, 09:12     Даны три квадратные матрицы #6
переделал доступ к элементам
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
#include <stdio.h>
#include <stdlib.h>
 
int mtxsum(double *, double *, int, int);
int PrintMtx(const double *, int, int);
 
/* составляет вектор из сумм элементов трёх матриц */
int main(void) /* ANSI C89 */
{
    double a[3 * 3] = {
        1.1, 2.2, 3.3,
        1.1, 2.2, 3.3,
        1.1, 2.2, 3.3
    };
    
    double b[4 * 4] = {
        1.1, 2.2, 3.3, 4.4,
        1.1, 2.2, 3.3, 4.4,
        1.1, 2.2, 3.3, 4.4,
        1.1, 2.2, 3.3, 4.4
    };
    
    double c[2 * 2] = {
        1.1, 2.2,
        1.1, 2.2
    };
    
    double x[3], tmp;
    int retval;
    
    
    retval = mtxsum(&tmp, a, 3, 3);
    
    if (retval != 0)
        return EXIT_FAILURE;
        
    x[0] = tmp;    
        
    
    retval = mtxsum(&tmp, b, 4, 4);
    
    if (retval != 0)
        return EXIT_FAILURE;
        
    x[1] = tmp;
        
    
    retval = mtxsum(&tmp, c, 2, 2);
    
    if (retval != 0)
        return EXIT_FAILURE;
        
    x[2] = tmp;
    
        
    PrintMtx(a, 3, 3);
    
    
    printf(" x(%g, %g, %g)" "\n", x[0], x[1], x[2]);
    
    
    return EXIT_SUCCESS;
}
 
int mtxsum(double *p, double *mtx, int rows, int cols)
{
    int i, j;
    double sum;
    
    
    sum = 0.0;
    
    for (i = 0; i < rows; i++)
        for (j = 0; j < cols; j++)
            sum += mtx[i * cols + j];
            
    
    *p = sum;
    
    
    return 0;
}
 
int PrintMtx(const double *mtx, int rows, int cols)
{
    int i, j;
    
    
    for (i = 0; i < rows; i++) {
        
        for (j = 0; j < cols; j++)
            printf(" %5.3f", mtx[i * cols + j]);
        
        putchar('\n');
    
    }
    
    
    return 0;
}
~f~
3 / 3 / 0
Регистрация: 15.02.2011
Сообщений: 54
28.02.2011, 12:37     Даны три квадратные матрицы #7
А мне можете помочь?
Даны квадратные матрицы А,В и С порядка n. Получить матрицу (А+В)С.

тож с кадом С
IrineK
Заблокирован
28.02.2011, 13:10     Даны три квадратные матрицы #8
Даны квадратные матрицы А,В и С порядка n. Получить матрицу (А+В)С.
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define DIM 3
 
void resOut(int X[DIM][DIM])
{
    int i,j;
    for(i=0;i<DIM;i++)
    {
        for(j=0;j<DIM;j++)
            printf("%6d",X[i][j]);
        printf("\n");
    }
}
 
int main ()
{
    srand(time(NULL));
    int A[DIM][DIM], B[DIM][DIM], C[DIM][DIM],D[DIM][DIM],i,j,k;
 
    //заполняем матрицы числами от 1 до 10
    for(i=0;i<DIM;i++)
        for(j=0;j<DIM;j++)
        {
            A[i][j]=rand()%10+1;
            B[i][j]=rand()%10+1;
            C[i][j]=rand()%10+1;
        }
 
    //считаем матрицу D = (A+B)C
    for(i=0;i<DIM;i++)
        for(j=0;j<DIM;j++)
        {
            D[i][j]=0;
            for(k=0;k<DIM;k++)
                D[i][j]+= (A[i][k]+B[i][k])*C[k][j];
        }
 
    //выводим результаты
    
    printf("D = (A+B)C \n");
    printf("************ \n");
    printf("A:\n");
    resOut(A);
    printf("B:\n");
    resOut(B);
    printf("C:\n");
    resOut(C);
    printf("D:\n");
    resOut(D);
}
~f~
3 / 3 / 0
Регистрация: 15.02.2011
Сообщений: 54
28.02.2011, 13:51     Даны три квадратные матрицы #9
Даны квадратные матрицы А,В и С порядка n. Получить матрицу (А+В)С.

че т он у мя ошибки дает где красные метки???
srand(time(NULL));
int_A[DIM][DIM], B[DIM][DIM], C[DIM][DIM],D[DIM][DIM],i,j,k;

//заполняем матрицы числами от 1 до 10
for(i=0;i<DIM;i++)
for(j=0;j<DIM;j++)
{
A[i][j]=rand()%10+1;
B[i][j]=rand()%10+1;
C[i][j]=rand()%10+1;
}

//считаем матрицу D = (A+B)C
for(i=0;i<DIM;i++)
for(j=0;j<DIM;j++)
{
D[i][j]=0;
for(k=0;k<DIM;k++)
D[i][j]+= (A[i][k]+B[i][k])*C[k][j];
}

//выводим результаты

printf("D = (A+B)C \n");
printf("************ \n");
printf("A:\n");
resOut(A);
printf("B:\n");
resOut(B);
printf("C:\n");
resOut(C);
printf("D:\n");
resOut(D);
_-это пробел
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
28.02.2011, 13:54     Даны три квадратные матрицы #10
Цитата Сообщение от IrineK Посмотреть сообщение
C
1
2
3
4
...
    srand(time(NULL));
    int A[DIM][DIM], B[DIM][DIM], C[DIM][DIM],D[DIM][DIM],i,j,k;
...
Эти две строчки местами поменяйте.
IrineK
Заблокирован
28.02.2011, 13:56     Даны три квадратные матрицы #11
В чем компилируем, уважаемый?
~f~
3 / 3 / 0
Регистрация: 15.02.2011
Сообщений: 54
28.02.2011, 14:18     Даны три квадратные матрицы #12
теперь только 2 ошибки:
srand(time(NULL));

Добавлено через 4 минуты
В чем компилируем, уважаемый?

а че значить компилируем?

Добавлено через 12 минут
ну ответьте кто-нибуть???
IrineK
Заблокирован
28.02.2011, 14:31     Даны три квадратные матрицы #13
Как бы это ... А! Как называется оболочка (программа), в которой ты пишешь свои программы (типа)?
~f~
3 / 3 / 0
Регистрация: 15.02.2011
Сообщений: 54
28.02.2011, 14:37     Даны три квадратные матрицы #14
turbo c
IrineK
Заблокирован
28.02.2011, 14:41     Даны три квадратные матрицы #15
Теперь есть два варианта:
1) жди, пока кто-то скажет, как запустить рандомайз в ТурбоС;
2) убери строку srand(time(NULL));, пусть работает без нее.
~f~
3 / 3 / 0
Регистрация: 15.02.2011
Сообщений: 54
28.02.2011, 15:01     Даны три квадратные матрицы #16
без srand(time(NULL));он вобще не реботает!

Добавлено через 14 минут
а он числа в матрицу сам вводит что ли и потом считает?
IrineK
Заблокирован
28.02.2011, 15:01     Даны три квадратные матрицы #17
Цитата Сообщение от ~f~ Посмотреть сообщение
без srand(time(NULL));он вобще не реботает!
Ага, а с srand(time(NULL)); он не работал чуть-чуть?
~f~
3 / 3 / 0
Регистрация: 15.02.2011
Сообщений: 54
28.02.2011, 15:19     Даны три квадратные матрицы #18
а числа в матрицах а b c можно изменить как-нибуть?

Добавлено через 7 минут
а все разобрался спс большое!!!
MILAN
28.02.2011, 15:20
  #19

Не по теме:

Цитата Сообщение от ~f~ Посмотреть сообщение
а че значить компилируем?
Круто!

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2011, 15:24     Даны три квадратные матрицы
Еще ссылки по теме:

C++ Даны квадратные матрицы А, В и С порядка n. Получить матрицу (A+B)C.
Даны три квадратные матрицы А, В, С n-го порядка. Вывести на печать ту из них, норма которой наименьшая C++

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

Или воспользуйтесь поиском по форуму:
IrineK
Заблокирован
28.02.2011, 15:24     Даны три квадратные матрицы #20
Цитата Сообщение от ~f~ Посмотреть сообщение
а все разобрался спс большое!!!
Спасибу в карман не положишь...
Yandex
Объявления
28.02.2011, 15:24     Даны три квадратные матрицы
Ответ Создать тему
Опции темы

Текущее время: 21:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru