개발 기록/행렬 계산기

행렬 계산기 개발 1일차...

LiDARian 2021. 4. 4. 22:43
반응형

1. 5x5까지 지원하는 행렬 계산기를 만들 것이다.

2. 행렬을 숫자와 쉼표와 온점을 이용해 text형태로 받을 것이다. 마우스 사용을 줄이면 사용자 이용에 조금 더 편의를 줄 수 있지 않을까 싶어서.

3. text를 수령하고 유효성검사 규칙에 맞는지 확인한다.

4. 최종적으론 MFC나 NDK로 PC와 안드로이드로 프로그램 배포를 하고자한다.

5. 사실 코틀린을 쓰고 싶지만 모르고 배우기엔 시간이 부족하고 간단한 프로젝트에 그렇게 힘들여야되나 싶기도 하고... 그냥 이미 아는 C로 쓸란다.

// 5x5까지 지원하는 행렬 계산기를 만든다.
// 처음 생성시 몇 행렬인지 먼저 받는다.
// 그 후 그에 맞게 text를 수령하고 유효성검사 규칙에 맞는지 확인한다.
// 행렬을 생성한다.
#include<stdio.h>

//행렬구조체 global initialize
typedef struct Matrix{
int n, m;	//행렬의 행과 열의 크기
char** Mat;	//행렬 그자체
//Mat은 행렬의 주소
//*Mat은 행렬의 하나의 행을 지정
//**Mat은 행렬의 하나의 원소(열)를 지정한다.
} Matrix;

//행렬을 텍스트로 받는다.
//****** 이용자가 행렬 크기에 따르지 않는 경우에 대한 예외처리를 해줘야한다.
void getMatrix(Matrix Matpar){
	//','는 열을 전환하고 '.'는 행을 전환합니다.
	char * textMat = (char)Malloc(512);
	scanf("%s", textMat);
	char len = strlen(textMat);
	char num = 0;
	char numtemp[10] = {};
	//문자를 행과 열로 나눠준다.<----------------------------------
	for(i = 0; i <= len; i++){
		if(textMat[i]!=","||textMat[i]!="."){//숫자 입력...인뎅 생각해보니까 이거 10진수 단위로 또 만들어줘야한다.
			numtemp[z] = atoi(textMat[i]);
			z++;
		}
		elseif(textMat[i]==","){//쉼표가 들어온 경우
			for(j=0;j<=z;j++){//z-j번씩 10을 곱해준다음 더해준다. 된다.

			}
			Matpar[x][y] = num;
			num = NULL;
			y++;
			z = 0;
		}
		else{//온점이 들어온 경우
			if(num == NULL){x++; z = 0; continue;}
			Matpar[x][y] = num;
			x++;
			z = 0;
		}
	}
}

//5x5행렬을 전부 0으로 초기화한다.
void initiateMatrix(Matrix MatStruct){
	printf("행렬의 행 크기는?");
	scanf("%d", &(Mat.n));
	printf("행렬의 행 크기는?");
	scanf("%d", &(Mat.m));
	//이제 행과 열을 모두 0으로 초기화한다.
	MatStruct.Mat = (char**)Malloc(sizeof(char*) * n);
	for(i = 0; i < n; i++){
		MatStruct.Mat[i] = (int*)calloc(m, sizeof(int) * m);
	}
}

void main(){
	//생성된 행렬 개수를 세는 변수.
	i = 0;
	//행렬구조체의 주소가 저장되는 곳. 배열로 쉽게 접근할 예정이다.
	Matrix *MatBox;
	//초기 행렬 초기화. 초기 모든 행렬 원소가 0이 되도록 한다.
	Matrix initMat;
	MatBox[0] = initMat;
	//안내문
	printf("최대 5x5 행렬을 지원합니다.\n\n");
	printf("행렬의 값을 텍스트로 입력해주세요. ','는 열을 전환하고 '.'는 행을 전환합니다.\n");
	printf("숫자와 , . 외의 값을 입력하시면 에러납니다...\n");
	printf("0이라고 생략하지 말아주세요!\n");
	//행렬 입력
	getMatrix(initMat);

	//작동 중에 해야할것
	while(1){
		//행렬추가

		//전치

		//리듀스

		//역행렬

		//합

		//곱

		//Eigenvalue

		//Eigenvector
	}
}

6. 그냥 코틀린 배울까?

반응형

'개발 기록 > 행렬 계산기' 카테고리의 다른 글

행렬 계산기 개발 일지 - 6  (0) 2021.05.23
행렬 계산기 5일차  (0) 2021.05.12
행렬계산기 개발 4일차...  (0) 2021.05.03
행렬 계산기 개발 3일차...  (0) 2021.05.02
행렬 계산기 개발 2일차...  (0) 2021.04.05