Đây là code bài ds số nguyên của em : Dùng vòng lặp switch thì bị báo lỗi call of nonfunction. Mọi người sửa giúp em cái, sắp nộp bài tổng hợp rồi. có bài đầy đủ cho em luôn thì càng tốt. Hihihihi..... Mã: #include<conio.h> #include<stdio.h> #include<iostream.h> #define dodai 100 type int kieu; int n; int a[100]; void nhap(int a[], int n) { for(int i=1;i<=n;i++) { printf("\nPhan tu thu a[%d]:",i); scanf("%d",&a[i]); } } void xuat(int a[], int n) { for(int i=1;i<=n;i++) { printf("%5d",a[i]); } } void chon(int a[], int n) {int i,x,m,j; for(i=1;i<n;i++) {int m=i; for(int j=i+1;j<=n;j++) if(a[j]<a[m]) m=j; if(m!=i) { x=a[i]; a[i]=a[m]; a[m]=x;} } return; } void chen(int a[], int n) {int j; for(int i=2;i<=n;i++) {int x=a[i];j=i-1; while(x<a[j]) { a[j+1]=a[j]; j--;} a[j+1]=x; } return; } void swap(int *c,int *d) {int a; a=*c; *c=*d; *d=a; return; } void noibot(int a[], int n) {for(int i=1;i<=n-1;i++) for(int j=n;j>=i+1;j--) if(a[j]<a[j-1]) swap(&a[j],&a[j-1]); return; } void Quick_Sort(int a[], int left, int right) { if(left<right) {int i=left;int j=right;int x=a[(left+right)/2]; do { while(a[i]<x) i++; while(a[j]>x) j--; if(i<=j){swap(&a[i],&a[j]);i++;j--;} }while(i<=j); Quick_Sort(a,left,j); Quick_Sort(a,i,right); } } void main() { int n,x,p,q,left,right; { int chon; do { clrscr(); cout<<"Danh sach dat so nguyen:"; cout<<"\nMENU: \n"; cout<<" 1. Nhap DS\n"; cout<<" 2. In DS\n"; cout<<" 3. SX chon\n"; cout<<" 4. SX chen\n"; cout<<" 5. SX noi bot\n"; cout<<" 6. SX nhanh\n"; cout<<" 7. Thoat\n"; cout<<"Nhap lua chon: ";cin>>chon; switch(chon) { case 1: clrscr(); printf("\nnhap so luong phan tu:"); scanf("%d",&n); nhap(a,n); cout<<"\nBam 1 phim bat ki de tro ve MENU! "; getch(); break; case 2: clrscr(); printf("\ndanh sach vua tao:\n"); xuat(a,n); cout<<"\nBam 1 phim bat ki de tro ve MENU! "; getch(); break; case 3: clrscr(); printf("\nDS sau khi SX chon:\n"); chon(a,n); báo lỗi tại đây xuat(a,n); cout<<"\nBam 1 phim bat ki de tro ve MENU!"; getch(); break; case 4: clrscr(); printf("\nDS sau khi SX chen:\n"); chen(a,n); xuat(a,n); cout<<"\nBam 1 phim bat ki de tro ve MENU!"; getch(); break; case 5: clrscr(); printf("\nDS sau khi SX noi bot:\n"); noibot(a,n); xuat(a,n); cout<<"\nBam 1 phim bat ki de tro ve MENU!"; getch(); break; case 6: int left,right; clrscr(); printf("\nDS sau khi SX nhanh:\n"); Quick_Sort(a,left,right); xuat(a,n); cout<<"\nBam 1 phim bat ki de tro ve MENU!"; getch(); break; default:break; } }while(chon!=7); return; } }
Bạn đã có 1 hàm chon() Bạn khai báo tiếp 1 biến với tên là chon cho lệnh switch nữa. Bạn thay hàm chon() thành một tên khác hoặc đổi tên biến chon thành tên gọi khác. Mã: #include<conio.h> #include<stdio.h> #include<iostream.h> #define dodai 100 type int kieu; int n; int a[100]; void nhap(int a[], int n) { for(int i=1;i<=n;i++) { printf("\nPhan tu thu a[%d]:",i); scanf("%d",&a[i]); } } void xuat(int a[], int n) { for(int i=1;i<=n;i++) { printf("%5d",a[i]); } } void chon(int a[], int n) {int i,x,m,j; for(i=1;i<n;i++) {int m=i; for(int j=i+1;j<=n;j++) if(a[j]<a[m]) m=j; if(m!=i) { x=a[i]; a[i]=a[m]; a[m]=x;} } return; } void chen(int a[], int n) {int j; for(int i=2;i<=n;i++) {int x=a[i];j=i-1; while(x<a[j]) { a[j+1]=a[j]; j--;} a[j+1]=x; } return; } void swap(int *c,int *d) {int a; a=*c; *c=*d; *d=a; return; } void noibot(int a[], int n) {for(int i=1;i<=n-1;i++) for(int j=n;j>=i+1;j--) if(a[j]<a[j-1]) swap(&a[j],&a[j-1]); return; } void Quick_Sort(int a[], int left, int right) { if(left<right) {int i=left;int j=right;int x=a[(left+right)/2]; do { while(a[i]<x) i++; while(a[j]>x) j--; if(i<=j){swap(&a[i],&a[j]);i++;j--;} }while(i<=j); Quick_Sort(a,left,j); Quick_Sort(a,i,right); } } void main() { int n,x,p,q,left,right; { int ch; do { clrscr(); cout<<"Danh sach dat so nguyen:"; cout<<"\nMENU: \n"; cout<<" 1. Nhap DS\n"; cout<<" 2. In DS\n"; cout<<" 3. SX chon\n"; cout<<" 4. SX chen\n"; cout<<" 5. SX noi bot\n"; cout<<" 6. SX nhanh\n"; cout<<" 7. Thoat\n"; cout<<"Nhap lua chon: ";cin>>ch; switch(ch) { case 1: clrscr(); printf("\nnhap so luong phan tu:"); scanf("%d",&n); nhap(a,n); cout<<"\nBam 1 phim bat ki de tro ve MENU! "; getch(); break; case 2: clrscr(); printf("\ndanh sach vua tao:\n"); xuat(a,n); cout<<"\nBam 1 phim bat ki de tro ve MENU! "; getch(); break; case 3: clrscr(); printf("\nDS sau khi SX chon:\n"); chon(a,n); xuat(a,n); cout<<"\nBam 1 phim bat ki de tro ve MENU!"; getch(); break; case 4: clrscr(); printf("\nDS sau khi SX chen:\n"); chen(a,n); xuat(a,n); cout<<"\nBam 1 phim bat ki de tro ve MENU!"; getch(); break; case 5: clrscr(); printf("\nDS sau khi SX noi bot:\n"); noibot(a,n); xuat(a,n); cout<<"\nBam 1 phim bat ki de tro ve MENU!"; getch(); break; case 6: int left,right; clrscr(); printf("\nDS sau khi SX nhanh:\n"); Quick_Sort(a,left,right); xuat(a,n); cout<<"\nBam 1 phim bat ki de tro ve MENU!"; getch(); break; default:break; } }while(ch!=7); return; } }