본문 바로가기

Computer & Program122

구조체를 통한 링크드 리스트의 예 #include struct AA{ int a; struct AA *p; // 이것이 바로 링크드 리스트!! // 즉 그 구조체에 관한 주소값을 가지고 있는 것이다. }; void main() { struct AA x, y, z; struct AA *i; x.a = 10; y.a = 20; z.a = 30; x.p = &y; y.p = &z; z.p = NULL; struct AA k; k.a=40; k.p=y.p; y.p=&k; x.p=&k; for(i=&x; i != NULL; i=i->p){ printf("%d\n", i->a); } } 2009. 3. 4.
문자열 출력 예 // 첫번째 예제 #include void main() { FILE *fp; char ch; fp = fopen("c:\\sample.txt", "r"); // sample.txt로 부터 Read(r) while(1){ ch=fgetc(fp); if(ch==EOF) // 문장의 끝까지 break; printf("%c", ch); } fclose(fp); } // 두번때 예제 #include //문자열로 출력 void main() { FILE *fp; char ch[100]; // 여유있게 100byte읽어 옮 fp = fopen("c:\\sample.txt", "r"); while(1){ fgets(ch, 100, fp); // fp에서 100byte만큼 읽어서 ch에 저장 2009. 3. 4.
이름과 숫자 1~4까지의 답 10개를 입력 받아 O,X 표시 및 평균 및 최고득점자와 최소 득점자 출력하는 로직 // 이름과 숫자 1~4까지의 답 10개를 입력 받아 O,X 표시 및 평균 및 최고득점자와 최소 득점자 출력하는 로직 #include #include #include #define Read "c:\\saram.txt" // 데이터가 저장되어 있는 파일 #define Wirt "c:\\result.txt" // 결과값을 저장할 파일 int max=0, min=100; // max는 커져야 함을 0이고 min은 작아져야 함으로 100이다. double avg=0; struct AA // 사람 이름과 답을 저장해 놓은 구조체 { char name[10]; char num[11]; }; void result(char *); // 데이터를 받아 계산한 후 result.txt로 저장하는 함수 void menu(ch.. 2009. 3. 4.
포인터 #include // 포인터의 포인터 예제 char *c[]={"ENTER", "NEW", "POINT", "FIRST"}; char **cp[]={c+3, c+2, c+1, c}; char ***cpp=cp; void main() { printf("%s\n", **++cpp); // PIONT printf("%s\n", *--*++cpp+3); // ER printf("%s\n", *cpp[-2]+3); // ST printf("%s\n", cpp[-1][-1]+1); // EW } // 단순한 포인터 예제 void main() { int x, y; int *px, *py; x=5; px=&x; y=*px/2+10; py=&y; printf("x : %d, y : %d\n", x, y); // 5, 1.. 2009. 3. 4.
이름과 점수를 입력받아 관리하는 프로그램 #include #include #include #define DataFile "c:\\data.txt" void menu(); void input_sub(); void append_sub(); void search_sub(); void view_sub(); struct AA{ char name[20]; // 이름 저장할 배열 int kor, eng, tot; // 국어, 영어, 총점 double avg; // 평균 }; void main() { char ch; while(1){ menu(); ch = getche(); // 문자하나를 받아 ch에 저장 switch(ch){ case '1' : input_sub(); break; case '2' : append_sub(); break; case '3' :.. 2009. 3. 4.
KMP 알고리즘... #include #include #include #include using namespace std; class KMP { private : char array[200], pat[10]; // array는 비교할 문자열, pat는 찾을 문자열 int temp; // 비교할 문자의 실패함수의 현재 값 int f_pat[10]; int i, k; // 함수 제어의 필요한 함수 int n, l; // n은 찾을 문자열의 길이 l은 비교할 문자열의 길이 public : KMP() { temp=-1, i=0, k=0; for(i=0; i input(); } void KMP::makefaile() { int val=0, p=0; // val은 실패함수에 들어갈 값이고 p는 함수 제어 변수이다. int j=1, i;.. 2009. 3. 4.
마방진~ Magic square #include class Magic { private : int row, col; // 2차 배열의 가로와 세로 값 int ro, co; // 변환시 가로와 새로 값 int **p; // 2차 동적 배열의 포인터 public : // 생성자 Magic(){ row=col=0; ro=co=0; } //소멸자 ~Magic(){ delete[] p; } void select(); // 초기 선택문 void evefun(int i); // 짝수 4의 배수 구현 함수 void oddfun(int i); // 홀수 구현 함수 void printout(int i); // 출력 함수 void change(int i); // 홀수 마방진의 이동 제어 함수 void swap(int i, int k, int n); // .. 2009. 3. 4.
Distinct Binary Tree(상이한 이진 트리) #include #include #include using namespace std; class Tree // 프로그램 전체를 제어하는 클래스 { private: int leftcount; // 비주얼하게 출력 시 왼쪽 자식을 표현하기 위한 변수 int rightcount; // 비주얼하게 출력 시 오른쪽 자식을 표현하기 위한 변수 public: Tree() // 생성자 함수 { leftcount = rightcount = 0; } ~Tree() // 소멸자 함수 { } void Input(); // 값을 입력 받는 함수 void Output(int); // Tree를 비주얼하게 출력하는 함수 unsigned long Treecount(int); // 입력 받은 노드로 만들 수 있는 트리 개수를 계산할 .. 2009. 3. 4.
Sort - 정렬 아래 소개할 프로그램은 난수파일(input.txt)파일로부터 난수들을 사용자가 지정한 수 만큼 읽어 들여와서 Insert(삽입), Quick(빠른), Heap(힙), Merge(합병), Selection(선택), Bubble(버블) 별로 정렬하고 그 결과를 화면에 보여주고 각 정렬하는데 걸리는 시간을 측정하는 프로그램이다. 필자가 작성한 별도의 코드에는 정렬 과정도 출력하는 코드도 있지만 그건 이 코드를 아~~~주 조금만 손 보면 가능한 것이기에 따로 올리지는 않겠다. 그리고 이번에 새로 사용해보는 SyntaxHighlighter 관계상 코드의 복사가 가능함으로 주요 코드만 올리겠다. 우선 코드를 보면... // 삽입 정렬 void Sort::insertsort() { int j=0; int i=1;//.. 2009. 3. 4.
10진수를 2진수로 변환하는 코드 아는 형의 권유로 아무생각 없이 만든 코드이다. 하는 일은 unsigned int형을 받아서(범위 : 0~4294967296, 단 int가 4바이트인 컴퓨터에서...) 2진수로 출력하는 형태이다. 아무 생각 없이 짤려면 아무생각 없이 만들수도 있었지만 왠지 자꾸 무의미한 메모리 할당이 싫어서 동적할당을 사용하였다. C++만 하다 C로 동적할당을 하려고 하니 이것도 쉽지 않았지만 가장 불편했던 것은 cout을 못쓰고 printf를 써야했던 점이다... 뭐 경우에 따라서는 printf가 편하기도 하지만 대체적으로 사용의 편의성에는 cout이 났다. printf는 표현의 편의성이 뛰어나지만... 아무튼 아래는 코드다. #include #include #include void main() { char* bana.. 2009. 3. 4.
과제 18 : 다아몬드 출력 //18day homework #include void main() { int input, blank; int i, k; printf("Line is ? : "); scanf("%d", &input); if(input%2 == 0) { input -= 1; } blank = input/2; k = blank; //다이아몬드 윗부분 while(k>0) { for(i = 0; i 2009. 3. 4.
7/15 두번째 강의 [출력형태] 실수형이난 다른 숫자를 출력할 경우 %(숫자1).(숫자2)(출력형태)가 있다. 숫자1은 총 칸 수로 10을 잡고 우측정렬로 출력하라는 소리이다. 만약에 자리수가 부졳할 경우 무시하고 출력하게 된다.여기서 .도 한칸을 차지하게 된다. 숫자2는 어제도 언급한 소수점 아래 자리로 소수점 아래자리 2를 입력하면 소수점 아래자리 3번째에서 반올림하여 2칸까지 출력하라는 소리이다. [오늘 배운 내용] 1. 정수형태와 실수형태의 표현 방법 2. printf와 scanf의 기본적인 사용 방법 및 옵션 3. 단일문자 및 기초적인 문자열 출력 방법 2009. 3. 4.