[C언어-기초실습-11] 단위 행렬 만들기

in #kr-dev7 years ago (edited)

[C언어-기초실습-11] 단위 행렬 만들기



지난 시간에는 2x2행렬을 코딩하는 방법을 알아 보았는데 오늘은 행렬에서 많이 사용하는 단위 행렬을 간단히 코딩 상에서 어떻게 표현하는지 실습해보도록 하죠. 어려운 부분은 아니고 초보분들이 간단히 For문을 이용한 코딩 감각을 키우는 실습입니다.

1. 문제의 이해



a1.jpg

4x4 단위 행렬의 모습은 위와 같습니다. 위와 같은 행렬을 코딩을 할 때 어떻게 할까요. 행렬을 떠올릴 때면 무조건 For문을 연상하라고 했죠. 2차 For문을 이용하여 행렬의 이미지를 머리속에서 그려야 합니다.

for(i=0;i<n;i++){
  for(j=0;j<n;j++){
  }
}

이렇게 말이죠. 그리고 나서 단위 행렬의 특징을 찾아냅니다. 단위 행렬을 2차 For문을 표현 할 때 위 그림에서 보면 대각선으로 특정한 패턴을 보이고 있습니다.

특정한 패턴은 좌표(0,0)일때 1이고 좌표(1,1)일때 1입니다. 즉, 좌표(i,j)가 좌표(n,n)일때 1인 행렬을 단위행렬인 것이죠. 그러면 코딩을 할 때 이 규칙을 이용하여 만들어 내면 됩니다.

for(i=0;i<n;i++){
  for(j=0;j<n;j++){
    if(i==j) m[i][j]=1;
    else m[i][j]=0;
  }
}

이렇게 IF문을 이용해서i와 j가 같을 때 즉, 좌표(i,j)가 좌표 (n,n)일때를 지칭합니다. 이때 행렬배열변수에 1을 저장하고 나머지는 0을 저장하면 단위 행렬이 만들어 집니다.

오늘은 그렇게 어려운 내용이 아니죠. 이제 이렇게 코딩한 것이 정상적으로 실행되어 결과가 나오는지 실습을 합시다.

2. 코딩


단위 행렬을 int형으로 해서 코딩했습니다.
[전체소스]

#include <stdio.h>
#include <Windows.h>

int main(int argc, char *argv[]) {
    
    int i,j;
    int n=4;
    int m[n][n];
    
    //단위행열만들기 
    for(i=0;i<n;i++){    
        for(j=0;j<n;j++){
            if(i==j) m[i][j]=1;
            else m[i][j]=0;            
        }
    }
    
    //출력 
    for(i=0;i<n;i++){    
        for(j= 0;j<n;j++){
            printf("%2d",m[i][j]);          
        }
        printf("\n");
    }   

    system("pause");
    return 0;   
}

[결과]
a2.jpg

정상적으로 결과는 나왔습니다.
참고로 실제 계산에서는 단위 행렬을 사용할 때는 정수형으로 사용하기 보다는 실수형으로 사용하는 경우가 많습니다. 실수 형태로 배열변수로 만들어놓고 값을 저장하면 됩니다.

마무리


오늘은 간단히 행렬 코딩 감각을 키우기 위한 단위행렬을 만들어 보았습니다.


Sponsored ( Powered by dclick )

dclick-imagead

Sort:  

Congratulations @codingman! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You published more than 450 posts. Your next target is to reach 500 posts.

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

To support your work, I also upvoted your post!

Do not miss the last post from @steemitboard:

New japanese speaking community Steem Meetup badge
Vote for @Steemitboard as a witness to get one more award and increased upvotes!

Coin Marketplace

STEEM 0.04
TRX 0.33
JST 0.083
BTC 62069.28
ETH 1614.34
USDT 1.00
SBD 0.45