2014-10-21 3 views
0

저는 지금 당장 해결책을 찾고 있었지만 아무것도 찾을 수 없었습니다.고정되지 않은 배열에 n 개의 정수를 추가하십시오.

EOF까지 사용자가 입력 한 (임의의 정수 값) 프로그램을 필요로하며이를 요약하여 다시 평균을 제공합니다.

배열을 사용해 보았지만 여기 내 실수는 무엇인지 잘 모르겠습니다. 고정 크기 배열로 작업 할 수있었습니다. 하지만 유연한 것이 필요해.이게 가능하니? 당신이하고있는 모든 또한이 때문에 작동하지 않을 수

int number = 0; 
int count = 0; 
while(scanf("%d", &number)!=EOF) 
{ 
    sum += number; 
    count++; 
} 

합산의 경우에 배열 될 필요가 없습니다

#include <stdio.h> 

int main() 
{ 
    int count = 3; 
    int numbers[count]; 
    long sum; 
    float average; 
    int i; 
    for (i = 0; i < count; i++) { 
    while (scanf("%d", &numbers[i]) != EOF) { 
     sum += numbers[i]; 
    } 
    } 
    average = (float)sum/count; 
    printf("Average of your numbers is: %.2f\n",average); 
    return 0; 
} 
+0

이 동적 메모리 할당을 어떻게 추가해야합니까? – smnk

+0

은''long sum = 0;''이어야합니다. – BLUEPIXY

+0

= 0 자체로 초기화하지 않습니까? – smnk

답변

-3

: 여기

는 내가 지금까지 무엇을 가지고 있습니다 개수는 상수로 가정합니다.

int count = 3; 
int numbers[count]; 
+0

나는 이것을 빨리 확인 하겠지만, 합계를 입력 된 숫자의 수로 나눌 수 있으려면 숫자도 계산해야합니다. – smnk

+0

문제 없음, int count = 0; 그때 안에 do {count ++; } – Sergey

+1

숫자를 계산할 때 비정상적인 do-while 코드 구조로 인해 버그가 발생합니다. – anatolyg

1

평균을 찾으려고한다면 실제로 sto 이 번호들을 다시 써라.

int count = 0; 
int sum = 0; 
int num = 0; 
double avg = 0.0; 

for(; scanf("%d", &num) != EOF; sum += num, count++) 
    ; 

avg = sum/count; 
0

OP로 확인한 후, 입력이 배열에 저장되지 않았는지 그는 상관하지 않습니다. 당신이 '를 y는'inputing 계속 입력 할 필요가 조금 번잡 할 수있다

int num=0; 
int sum=0 
int count=0; 

do 
{ 
    printf("Enter number:"); 
    scanf("%d", num); 

    sum += num; 
    count++; 

    printf("Proceed(y/n)?"); 
    scanf("%c", proceed); 

}while(proceed == 'y'); 

이 코드를하지만, 이것은 n 개의 입력을 입력의 현재 문제를 해결할 수 있습니다 :이 경우, 당신은이를 고려할 수 있습니다.

+1

나는 이전에이 방법을 사용했습니다. 하지만이 수업은 숙제이기 때문에 교사는 다른 입력 방법을 사용하지 말고 숫자와 EOF를 사용하지 말 것을 우리에게 들었습니다. – smnk

+0

그럴 경우 'while'식을 변경하면됩니다. 여전히 값을 배열에 저장할 필요는 없습니다. 내가 그것을 들여다 볼게. – user3437460

0

기존 배열을 채운 경우 배열의 크기를 다시 할당해야합니다. 이게 작동해야합니다 :

#include <stdio.h> 
#include <stdlib.h> 

int main() { 
    int input; 
    int size = 0; 
    int* arr = NULL; 
    int* temp = NULL; 

    long sum = 0; 
    float average = 0; 

    do { 
     scanf("%d", &input); 
     size++; 

     temp = (int*) realloc(arr, sizeof(int)*size); 

     if(temp != NULL) { 
      arr = temp; 
      arr[size-1] = input; 
     } 

     sum += input; 
    } while(input != 0); 

    average = sum/size; 
    printf("sum: %lu\n", sum); 
    printf("average: %f\n", average); 
    return 0; 
} 
관련 문제