C언어 코드를 어떻게 고쳐야할까요? ㅠㅜ
조회수 2282회
n이 입력될 때까지 임의의 개수(최대 m개)의 정수 데이터를 입력 받아 n을 제외한 입력 데이터들을 배열 int v[ ]에 저장한 다음 입력된 데이터의 개수를 리턴하는 함수 int GetIntArray(int v[ ], int m, int n), 길이가 n인 배열 int v[ ]에서 연속된 크기의 정수들이 입력에 포함된 길이의 최소값 min과 최대값 max를 리턴하는 함수 void StretchMinMax(int v[ ], int n, int* min, int* max)를 작성하고, 이를 이용하여 0이 입력될 때까지 정수들을 입력 받아, 연속된 크기의 정수들이 입력에 포함된 길이의 최소값과 최대값을 출력하는 프로그램을 작성하시오. 단, 입력되는 정수의 개수는 최대 10개인 것으로 가정하고 만약 10개 이상 입력될 경우 그 다음 입력들은 무시하시오. 또한 같은 값은 중복해서 입력되지 않는 것으로 가정하시오. 예를 들어, 1 4 5 9 2 6 8 10 0이 입력된 경우, 1~2, 4~6, 8~10의 정수 값들이 입력 되었으므로, 연속된 크기의 정수들이 입력에 포함된 길이는 2, 3, 3 이며, 길이의 최소값은 2이며 최대값은 3이다. (Ex. 1 4 5 9 2 6 8 10 0 -> 2 3)
이런 식의 코드인데 max는 잘 나오는데 min은 2로만 나와서 어떤 식으로 고쳐야 값이 제대로 나올까요? ㅠㅜ
include
include
int GetIntArray(int v[], int m, int n); void StretchMinMax(int v[], int n, int* min, int* max); int main(void) {
int ary[10];
int length;
int min = INT_MAX;
int max = INT_MIN;
length=GetIntArray(ary, 10, 0);
StretchMinMax(ary, length, &min, &max);
printf("%d %d", min, max);
return 0;
} int GetIntArray(int v[], int m, int n) {
int i;
int num;
for (i = 0; i < 10; i++) {
scanf("%d", &num);
if (num == n)break;
v[i] = num;
}
return i;
} void StretchMinMax(int v[], int n, int* min, int* max) {//길이가 n인 배열 int v[ ]에서 연속된 크기의 정수들이 입력에 포함된 길이의 //최소값 min과 최대값 max를 리턴하는 함수
int i;
int scan;
int temp;
int j;
int length;
for (scan = 0; scan < n - 1; scan++) {
for (i = 0; i < n - 1; i++) {
if (v[i] > v[i + 1]) {
temp = v[i];
v[i] = v[i + 1];
v[i + 1] = temp;
}
}
}
for (i = 0; i < n; i++) {
length = 1;
for (j = i; j < n; j++) {
if (v[j] + 1 == v[j + 1]) {
length++;
if (*max < length) {
*max = length;
}
if (*min > length) {//min을고쳐야함-가장작은2가무조건저장됨
*min = length;
}
}
else break;
}
}
}
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력