Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Tuxoid
0 / 0 / 0
Регистрация: 28.02.2012
Сообщений: 54
1

Генерирование матрицы (ищу пoмoщи) Си

28.02.2012, 14:06. Просмотров 809. Ответов 12
Метки нет (Все метки)

Доброго времени суток.

Я недавно начал изучать Си, поэтому не хватает знаний для написания заданной мне программы программы.

Мне поставили задачу:
1. Сгенерировать 2-е матрицы (2х2 и 3х3)
2. Вывести максимальное значение элементов массива этих матриц
3. Вывести сумму главных диагоналей
4. Перемножить 2-е матрицы. (с=ab и с=ba)

Прошу показать мне, или объяснить, как это делается. Буду очень благодарен.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2012, 14:06
Ответы с готовыми решениями:

Генерирование матрицы с числами
Нужно сгенерировать матрицу с числами nan,inf,отрицательными,дробными,простыми.Я знаю как...

Как сoздать пoддoмен при пoмoщи php???
Всем доброго времени суток... Нужна такая помощь. Кто-то может показать скрипт, чтобы при помощи...

При пoмoщи кaкoй API функции мoжнo узнaть имя юзерa зaшедшегo в систему?
При пoмoщи кaкoй API функции мoжнo узнaть имя юзерa зaшедшегo в систему?

Ищу прошивку матрицы LTN156MB6WLEDV1.5_HF
Добрый день, помогите пожалуйста с прошивкой на матрицу LTN156MB6WLEDV1.5_HF.

Ищу программу для создания матрицы из мониторов.
Здравствуйте возникла необходимость получить большой ЖК экран из порядка 100 мониторов, чтобы...

12
Xind
277 / 150 / 25
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
28.02.2012, 16:20 2
Цитата Сообщение от Tuxoid Посмотреть сообщение
4. Перемножить 2-е матрицы. (с=ab и с=ba)
a и b это
Цитата Сообщение от Tuxoid Посмотреть сообщение
1. Сгенерировать 2-е матрицы (2х2 и 3х3)
?
то задание неверное
из Википедии
Операция умножения двух матриц выполнима только в том случае, если число столбцов в первом сомножителе равно числу строк во втором; в этом случае говорят, что форма матриц согласована. В частности, умножение всегда выполнимо, если оба сомножителя — квадратные матрицы одного и того же порядка.
0
Tuxoid
0 / 0 / 0
Регистрация: 28.02.2012
Сообщений: 54
28.02.2012, 16:24  [ТС] 3
Перемножить 2-е матрицы т.е. сгенерировать ещё 2 с форматами 2х3 и 3х2 (но они должны быть отображены в одной консоли с предыдущими пунктами).

Кстати, забыл уточнить, ОС Linux. Виндовые библиотеки могут не работать.
0
Xind
277 / 150 / 25
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
28.02.2012, 16:32 4
1. Сгенерировать 2-е матрицы (2х2 и 3х3)
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
#include <stdlib.h>
#include <time.h>
 
int main(void)
{
    int M1[2][2], M2[3][3];
    int i, j;
    
    srand( time(NULL) );
    
    for (i = 0; i < 2; i++)
    {
        for (j = 0; j < 2; j++)
        {
            M1[i][j] = rand()%100;
        }
    }
    
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 3; j++)
        {
            M2[i][j] = rand()%100;
        }
    }
    
    return 0;
}
1
Tuxoid
0 / 0 / 0
Регистрация: 28.02.2012
Сообщений: 54
28.02.2012, 16:49  [ТС] 5
Возникли 2 вопроса.
1. srand - что это и как работает?
2. Как вывести эти матрицы на экран? Пробовал через printf, не получилось(
0
Xind
277 / 150 / 25
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
28.02.2012, 17:03 6
Цитата Сообщение от Tuxoid Посмотреть сообщение
1. srand - что это и как работает?
Инициализирует генератор псевдослучайных чисел

Цитата Сообщение от Tuxoid Посмотреть сообщение
2. Как вывести эти матрицы на экран? Пробовал через printf, не получилось(
во вложенных циклах, через printf обращаясь M[i][j]

Добавлено через 10 минут
Цитата Сообщение от Tuxoid Посмотреть сообщение
4. Перемножить 2-е матрицы. (с=ab и с=ba)
Цитата Сообщение от Tuxoid Посмотреть сообщение
Перемножить 2-е матрицы т.е. сгенерировать ещё 2 с форматами 2х3 и 3х2 (но они должны быть отображены в одной консоли с предыдущими пунктами).
Проверяй
C
1
2
3
4
5
6
7
8
9
10
11
    for (i = 0; i < 2; i++)
    {
        for (j = 0; j < 2; j++)
        {
            C[i][j] = 0;
            for (k = 0; k < 3; k++)
            {
                C[i][j] += A[i][k] * B[k][j];
            }
        }
    }
Как генерировать матрицы уже показал.
0
BumerangSP
4291 / 1413 / 463
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
28.02.2012, 17:11 7
1,2,3:
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
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main()
{
 srand(time(NULL));
 int m1[2][2],m2[3][3],i,j,max,s=0;  
 for (i=0; i<2; i++)
  {
   for (j=0; j<2; j++)
    {
     m1[i][j]=rand()%10;
     printf("%3d",m1[i][j]);
    }
   printf("\n");
  }
 printf("\n");
 max=m1[0][0];
 for (i=0; i<2; i++)
  for (j=0; j<2; j++)
  {
   if (m1[i][j]>max)
    max=m1[i][j];
   if (i==j)
    s+=m1[i][j];
  }
   printf("Max=%d\nSum=%d\n",max,s);
 
 
 for (i=0; i<3; i++)
  {
   for (j=0; j<3; j++)
    {
     m2[i][j]=rand()%10;
     printf("%3d",m2[i][j]);
    }
   printf("\n");
  }
 printf("\n");
 s=0;
 max=m1[0][0];
 for (i=0; i<3; i++)
  for (j=0; j<3; j++)
   {
    if (m2[i][j]>max)
     max=m2[i][j];
    if (i==j)
     s+=m2[i][j];
    }
 printf("Max=%d\nSum=%d\n",max,s);
 getchar();
 return 0;
}
1
Tuxoid
0 / 0 / 0
Регистрация: 28.02.2012
Сообщений: 54
28.02.2012, 17:24  [ТС] 8
4BumerangSP
Спасибо большое) Работает)

Сейчас буду пробовать умножать)
0
-=ЮрА=-
Заблокирован
Автор FAQ
28.02.2012, 17:45 9
Tuxoid, посмотрите сюда http://www.cyberforum.ru/faq/thread436065.html#post2464869
Вам в пункт
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
4.1 Генерация двумерной матрицы заполненной случайными числами
Чуть ниже сложение и умножения матриц, а ещё далее целый класс Матрица
0
Tuxoid
0 / 0 / 0
Регистрация: 28.02.2012
Сообщений: 54
28.02.2012, 19:07  [ТС] 10
Поправьте пожалуйста меня, что то не выходит((

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
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
 
int main()
{
    srand(time(NULL));
    int m1[2][3],m2[3][2],m3[3][3],i,j,max,s=0;
    for (i=0; i<2; i++)
    {
        for (j=0; j<3; j++)
        {
            m1[i][j]=rand()%10;
            printf("%3d",m1[i][j]);
        }
        printf("\n");
    }
    printf("\n");
    max=m1[0][0];
    for (i=0; i<2; i++)
        for (j=0; j<3; j++)
        {
            if (m1[i][j]>max)
                max=m1[i][j];
            if (i==j)
                s+=m1[i][j];
        }
    printf("Max=%d\nSum=%d\n",max,s);
 
 
    for (i=0; i<3; i++)
    {
        for (j=0; j<2; j++)
        {
            m2[i][j]=rand()%10;
            printf("%3d",m2[i][j]);
        }
        printf("\n");
    }
    printf("\n");
    s=0;
    max=m1[0][0];
    for (i=0; i<3; i++)
        for (j=0; j<2; j++)
        {
            if (m2[i][j]>max)
                max=m2[i][j];
            if (i==j)
                s+=m2[i][j];
        }
    printf("Max=%d\nSum=%d\n",max,s);
 
    m3[3][3]=m1[i][j]*m2[i][j];
    printf("%3d",m3[3][3]);
    getchar();
    return 0;
}
Показывает, что 3-я матрица равна нулю.
Пробовал другие вариации с вышеуказанной ветки, но не получилось(
0
Xind
277 / 150 / 25
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
28.02.2012, 19:25 11
замените строку
Цитата Сообщение от Tuxoid Посмотреть сообщение
m3[3][3]=m1[i][j]*m2[i][j];
на
C
1
2
3
4
5
6
7
8
9
10
11
        for (i = 0; i < 2; i++)
        {
                for (j = 0; j < 2; j++)
                {
                        m3[i][j] = 0;
                        for (k = 0; k < 3; k++)
                        {
                                m3[i][j] += m1[i][k] * m2[k][j];
                        }
                }
        }
и m3 должен быть 2x2

Добавлено через 1 минуту
вывести третью матрицу так
C
1
2
3
4
5
6
7
8
    for (i=0; i<2; i++)
    {
        for (j=0; j<2; j++)
        {
            printf("%3d",m3[i][j]);
        }
        printf("\n");
    }
1
BumerangSP
4291 / 1413 / 463
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
28.02.2012, 19:33 12
Держите уж. Я так и думал, что мне придется ее доделать
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
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main()
{
 srand(time(NULL));
 int m1[2][2],m2[3][3],i,j,max,s=0;  
 for (i=0; i<2; i++)
  {
   for (j=0; j<2; j++)
    {
     m1[i][j]=rand()%10;
     printf("%3d",m1[i][j]);
    }
   printf("\n");
  }
 printf("\n");
 max=m1[0][0];
 for (i=0; i<2; i++)
  for (j=0; j<2; j++)
  {
   if (m1[i][j]>max)
    max=m1[i][j];
   if (i==j)
    s+=m1[i][j];
  }
   printf("Max=%d\nSum=%d\n",max,s);
 
 
 for (i=0; i<3; i++)
  {
   for (j=0; j<3; j++)
    {
     m2[i][j]=rand()%10;
     printf("%3d",m2[i][j]);
    }
   printf("\n");
  }
 printf("\n");
 s=0;
 max=m1[0][0];
 for (i=0; i<3; i++)
  for (j=0; j<3; j++)
   {
        if (m2[i][j]>max)
     max=m2[i][j];
    if (i==j)
     s+=m2[i][j];
    }
 printf("Max=%d\nSum=%d\n",max,s);
 
 int g1[2][3],g2[3][2],g3[4][4],k;
 for (i=0; i<2; i++)
  {
   for (j=0; j<3; j++)
    {
     g1[i][j]=rand()%10;
     printf("%3d",g1[i][j]);
    }
   printf("\n");
  }
 printf("\n");
 for (i=0; i<3; i++)
  {
   for (j=0; j<2; j++)
    {
     g2[i][j]=rand()%10;
     printf("%3d",g2[i][j]);
    }
   printf("\n");
  }
 printf("\n");
 
 for (i=0; i<2; i++)
  {
   for (j=0; j<2; j++)
    {
      g3[i][j]=0;
      for (k=0; k<3; k++)
      g3[i][j]+=g1[i][k]*g2[k][j];
     printf("%3d",g3[i][j]);
    }
   printf("\n");
  }
 getchar();
 return 0;
}
Ввел еще пару матриц, чтобы не трогать предыдущие (с сохранением размерности, в общем).
2
Tuxoid
0 / 0 / 0
Регистрация: 28.02.2012
Сообщений: 54
28.02.2012, 19:42  [ТС] 13
Спасибо большое, форумчане) Задача решена.
0
28.02.2012, 19:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2012, 19:42

Генерирование Unid
По какому алгоритму генерируются UNID ? Какова вероятность того, что новый созданный документ...

Генерирование звука
функция которая генерирует на системном динамике звук с частотой (F) по (Ms) милисекунд мне нужно...

Генерирование М-последовательности
Помогите плиз...есть прога генерации м-последовательности для определения одной угловой координаты...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru