본문 바로가기
C/☞

[57] 연습문제 : 더블 포인터

by TR. 2020. 7. 27.
    // # 학생성적관리
    // ex)
    // 학번     국어  수학  
    // 0000    0    0    
    // 0000    0    0     
    // 0000    0    0      
    // ...
 
    int run = 1;
    while(run){
        printf("------- STUDENT MANAGER-------\n");
        printf("code\t국어\t수학\n");
        printf("------------------------------\n");
        printf("1) 추가\n2) 수정\n3) 삭제\n4) 종료\n");
        printf("------------------------------\n");
        printf("메뉴선택: ");
        int sel;
        scanf("%d", &sel);

        if(sel == 1){}
        else if(sel == 2){}
        else if(sel == 3){}
        else if(sel == 4){ break; }


    }
더보기
void main(){

	srand(time(0));

	// 학번  국어   수학

	int** pp = 0;
	int count = 0;

	int num = 0;

	int run = 1;
	while(run){
		printf("학번\t국어\t수학\n");
		for(int i=0; i<count; i++){
			printf("[%d] > %d점\t%d점\n", pp[i][0], pp[i][1], pp[i][2]);
		}

		printf("[1]추가\n");
		printf("[2]삭제\n");

		printf("메뉴 선택 : ");
		int choice = 0;
		scanf_s("%d", &choice);

		if(choice == 1){
			if(count == 0){
				pp = new int*[1];

				pp[0] = new int[3];
			} else if(count > 0){
				int** temp = pp;

				pp = new int*[count + 1];
				for(int i=0; i<count; i++){
					pp[i] = temp[i];
				}

				delete[] temp;

				pp[count] = new int[3];
			}

			int hakbun = 1000 + num;
			int kor = rand() % 100 + 1;
			int eng = rand() % 100 + 1;

			pp[count][0] = hakbun;
			pp[count][1] = kor;
			pp[count][2] = eng;

			count = count + 1;
			num = num + 1;
		}
		else if(choice == 2){
			printf("삭제할 학번을 입력하세요 : ");
			int del_hakbun = 0;
			scanf_s("%d", &del_hakbun);

			int del_idx = -1;
			for(int i=0; i<count; i++){
				if(pp[i][0] == del_hakbun){
					del_idx = i;
				}
			}

			if(del_idx == -1){
				printf("[메세지]해당 학번은 존재하지 않습니다.\n");
				continue;
			}

			if(count == 1){
				pp = 0;
				count = 0;
				num = 0;
			}else if(count > 1){
				int** temp = pp;

				pp = new int*[count - 1];

				int j = 0;
				for(int i=0; i<count; i++){
					if(i != del_idx){
						pp[j] = temp[i];
						j = j + 1;
					}
				}
				delete[] temp[del_idx]; // 키포인트 
				delete[] temp;
			}

			count = count - 1;
		}
	}

 

 

'C > ' 카테고리의 다른 글

[59] 구조체와 배열  (0) 2020.07.27
[58] 구조체  (0) 2020.07.27
[56] 더블 포인터  (0) 2020.07.27
[55]-A. 가변 배열 컨트롤러  (0) 2020.07.27
[55] 가변 배열 컨트롤러  (0) 2020.07.27

댓글