2012-01-03 2 views
0

나는 다음과 같은 오류가 - 나 오류를 찾기 위해 도와주세요 :무리한 오류는 일종의

9 IntelliSense: expected a '}'  70 4 

는 코드의 끝 부분에 포인트 -하지만이 열린 {아무데도 없습니다! 왜??

8 IntelliSense: expected a ';'  57 1 

{void 메인의 뒤에는 왜 넣어야합니까? 공허함의 메인 뒤에 ?? 코드의 beginig에

Error 7 error C1075: end of file found before the left brace '{' at  70 1 

점 - 왜 ??? 여기

  if(first < last) 
     { 
      middle=(first+last)/2; 
      merge_sort(a,first,middle); 
      merge_sort(a,middle+1,last); 
      merge(a,first,middle,last); 
     { 

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

void merge(int *a,int p,int q,int r) 
{ 
    int i=p,j=q+1,k=0; 
    int* temp=(int*)calloc(r-p+1, sizeof(int)); 
    while ((i<=q)&& (j<=r)) 
     if(a[i]<a[j]) 
        temp[k++]=a[i++]; 
     else 
        temp[k++]=a[j++]; 
    while(j<=r) // if(i>q) 
    temp[k++]=a[j++]; 
while(i<=q) // j>r 
    temp[k++]=a[i++]; 

    for(i=p,k=0;i<=r;i++,k++) // copy temp[] to a[] 
      a[i]=temp[k]; 
    free(temp); 
} 

void merge_sort(int *a,int first, int last) 
{ 
    int middle; 
      if(first < last) 
      { 
       middle=(first+last)/2; 
       merge_sort(a,first,middle); 
       merge_sort(a,middle+1,last); 
       merge(a,first,middle,last); 
      { 
} 

void main() 
{ 

    int a[] = {9, 7, 2, 3, 5, 4, 1, 8, 6, 10}; 
    int i; 

    merge_sort(a, 0, 9); 

    for (i = 0; i < 10; i++) 
     printf ("%d ", a[i]); 
+5

항상 중괄호를 사용하고 이러한 오류를 방지하십시오. 당신은 이것이 컴파일 타임 오류라고 운 좋았을뿐입니다. –

+1

아마도 코드를 들여 쓰기하는 편집기를 사용하고 있을까요? –

+1

질문에서 왜 나쁜 코드를 변경 했습니까? 그게 분명히 문제 였고, 이제는 기본적으로 Q와 As를 무의미하게 만들었습니다. 설명을 기다리면서 그것을 되돌려 놓습니다. – paxdiablo

답변

2

중괄호는 여기에 일치하지 않습니다.

if(first < last) 
{ 
     middle=(first+last)/2; 
     merge_sort(a,first,middle); 
     merge_sort(a,middle+1,last); 
     merge(a,first,middle,last); 
{ 
2

당신은 중괄호를 닫는하지만, 두 번째 레이어를 열고 아닙니다. 들여 쓰기를 수정하면 많은 오류가 마술처럼 사라집니다.

0

if(first < last) 블록의 폐쇄 중괄호 개구 브레이스 아니라 중괄호 폐쇄된다. 그게 네 잘못이야.

0

올바른 버전 : 또한

피하기 : 당신이 int로하고 반환 0을 사용하는 것이 무효 변경해야합니다 (경고 '주'의 반환 형식은 'INT'아니다); 메인의 끝에서.

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

void merge(int *a, int p, int q, int r) { 
int i = p, j = q + 1, k = 0; 
int* temp = (int*) calloc(r - p + 1, sizeof(int)); 
while ((i <= q) && (j <= r)) 
    if (a[i] < a[j]) 
     temp[k++] = a[i++]; 
    else 
     temp[k++] = a[j++]; 
while (j <= r) // if(i>q) 
    temp[k++] = a[j++]; 
while (i <= q) // j>r 
    temp[k++] = a[i++]; 

for (i = p, k = 0; i <= r; i++, k++) // copy temp[] to a[] 
    a[i] = temp[k]; 
free(temp); 
} 

void merge_sort(int *a, int first, int last) { 
int middle; 
if (first < last) { 
    middle = (first + last)/2; 
    merge_sort(a, first, middle); 
    merge_sort(a, middle + 1, last); 
    merge(a, first, middle, last); 
} 
} 
int main(int argc,char* argv[]) { 

int a[] = { 9, 7, 2, 3, 5, 4, 1, 8, 6, 10 }; 
int i; 

merge_sort(a, 0, 9); 

for (i = 0; i < 10; i++) 
    printf("%d ", a[i]); 

return 0; 

}