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

Единичная матрица - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.90
b0n4b
2 / 2 / 0
Регистрация: 16.11.2011
Сообщений: 100
19.11.2011, 00:58     Единичная матрица #1
Пытаюсь написать программу, которая выводит на экран Единичную матрицу размера nxn.
Написал код, он не работает, точнее вывод на экран все элементы в один ряд.
И что-то мне подсказывает, что это получается вовсе не матрица. (Единичная матрица нужна, чтобы её можно было умножить на число). Прошу помощи.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <conio.h>
#include <stdio.h>
#define n 3
 
int main(void)
{
    int a[n][n];
    int i=0, j=0;
    
    for (i=0; i<n; i++)
        for (j=0; j<n; j++)
    if (i==j) 
    {
        printf ("1 ");
    }       
    else 
    {
        printf ("0 ");
    }
    getch ();
    return 1;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2011, 00:58     Единичная матрица
Посмотрите здесь:

Для матриц I=2P-E, где Е-единичная матрица,а Р=Р(n,n), проверить св-во I^2=Е.При помощи метода Гаусса решить СЛАУ Ix=y, где вектор состоит из единиц. C++
C++ Проверить для матрицы H=E-vvT/|v|2 (где E – единичная матрица, а вектор v=v(n) свойство ортогональности HT=H-1
C++ Получить матрицу A(B-E)+C, где Е-единичная матрица порядка n, а элементы матрицы C вычисляются по формуле
C++ Заданы две левые треугольные целочисленные матрицы А, B. Найти матрицу С = Е(A + B)2, где Е – единичная матрица.
C++ Даны квадратная матрица A порядка n и вектор с n элементами. Получить вектор: (A=E)b, где E единичная матрица порядка n
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
19.11.2011, 01:46     Единичная матрица #2
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
#include <stdio.h>
#include <stdlib.h>
 
typedef int Value;
typedef Value *Row;
typedef Row *Matrix;
 
Matrix createMatrix(size_t height, size_t width,
  Value (*filler)(size_t i, size_t j)) {
  Matrix matrix = (Matrix)malloc(sizeof(Row) * height);
  int i, j;
  for (i = 0; i < height; ++i) {
    matrix[i] = (Row)malloc(sizeof(Value) * width);
    if (filler != NULL)
      for (j = 0; j < width; ++j)
        matrix[i][j] = filler(i, j);
  }
  return matrix;
}
 
void destroyMatrix(Matrix matrix, size_t height, size_t width) {
  int i;
  for (i = 0; i < height; ++i)
    free(matrix[i]);
  free(matrix);
}
 
void printMatrix(Matrix matrix, size_t height, size_t width) {
  int i, j;
  for (i = 0; i < height; ++i) {
    for (j = 0; j < width; ++j)
      printf("%4d ", matrix[i][j]);
    printf("\n");
  }
}
 
Value matrixOfOne(size_t i, size_t j) {
  if (i == j)
    return 1;
  return 0;
}
 
Matrix multiplyMatrixByScalar(Matrix matrix, size_t height, size_t width,
  Value scalar) {
  int i, j;
  for (i = 0; i < height; ++i)
    for (j = 0; j < width; ++j)
      matrix[i][j] *= scalar;
  return matrix;
}
 
int main(int argc, char *argv[]) {
  size_t width = 10;
  size_t height = 10;
  Matrix matrix = createMatrix(height, width, matrixOfOne);
  printMatrix(matrix, height, width);
  printf("\n");
  multiplyMatrixByScalar(matrix, height, width, 11);
  printMatrix(matrix, height, width);
  destroyMatrix(matrix, height, width);
  return 0;
}
b0n4b
2 / 2 / 0
Регистрация: 16.11.2011
Сообщений: 100
19.11.2011, 10:57  [ТС]     Единичная матрица #3
Что-то слишком запарено для меня...
Xhunty
4 / 4 / 1
Регистрация: 27.03.2010
Сообщений: 20
19.11.2011, 11:21     Единичная матрица #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
#include <conio.h>
#include <stdio.h>
#define n 3
 
int main(void)
{
    int a[n][n];
    int i=0, j=0;
 
    for (i=0; i<n; i++)
    {
        for (j=0; j<n; j++){
            if (i==j) 
            {
                printf ("1 ");
            }               
            else 
            {
                printf ("0 ");
            }
            
        }
        printf("\n");
    }
            getch ();
            return 1;
}
Просто после каждого вывода строки делай перенос строки printf("\n")
и ещё ты прав это не совсем матрица. Ты же создал матрицу, а не заполнил её. Просто печатаешь 0 или 1
C
1
2
3
4
5
6
7
8
9
10
                        if (i==j) 
            {
                a[i][j]=1;
                printf ("%d ",a[i][j]);
            }               
            else 
            {
                a[i][j]=0;
                printf ("%d ",a[i][j]);
            }
вот так будет матрица заполняться и выводиться
Yandex
Объявления
19.11.2011, 11:21     Единичная матрица
Ответ Создать тему
Опции темы

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