반응형

개발 기록/행렬 계산기 9

행렬 계산기 개발하며 배운 것 - Call by value, Call by Reference, 등가포인터, 다차원배열 등...

구조체 선언 시에는 초기화가 불가능하다. visual studio에서는 가능했었던 것으로 기억하는데, GCC를 이용해서 컴파일 할 때에는 이게 안된다. 참고할 만한 링크 https://www.linuxquestions.org/questions/programming-9/gcc-error-%91foo%92-has-no-member-named-%91bar%92-877951/ 함수(기능)별로 구분하고 그에 해당하는 기능들을 하나씩 추가해서 테스트 우선해보는 방식으로 작성하는 것이 좋다. Call by value, Call by reference를 구분해야만한다. C언어는 공식적으로 Call by value만을 지원한다. 그리고 Call by reference를 pointer를 통해서 흉내낸다. 다른 언어보다 C..

행렬 계산기 개발 일지 - 8

남은 자료형에 의한 에러, indices의 쓰레기값 미관리에 의한 에러, call by pointer 문제까지 모두 해결하였다. 텍스트를 행렬로 바꾸는기능은 어떻게 완성을 했다. 겨우 이 정도 사이즈의 프로그램이긴 하지만, 디버거를 제대로 써본적도 처음이라 뭐가 뭔지도 제대로 모르고 우왕좌왕하고 너무 정신없었다. 그리고 무엇보다 아직 언어의 이해도가 충분하지 않다는 것을 알게 되었다. call by value와 call by reference(C언어의 경우에는 pointer로 이를 대체한다.)를 구분을 못했다는 게 좀 컸던 거 같다. 그리고 다차원배열을 등가 포인터로 변환하는 것도 제대로 몰랐었고. 일단은 계산기 개발은 여기서 멈추고, C언어 자체에 대한 공부를 더 깊이있게하고, 컴퓨터구조와 운영체제 공..

행렬 계산기 개발 일지 - 7

문제가 있는 함수 를 아예 따로 때와서 디버깅을 했다. 하면서 느낀건... 함수 내부를 복잡하게 하느니, 차라리 하나의 기능에 대해서 하나의 함수를 반드시 만들자. 자료형 오류는 항상 쉽게 발생한다. 동적타이핑이 되는 언어가 아니라면 반드시 자료형에 대한 설계도 프로그래밍 전에 하자. 코드에 손대기 전에 프로그램 설계를 반드시 하자....라고 할 때 하자...라고 할 때 하자...라고 할 때 하자... 아예 test.c로 이름 붙이고 새로 작성한 함수. 아래는 디버깅 결과다. 다행히도 에러도 경고도 안뜬다. 기쁘다. #include #include #include #define TEXT_LENGTH 512 #define MATMAXNUMBER 10 #define ERRORTEST printf("no er..

행렬 계산기 개발 일지 - 6

컴파일 에러가 너무 심각해서 기능 구현보다 에러를 먼저 손보기로 했다. 어떻게 아직까지도 세그먼트 에러를 내는지... #include #define TEXT_LENGTH 512 #define MATMAXNUMBER 10 //matData은 행렬의 주소, *matData은 행렬의 하나의 행을 지정, **matData은 행렬의 하나의 원소(열)를 지정한다. typedef struct Matrix{ int n; int m; //행렬의 행과 열의 크기 char ** matData; //행렬의 data char * textMat; } Matrix; void initializeMatrix(Matrix matStruct); void getMatrix(Matrix matStruct); void showMatrix(Ma..

행렬 계산기 5일차

해결해야할 것 컴파일 에러 WIN32 구현 추가로 해결할 것 소수점 처리하기 : .감지시 .이후의 숫자 세는 counter를 사용. 문자 입력 모듈을 따로 함수로 빼내기. 코드가 너무 더러움. #include #define TEXT_LENGTH 512 //matData은 행렬의 주소, *matData은 행렬의 하나의 행을 지정, **matData은 행렬의 하나의 원소(열)를 지정한다. typedef struct Matrix{ int n, m = 0;//행렬의 행과 열의 크기 char ** matData;//행렬의 data char * textMat; } Matrix; void initializeMatrix(Matrix matStruct); void getMatrix(Matrix matStruct); vo..

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

1. transposeMatrix()함수까지 구현은 했다. 2. 메모리 회수 함수가 필요할 것같다. 3. reduceMatrix의 구현이 사실 핵심이자 큰 목표이므로 일단은 reduceMatrix까지만 구현하기로 했다. 다른 공부해야할 것들도 너무 많고, 구현하면 할 수록 스스로 원하는 기능이 자꾸 늘어난다. 계속하다간 감당이 불가능할 것만 같다. 4. 마지막으로는 getMatrix에서 소수점 입력시 처리 과정을 구현하려고한다. 아 난 대체 왜 정수만 들어올거라고 생각한걸까............ /* 해결된 것 getMatrix에서 행,열 크기 제한 걸기***** showMatrix 함수 만들기***** initializematrix를 getMatrix 안에 넣기***** 해결해야할 것 transpose..

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

1. 공부한답시고 2주정도 개발을 멈췄었다. 2. 그때문에 뭘 썼는지 다 까먹었으나,,, 주석이 날 살렸다... 3. 입력 행렬의 크기 제한과 행렬 출력함수를 작성했다. 4. 행렬 수정 함수를 작성했다. 5. 이제 각종 행렬 연산함수를 작성해야한다. 6. 차라리 헤더함수와 여러 .c 파일로 만들어서 컴파일하고 싶은데... 어떻게 하는 지 잘 모르겠다. makefile로 할 수도 있겠지만 문제는 플랫폼이 구름IDE이라... 어떻게 하는 지 좀 검색을 해봐야할 듯 하다. /* 행렬 계산식 인식은 당장은 무리이므로 두개 연산 먼저 하는 걸로 하도록 하자.. getMatrix에서 행,열 크기 제한 걸기***** showMatrix 함수 만들기***** editMatrix를 기존 식을 보여주고, 그 식 안에서 수..

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

1. 문자 인식 방법 중 온점을 제거했다. 프로그램을 복잡하게 만드는 것 같아서. 2. 대신 행렬의 크기를 먼저 받는 방법을 택했다. 3. 예외처리가 초기에 생각한 것보다 해야할 것이 많았다. 내일은 text로 받은 행렬의 마지막 부분에 ,이 없을 경우를 알고리즘으로 만들 예정이다. 아무래도 다음 문자가 NULL인지로 확인하는 게 쉽지 않을까 싶다. 4. 이 속도로는 이번주 내로는 main 함수도 못채울거 같다. // 5x5까지 지원하는 행렬 계산기를 만든다. // 처음 생성시 몇 행렬인지 먼저 받는다. // 그 후 그에 맞게 text를 수령하고 유효성검사 규칙에 맞는지 확인한다. // 행렬을 생성한다. //마지막 부분에 , 안찍어 줬을 때 처리하는 방법 작성해야한다. #include //행렬구조체 gl..

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

1. 5x5까지 지원하는 행렬 계산기를 만들 것이다. 2. 행렬을 숫자와 쉼표와 온점을 이용해 text형태로 받을 것이다. 마우스 사용을 줄이면 사용자 이용에 조금 더 편의를 줄 수 있지 않을까 싶어서. 3. text를 수령하고 유효성검사 규칙에 맞는지 확인한다. 4. 최종적으론 MFC나 NDK로 PC와 안드로이드로 프로그램 배포를 하고자한다. 5. 사실 코틀린을 쓰고 싶지만 모르고 배우기엔 시간이 부족하고 간단한 프로젝트에 그렇게 힘들여야되나 싶기도 하고... 그냥 이미 아는 C로 쓸란다. // 5x5까지 지원하는 행렬 계산기를 만든다. // 처음 생성시 몇 행렬인지 먼저 받는다. // 그 후 그에 맞게 text를 수령하고 유효성검사 규칙에 맞는지 확인한다. // 행렬을 생성한다. #include //..

반응형