2014-06-05 6 views
-1

유닉스를 사용하여 주 프로그램에서 사용자 정의 함수를 호출하는 데 문제가 있습니다. 프로그램은 주 프로그램의 번호 생성에만 실행됩니다. 하지만 내가 미리 정의 된 함수를 호출 할 때. 검색된 출력이 올바르지 않습니다. 내가프로그램 연결 중 출력이 잘못됨

ten random numbers in [1,1000] 
The list of Hundred random numbers are 

--This가 올바른 출력 결과 순위를주기 때문에 나는 출력을 얻을

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

void sort1(int []); 

int main(void) { 

int array[100]; 
int i , j; 

printf("ten random numbers in [1,1000]\n"); 

for (i = 1; i <= 10; i++) 
{ 
    generate random numbers 
} 

    printf("The list of Hundred random numbers are \n"); 

for (j = 1; j <= 10; j++) 
    { 
    //to print the random numbers 
    } 

sort1(array); 
return 0; 
} 


//this is my user defined function: sort1.c 

include <stdio.h> 

int sort1(int a[]) 
{ 
int array[100], i, d, swap, e=10; 

// algortithm 
    } 
} 

printf("Sorted list in ascending order:\n"); 

for (i= 0 ; i< e ; i++) 
    printf("%d\n", array[i]); 

} 

로 잘못

내 주요 프로그램 상태를했을 경우 누군가가 나 수정하시기 바랍니다 수 오름차순으로 나열 : -1442229816 -1444472964 코드에서

+0

일치하지 않습니다 a [손대지 않은]. 그리고 ('void sort1 (int a []) '로 선언 된, int sort1 (a [])로 구현 된 함수는 일치하지 않습니다. * link *. – WhozCraig

+0

어떻게하면이 코드를 수정할 수 있습니까? 명령을 사용하여 출력을 얻으려면? void sort1 (int []);을 int sort1 (a)로 변경해야합니까? 여전히 출력을 얻지 못했습니다. – user3708716

+0

하나의 경우,'array [100] sort()'함수를 호출 한 다음, 중단되는 모든 것을 고칩니다. (함수 전체에서'array'가 나타나는 대신 함수 전체가 깨질 것입니다.) 나머지는 내가 호출합니다. 'srand()'도 무작위 생성기를 뿌릴 수 있습니다. 그럴 수도 있습니다. – WhozCraig

답변

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

void sort1(int []); 

int main(void) { 
    int array[100]; 
    int i; 

    printf("ten random numbers in [1,1000]\n"); 

    for (i = 1; i <= 10; i++) 
    { 
    array[i] = rand()%1000 + 1; 
    } 

    printf("The list of Hundred random numbers are \n"); 

    for (i = 1; i <= 10; i++) 
    { 
    printf("Element[%d] = %d\n", i, array[i]); 
    } 
    //Up to here it's ok but you have set the values in the positions 1-10 of the array so keep consistent with it 

    sort1(array); 

    printf("Sorted list in ascending order:\n"); 

    for (i= 1 ; i<= 10 ; i++) 
    printf("%d\n", array[i]); 
    return 0; 
} 

void sort1(int a[]) 
{ 
    int i,swap,sorted=0; 
    while(sorted==0){ //flag to know if array is sorted 0 means not sorted. 
    sorted=1; // we set the flag to sorted at start of sweep 
    for (i= 1 ; i<= (10-1); i++) //sweep through array 
    { 
     if (a[i] > a[i+1]) //check if sorted 
     { 
      swap = a[i]; 
      a[i] = a[i+1]; 
      a[i+1] = swap; 
      sorted=0; //if not sorted set flag to 0 and swap 
     } 
    } 
    } 
} 

주요 문제점은 :

1) 어레이 [100] sort1 함수 초기화되지 않는다.

2) 나는 당신의 정렬 알고리즘을 이해하지 못하지만 어떠한 경우에도 초기화되지 않은 [0]의 값을 검사 할 때마다 매번 사용하는 배열 위치를 돌보고 일관성을 유지해야합니다.

3) 함수의 프로토 타입은`당신은 배열에 전달 떠나 아무런 명확한 내용으로`sort1` 기능에 불확정 배열,`배열 [100]`로컬 변수를 분류하고

관련 문제