2012-01-03 6 views
0

私は次のエラーを持っている - エラーを見つけるために私を助けてください:不当なエラーソート

9 IntelliSense: expected a '}'  70 4 

それは、コードの末尾にポイント - しかし、どこでも{何のオープンはありません!なぜ??

8 IntelliSense: expected a ';'  57 1 

これは{void mainの後に置かれますが、なぜ置きますか?ボイド主の後??

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

コードのbeginigを指し示す - なぜ???

ここ
#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

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

あなたはブレースを閉じますが、第二の層を開いていません。インデントを修正すると、多くのエラーが魔法のように消えます。

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; 

} 
関連する問題