#define _CRT_SECURE_NO_WARNINGS
#define len 5
#include<stdio.h>
int binarySearch(int c[], int leng, int key);
int main()
{
int num[len], i, j;
int temp;
int ans;
FILE* fp1;
FILE* fp2;
for (i = 0; i < len; i++) {
printf("숫자를 입력하세요 : ");
scanf_s("%d", &num[i]);
}
for (j = 0; j < len; j++) {
for (i = 0; i < len - 1; i++)
{
if (num[i] < num[i + 1])
{
temp = num[i];
num[i] = num[i + 1];
num[i + 1] = temp;
}
}
}
fp1 = fopen("data1.txt", "w");
for (i = 0; i < len; i++)
{
fprintf(fp1, "%d\n", num[i]);
}
while (1)
{
printf("\n찾으려는 숫자를 입력하세요:");
scanf_s("%d", &ans);
if (ans == 'q')
{
printf("종료합니다");
break;
}
for (i = 0; i < len; i++)
{
if (ans == num[i])
{
printf("%d번째 줄에 있습니다", binarySearch(num,len,ans));
}
}
}
return 0;
}
int binarySearch(int c[],int leng,int key)
{
int low = 0;
int high = leng - 1;
int mid;
while (low <= high)
{
mid = low + (high - low) / 2;
if (key == c[mid])
return mid;
else if (c[mid] < key)
{
low = mid + 1;
}
else
high = mid - 1;
}
return -1;
}
편집기로 20개의 숫자를 한줄에 하나씩 써서 data.txt 파일을 생성하라.
단, 크기 순서로 저장하라
- 키보드로 임의의 숫자를 입력 받아, 이진 검색을 이용하여 그 숫자가 위 화일에서 몇 번쨰 줄에 있는지를 화면에 출력하는 프로그램(버블 소트)을 작성하라. 없으면 없음을 출력하라. 'q'를 입력 할 떄 까지 위 과정을 되풀이 하라.
이 코드로 실행해보면 줄의 값도 제대로 안나오고 q 입력했을 때 사진처럼 문장이 반복되어 나오네요. 혹시 어느 부분이 잘못됐는지 알 수 있을까요?