2017-05-13 5 views
-1

배열을 정렬하고 특정 숫자를 검색하는 프로그램을 작성하는 과제가 있습니다. 이미 수행 한 부분입니다. 사용자가 임의의 값을 500보다 작게 설정하는 크기로 배열을 초기화 하시겠습니까? 나는 알 수없는 크기가 아닌 알려진 크기로 어떻게하는지 안다. 입력/출력 예 : 는 "배열의 크기를 입력주십시오 : 5"배열을 지정된 크기로 1에서 500 사이의 임의의 값으로 초기화합니다.

답변

1

이 당신을 도울 것입니다.

int main(void) 
{ 
    int n,i; 
    n=rand()%500; // Get random value 
    int arr[n]; // Initialize the dynamic array 
    for(i=0;i<n;i++) 
     scanf("%d",&arr[i]); 
    // Do your stuff 
} 
+0

덕분에 사람을! 하지만 난 그것을 바꾸고 난 그냥 % r을 랜덤 값이 필요합니까? –

+2

VLA는이 경우에는 더 좋은 옵션이 아닙니다. ('n'이 큰 숫자인지 확인하지 않고 스택 오버플로를 일으킬 수 있습니다. http://stackoverflow.com/q/7326547/1606345 참조), 왜 안 되죠? 'malloc'? –

+0

@KeineLust 당신은 바로 메모리 할당에 관한 것입니다. 하지만 그는 이미 최대 500 개 범위를 지정했습니다. –

0

당신은 같은 것을 할 수 있습니다

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

void printArray(int* p, int size) 
{ 
    for (int j = 0; j < size; ++ j) printf("%d ", p[j]); 
    printf("\n"); 
} 

int main(void) { 
    srand(time(NULL)); // Start with a random seed based on time 

    int n = 0; 
    printf("Which array size do you need?\n"); 
    if (scanf("%d", &n) != 1 || n < 1) 
    { 
     printf("Wrong input\n"); 
     exit(0); 
    }; 

    printf("Creating random array of size %d\n", n); 
    int* p = malloc(n * sizeof(*p));     // Reserve memory 
    for (int j = 0; j < n; ++j) p[j] = rand() % 500; // Generate random numbers 

    printArray(p, n); // Print the result 

    free(p);    // free the allocated memory 

    return 0; 
} 
+0

모든 사람들에게 감사한다! –