2012-07-13 68 views
-1

我在毕业设计项目中将一组记录作为案例研究。在我编写的代码中,我创建了一个结构数组,并输入int的数组 中的结构的id,以使排序更容易,但是当它运行时它会卡住。通过编号排序结构数组

#include<iostream.h> 
struct book{ 
    char Bname[8], Bsubject[8]; 
    int copyies, Bid, Bfound; 
} a[100]; 

void Ider(book a[],int r[],int index){ 
    for(int i=0;i<index;i++) 
     r[i]=a[i].Bid; 
} 

void swap(int &a,int &b){ 
    int c=a; 
    a=b; 
    b=c; 
} 

void Bublesort(int a[],int n){ 
    for(int j=0;j<n;j++) 
    for(int i=1;i<n-1;i++) 
     if(a[i]>a[i+1]) 
      swap(a[i+1],a[i]);     
} 

int bsearch(int b[],int key,int first,int last){ 
    int midel=(first+last)/2; 
    for(int i=0;i<last;i++){ 
     if(b[midel]==key) 
      return midel; 
     else 
      if(b[midel]>key) 
       return bsearch(b,key,first,midel-1); 
      else 
       if(b[midel]<key) 
        return bsearch(b,key,midel+1,last); 
    } 
} 

int main(){ 

    int r,i, index=0,m[100]; 
    char ch; 

    do{ 
     cout<<"Enter your"<<index+1<<" Book id"<<" "; 
     cout<<endl; 
     cin>>a[index].Bid; 
     cout<<"Enter your"<<index+1<<" Book name"<<" "; 
     cout<<endl; 

     cin>>a[index].Bname; 

     cout<<"Enter your"<<index+1<<" Book subject"<<" "; 
     cout<<endl; 

     cin>>a[index].Bsubject; 
     index++; 
     a[index].Bfound++; 
     a[index].copyies++; 
     if(index==99) 
      break; 

    quite : cout<<"Do you want to continue"; 
     cin>>ch; 

    } while(ch=='y'); 

    Ider(a,m,index); 
    Bublesort(m,index); 

    char p; 

    do{ 
     cout<<"Do you want to search?"<<endl; 
     cin>>p; 
     cout<<"enter your id"; 
     cin>>i; 
     r=bsearch(m,i,0,index); 
     cout<<a[r].Bfound<<"   "; 

    } while(ch=='y'); 

    system("pause"); 
    return 0; 
} 

当它到达bublesort()它挂起并没有给出任何输出,但为什么?

+0

我没有看到任何'oop'这里,只是一个结构和功能。这应该是面向对象吗? – crashmstr 2012-07-13 17:19:25

+0

thanx在这里寻求帮助 – 2012-07-13 17:22:21

+0

@AbdallaAdam:不是。这段代码会在C语言中进行编译(除了包含 [顺带一提,这个头文件已被弃用,它应该是]),这不是OO语言......暗示代码中没有面向对象。无论你想要还是需要它是一个完全不同的问题,但不应该将该问题标记为OOP – 2012-07-13 17:24:28

回答

0

其中还有一些问题:一次一次地将数组遍历数组,直到它完全排序。你的只能在阵列上一次。

C example

Bubble sort (Wikipedia)

+0

谢谢我知道错误的位置 – 2012-07-13 18:38:12