소개
이 프로젝트에서는 버블 정렬 알고리즘을 사용하여 프로그래밍 강좌 목록을 정리하는 방법을 배우게 됩니다. 강좌는 사전식 순서로 정렬되어, 학습한 프로그래밍 언어를 쉽게 확인하고 요약할 수 있습니다.
👀 미리보기
$ gcc courses.c -o courses
$ ./courses
ASP
ASP.NET
BASIC
C
C#
C++
COBOL
JAVA
PASCAL
PHP
🎯 과제
이 프로젝트에서 다음을 배우게 됩니다:
- 배열의 길이를 올바르게 계산하는 방법
- 정렬 함수의 매개변수 유형을 수정하는 방법
- 정렬 알고리즘에서 비교 및 교환 로직을 수정하는 방법
🏆 성과
이 프로젝트를 완료하면 다음을 수행할 수 있습니다:
- 버블 정렬 알고리즘을 사용하여 프로그래밍 강좌 목록을 정리합니다.
- 적절한 배열 길이 계산 및 함수 매개변수 유형의 중요성을 이해합니다.
- 정렬 알고리즘에서 올바른 비교 및 교환 로직을 적용합니다.
- 단계별 지침을 따르고 원하는 결과를 얻기 위해 기존 코드를 수정하는 능력을 보여줍니다.
배열 길이 계산 수정
이 단계에서는 courses 배열의 길이를 올바르게 계산하는 방법을 배우게 됩니다.
/home/labex/project/디렉토리에 있는courses.c파일을 엽니다.다음 코드 줄을 찾습니다:
int n = strlen(courses);이 줄은
strlen함수를 사용하여courses배열의 길이를 계산하는데, 이는 잘못되었습니다.strlen함수는 문자열의 길이를 계산하는 데 사용되며, 배열에는 적합하지 않습니다.위의 줄을 다음으로 바꿉니다:
int n = sizeof(courses) / sizeof(courses[0]);이 줄은
sizeof연산자를 사용하여courses배열의 전체 크기를 계산한 다음, 단일 요소의 크기로 나누어 배열의 요소 수를 구합니다.
정렬 함수의 매개변수 타입 변경
이 단계에서는 sort 함수의 매개변수 유형을 변경하는 방법을 배우게 됩니다.
courses.c파일에서sort함수 정의를 찾습니다:void sort(char p[], int n)매개변수 유형을
char p[]에서char *p[]로 변경합니다. 업데이트된 함수 정의는 다음과 같아야 합니다:void sort(char *p[], int n)이 변경은 문자열 배열 (포인터 배열) 을 다루고 있기 때문에 필요하며, 단일 문자열을 다루는 것이 아닙니다.
비교 및 스와핑 로직 수정
이 단계에서는 sort 함수에서 비교 및 스와핑 로직을 수정하는 방법을 배우게 됩니다.
sort함수에서 다음 코드를 찾습니다:if (k != j) { tmp = p[k]; p[k] = p[i]; p[i] = tmp; }조건
if (k != j)를if (k != i)로 바꿉니다. 업데이트된 코드는 다음과 같아야 합니다:if (k != i) { tmp = p[k]; p[k] = p[i]; p[i] = tmp; }이 변경은 현재 반복 (인덱스
i로 표시됨) 에서 가장 작은 요소가 발견되었는지 확인하기 위해 필요합니다.
이 세 단계를 완료하면 courses.c 파일이 컴파일 및 실행 준비가 됩니다. 이제 다음 단계로 진행할 수 있습니다.
sort함수에서// TODO:섹션을 다음과 같이 완성합니다:{ if (strcmp(p[j], p[k]) < 0) { k = j; } }다음 명령을 실행합니다:
gcc courses.c -o courses
./courses
- 프로그램이 예상 출력을 생성하는지 확인합니다.
ASP
ASP.NET
BASIC
C
C#
C++
COBOL
JAVA
PASCAL
PHP
요약
축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.



