준코딩

C언어 예외처리 버블정렬 본문

프로그래밍/C언어

C언어 예외처리 버블정렬

Ljunhyeob - App Dev 2019. 1. 9. 13:31

#include <stdio.h>

#include <string.h>

#include <stdlib.h>



void swap(int*, int*);

void stack(int*, int*);

void bubbleSort(int[], int);

int input_num(int *result, int form);

void swap(int*num1, int*num2) {

int temp;

temp = *num2;

*num2 = *num1;

*num1 = temp;

}


void bubbleSort(int num[], int size) {

int i, j;

for (j = 0; j < size - 1; j++) {

for (i = 0; i < size - 1; i++) {

if (num[i] > num[i + 1]) {

swap(&num[i], &num[i + 1]);

}

}

}

}


int input_num(int *result, int form) {

int i;

int j = 1;

int sign = 1;

int input_size;

char *str;

*result = 0;

str = (char *) malloc(sizeof(char) * form + 2);

while (1) {

sign = 1;

fgets(str, form + 2, stdin);

for (i = 0; i < form + 1; i++) {

if (str[i] == '\n') {

input_size = i;

break;

}

}

if (str[0] == 10) {

printf("Enter the number and press Enter. \n Please re-enter : ");

continue;

}

if (i == form + 1) {

printf("The input range has been exceeded. \n");

while (getchar() != '\n') {

}

printf("Please re-enter : ");

continue;

}


for (i = 0; i < input_size; i++) {

if (str[i] < 48 || str[i] > 57) {

if (str[i] != '\n') {

printf("Only integer greater than 0 can be entered.\n");

printf("Please re-enter : ");

sign = 0;

break;

}

}

}

if (sign == 0) {

continue;

}

for (i = 0; i < input_size; i++) {

*result = *result + (str[input_size - i - 1] - 48) * j;

j = j * 10;

}

break;

}

free(str);

return 0;

}

int main() {

int num[10];

int a, i, j;

int digit = 8;

for (a = 0; a < 10; a++) {

int digit = 8;

printf("Enter the %d number:", a + 1);

input_num(&i, digit);

num[a] = i;

}

printf("1.Sort 2.Queue 3.Stack  \n");

while (1) {

input_num(&j, digit);

if (j == 1) {

printf("Data before sorting: ");

for (a = 0; a < 10; a++) {

printf("%d ,", num[a]);

}

printf("\n");

bubbleSort(num, 10);

printf("Sorting data: ");

for (a = 0; a < 10; a++) {

printf("%d ,", num[a]);

}

break;

} else if (j == 2) {

int head=0;

printf("Queue.\n");

for (i = 0; i < 10; i++) {

printf("|  %d |↓\n",num[head]);

head++;

}

break;

} else if (j == 3) {

int top=9;

printf("Stack.\n");

for (i = 0; i <= 10; i++) {

printf("|  %d |↑\n",num[top]);

top--;

}

break;

} else

printf("You can only enter numbers between 1 and 3. \n");

printf(">>");

}

return 0;

}





실행창










'프로그래밍 > C언어' 카테고리의 다른 글

해시(선형 조사법)  (0) 2019.04.16
스택 힙 데이터영역  (0) 2019.04.09
단일 연결리스트 예외처리 완성본  (0) 2019.02.14
c언어 연결리스트 예외처리  (0) 2019.02.12
C언어 연결리스트  (0) 2019.01.28
Comments