Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save dalcon10028/826b1bff3539f7e47d5bb2be74015d75 to your computer and use it in GitHub Desktop.
Save dalcon10028/826b1bff3539f7e47d5bb2be74015d75 to your computer and use it in GitHub Desktop.
자료구조 7주차 레포트
#include <stdio.h>
int num[5000];
int flag=-1;
/* 함수를 미리정의 함으로써 함수의 위치를 자유로히 할 수 있다 */
int menu(void);
void all_numbers(void); void add_number(void); void delete_number(void); void bubbleSort(void);
void main(void){
int choice;
do {
choice = menu(); /* 선택한 메뉴를 치환 */
switch (choice) {
case 1: all_numbers(); /* 전체 배열 보기 */
break;
case 2: add_number(); /* 숫자 입력 */
break;
case 3: delete_number(); /* 숫자 삭제 */
break;
}
printf("\n");
} while (choice != 4);
}
/* 사용자가 메뉴를 선택하여 선택한 번호를 반환하는 함수. */
int menu(void) {
int i;
printf("정수형 배열의 입력, 삭제 프로그램\n");
printf("1.전체 배열 보기\n");
printf("2.숫자 입력\n");
printf("3.숫자 삭제\n");
printf("4.종료\n");
do {
printf("번호를 선택하세요: ");
scanf("%d",&i); /* 사용자가 입력한 아스키 문자를 정수로 저장 */
printf("\n");
} while (i < 1 || i>4); /* 1부터 4까지만 입력하게 함 */
return i; /* 사용자가 선택한 메뉴 번호를 반환 */
}
void all_numbers(void){
int i;
for (i=0; i<=flag; i++)
printf("num[%d]는 %d 입니다.\n", i, num[i]);
}
void add_number(void){
int newNum;
printf("추가할 숫자를 입력해주세요 : ");
scanf("%d", &newNum);
num[++flag] = newNum;
bubbleSort();
}
void delete_number(void){
int idx, i;
while(1){
printf("삭제할 숫자의 인덱스를 입력해주세요(인덱스는 0부터 시작입니다.) : ");
scanf("%d", &idx);
if(idx>flag){
printf("존재하지 않는 인덱스 입니다.\n");
continue;
}
else if(idx==flag){
flag--;
break;
}
else{
for( i=idx; i<flag; i++ )
num[i]=num[i+1];
flag--;
break;
}
}
}
void bubbleSort(void){
int i, j, temp;
for ( i=0; i<flag; i++ )
for ( j=i+1; j<=flag; j++ )
if (num[i]>num[j]) {
temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment