30/09/2018, 22:40
Lỗi menu trong c
// Lam menu
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>
int a[100];
void Nhapmang(int a[],int &n) //dung
{
printf("
Nhap so n la:");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
printf("Nhap Phan tu mang la : a[%d]=
",i);
scanf("%d",&a[i]);
}
}
void Xuatmang(int a[],int n) //dung
{
printf("Mang vua nhap la:");
for(int i=0;i<n;i++)
{
printf("
a[%d]=%d ",i,a[i]);
}
}
void Timkiemmang(int a[],int n) //dung
{
int k;
printf("Nhap k la vi tri can tim kiem:");
scanf("%d",&k);
if(k>=n)
{
printf("Nhap sai vi tri roi");
}
printf("Phan Tu can tim kiem la:");
for(int i=0;i<n;i++)
{
if(i==k)
printf(" a[%d]=%d ",i,a[i]);
}
}
int SNT(int x)
{
if(x<2)
return 0;
for(int i=2;i<sqrt(x);i++)
if(x%i==0)
return 0;
return 1;
}
void KiemtramangSNT(int a[],int n) //dung
{
for(int i=0;i<n;i++)
{
if(SNT(a[i])==1)
{
printf("Mang nay toan la SNT");
break;
}
else
printf("Mang nay k la mang toan SNT");
break;
}
}
void TachMangSNT(int a[],int n,int b[],int c[]) //dung
{
int nb=0;
int nc=0;
for(int i=0;i<n;i++)
{
if(SNT(a[i])==1)
{
b[nb]=a[i];
nb++;
}
else
{
c[nc]=a[i];
nc++;
}
}
printf("Mang toan so nguyen to la:");
for(int i=0;i<nb;i++)
{
printf(" %d ",b[i]);
}
printf("Mang con lai la:");
for(int i=0;i<nc;i++)
{
printf(" %d ",c[i]);
}
}
void Maxmang(int a[],int n) //dung
{
int max=a[0];
for(int i=0;i<n;i++)
{
if(a[i]>max)
{
max=a[i];
}
}
printf("So lon nhat trong mang la: %d ",max);
}
void Hoanvi(int *x,int *y)
{
int temp;
temp=*x;
*x=*y;
*y=temp;
}
void Sapxepmangtang(int a[],int n) //dung
{
for(int i=0;i<(n-1);i++)
{
for(int j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
Hoanvi(&a[i],&a[j]);
}
}
}
printf("Mang sau khi duoc sap xep la:");
for(int i=0;i<n;i++)
{
printf(" %d ",a[i]);
}
}
void Themmang(int a[],int &n) //sai
{
int vt,x;
printf("Nhap gia tri muon them vao la:");
scanf("%d",&x);
printf("Nhap vi tri muon them la:");
scanf("%d",&vt);
if(vt>=0 && vt<= n)
{
for(int i=n;i>=vt;i--)
{
a[i]=a[i-1];
a[vt]=x;
n++;
}
}
for(int i=0;i<n;i++)
{
printf(" %d ",a[i]);
}
}
void Xoamang(int a[],int &n) //dung
{
int vt;
printf("Nhap vi tri muon xoa la:");
scanf("%d",&vt);
for(int i=vt;i<(n-1);i++)
{
a[i]=a[i+1];
n--;
}
for(int i=0;i<n;i++)
{
printf(" %d ",a[i]);
}
}
int main()
{
int n,cn,vt,x,k;
int b[100],nb,c[100],nc;
do
{
printf(" Cac chuc nang:
");
printf("1. Nhap Mang
");
printf("2. Xuat Mang
");
printf("3. Tim kiem Mang
");
printf("4. Kiem tra Mang co phai SNT k
");
printf("5. Tach thanh 2 Mang
");
printf("6. Tim max
");
printf("7. Sap xep mang Theo chieu tang dan
");
printf("8. Them phan tu cho mang
");
printf("9. Xoa phan tu cho mang
");
printf("10. Thoat
");
printf("Moi ban chon [0-9]: ");
scanf("%d",&cn);
switch(cn)
{
case 1: Nhapmang(a,n); break;
case 2: Xuatmang(a,n); break;
case 3: Timkiemmang(a,n); break;
case 4: KiemtramangSNT(a,n); break;
case 5: TachMangSNT(a,n,b,c); break;
case 6: Maxmang(a,n); break;
case 7: Sapxepmangtang(a,n); break;
case 8: Themmang(a,n); break;
case 9: Xoamang(a,n); break;
case 10: exit(0); break;
default: printf("Ban chon sai moi chon lai menu
");
break;
}
}
while(cn!=10);
getch();
return 0;
}
Mình đang học về phần làm cái menu. thì khi m chạy đến cái hàm thêm thì nó bị chạy sai kq trong khi m làm cái hàm này chạy riêng thì vẫn đúng khi m run nó bị bị như sau: -VD:Mảng nhập: 21 54 97 thì sau khi thêm mảng 0 tại vị trí 1 thì : nó ra kq như sau: 21 0 0 97 0 0 . mn cho m biết m bị lỗi gì a ?? thank a lot…
Bài liên quan
Sửa thành:
thank b nhiều :)))))))))