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…

Lưu Thành Vương viết 00:49 ngày 01/10/2018

for(int i=n;i>=vt;i–)
{
a[i]=a[i-1];
a[vt]=x;
n++;
}

Sửa thành:

for(int i=n;i>vt;i--){
   a[i]=a[i-1]
}
a[vt]=x;
n++;
"Master yourself, Master the Enemy" viết 00:51 ngày 01/10/2018

thank b nhiều :)))))))))

Bài liên quan
0