반응형
문제가 있는 함수 를 아예 따로 때와서 디버깅을 했다.
하면서 느낀건...
- 함수 내부를 복잡하게 하느니, 차라리 하나의 기능에 대해서 하나의 함수를 반드시 만들자.
- 자료형 오류는 항상 쉽게 발생한다. 동적타이핑이 되는 언어가 아니라면 반드시 자료형에 대한 설계도 프로그래밍 전에 하자.
- 코드에 손대기 전에 프로그램 설계를 반드시 하자....라고 할 때 하자...라고 할 때 하자...라고 할 때 하자...
아예 test.c로 이름 붙이고 새로 작성한 함수. 아래는 디버깅 결과다. 다행히도 에러도 경고도 안뜬다.
기쁘다.
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define TEXT_LENGTH 512
#define MATMAXNUMBER 10
#define ERRORTEST printf("no error\n"); fflush(stdin);
typedef struct Matrix{
int n;
int m; // row and column
char ** matData; // data of matrix
char * textMat;
} Matrix;
void showMatrix(Matrix * matStruct){
printf("\n");
for(int i = 0; i < matStruct->n; i++){
for(int j = 0; j < matStruct->m; j++){
printf("%d ", (matStruct->matData)[i][j]);
}
printf("\n");
}
}
int main(){
Matrix * matStruct = (Matrix *)malloc(sizeof(Matrix));
// data and text Initialization
matStruct->n = matStruct->m = 2;
matStruct->textMat = "2,2,2,2";
// Matrix Initialization
matStruct->matData = (char**)malloc(sizeof(char**) * matStruct->n);
for(int i = 0; i < matStruct->n; i++){
(matStruct->matData)[i] = (char*)calloc(matStruct->m, sizeof(float) * matStruct->m);
}
int len = strlen(matStruct->textMat);
int num = 0; // temporary space for sum
int numtemp[10] = {0}; // temporary space for number from textMat
int z, i = 0;
int x, y = 0; // row and column
for(i = 0; i <= len; i++){
if(((matStruct->textMat)[i] == ',') || ((matStruct->textMat)[i] == '\0')){
for(int j = 1; j <= z; j++){
//multiply 10 for z-j times
for(int k = 1; k <= (z - j); k++){
numtemp[j - 1] = numtemp[j - 1] * 10;
}
num = num + numtemp[j - 1];
}
(matStruct->matData)[x][y] = num;
// initializtion
num = 0;
while(z){
numtemp[z] = 0;
z--;
}
y++;
if(y > matStruct->m){ y=0; x++; }
}
else{
// turn character to integer
numtemp[z] = (matStruct->textMat)[i] - '0';
z++;
}
}
showMatrix(matStruct);
}
반응형
'개발 기록 > 행렬 계산기' 카테고리의 다른 글
행렬 계산기 개발하며 배운 것 - Call by value, Call by Reference, 등가포인터, 다차원배열 등... (0) | 2021.05.30 |
---|---|
행렬 계산기 개발 일지 - 8 (0) | 2021.05.30 |
행렬 계산기 개발 일지 - 6 (0) | 2021.05.23 |
행렬 계산기 5일차 (0) | 2021.05.12 |
행렬계산기 개발 4일차... (0) | 2021.05.03 |