Tổng Hợp bài tập cơ bản cho mảng 1 chiều

:conan: đây là những bài cơ bản đối với mảng 1 chiều
nhập xuất, tính toán, gộp, tách ghép, vvv
[AH]
Mã:
#include<stdio.h>
#include<math.h>
#define MAX 90000
int snt(int n);
void nhapmang(int a[],int n);
void xuatmang(int a[],int n);
void tinhtong(int a[],int n);
void chen(int a[],int &n);
void xoa(int a[], int &n);
void tim(int a[], int n);
void sapxep(int a[], int n);
void goptach(int a[],int b[], int &n);


int main()
{
	int a[MAX],b[MAX],n,chon;
	do
	{
		printf("\n 1. nhap mang");
		printf("\n 2. xuat mang");
		printf("\n 3. tinh tong");
		printf("\n 4. chen phan tu vao mang");
		printf("\n 5. xoa phan tu cua mang");
		printf("\n 6. tim phan tu");
		printf("\n 7. sap xep mang");
		printf("\n 8. ghep va tach mang\n");
		scanf("%d",&chon);
		switch(chon)
		{
			case 1:
				printf("\nnhap so phan tu cua mang\n");
				scanf("%d",&n);// gia su 0 < n < MAX
				nhapmang(a, n); break;
			case 2:
				xuatmang(a, n); break;
			case 3:
				tinhtong(a, n); break;
			case 4: 
				chen(a,n); break;
			case 5:
				xoa(a,n); break;
			case 6:
				tim(a,n); break;
			case 7:
				sapxep(a,n); break;
			case 8:
				goptach(a,b,n); break;
		}
		if (1 > chon || chon > 9)
			printf("nhap sai, moi nhap lai\n");
	}while(0<chon<9);
}
int snt(int n)
{
	if ( n <= 1)
		return 0;
	for ( int i = 2 ; i < n ; i ++)
		if (n%i==0)
			return 0;
	return 1;
}
void nhapmang(int a[], int n)
{
	for (int i = 0 ; i < n ; i ++)
		scanf("%d",&a[i]);
}
void xuatmang(int a[], int n)
{
	for (int i = 0 ; i < n ; i ++)
		printf("%d  ",a[i]);
}
void tinhtong(int a[], int n)
{
	int chon1;
	int tongchan=0;
	int tongle=0;
	int tongsnt=0;
	printf("\n1. tong so chan");
	printf("\n2. tong so le");
	printf("\n3. tong so nguyen to");
	scanf("%d",&chon1);
	switch(chon1)
	{
		case 1:	
			for (int i = 0 ; i < n ; i ++)
				if ( a[i]%2 ==0 )
					tongchan = tongchan + a[i];
			printf("tong chan cua mang la %d",tongchan);
			break;
		case 2:	
			for (int i = 0 ; i < n ; i ++)
				if ( a[i]%2 != 0 )
					tongle = tongle + a[i];
			printf("tong le cua mang la %d",tongle);
			break;
		case 3:
			for (int i = 0 ; i < n ; i ++)
				if ( snt(a[i])== 1)
					tongsnt = tongsnt + a[i];
			printf("tong snt cua mang la %d",tongsnt);
			break;
		default:
			printf("chon sai! Exit!!!");
			
	}
}
void chen(int a[], int &n)
{
	int chon2,sochen;
	printf("\n1. chen dau mang ");
	printf("\n2. chen cuoi mang ");
	printf("\n3. chen giua mang ");
	scanf("%d",&chon2);
	switch(chon2)
	{
		case 1:
			printf("nhap so can chen ");
			scanf("%d",&sochen);
			for ( int i = n ; i > 0 ; i-- )
				a[i]=a[i-1];
			a[0]=sochen;
			n++;
			break;
		case 2:
			printf("nhap so can chen ");
			scanf("%d",&sochen);
			a[n]=sochen;
			n++;
			break;	
		case 3:
			printf("nhap so can chen ");
			scanf("%d",&sochen);
			for ( int i = n ; i = n/2 ; i-- )
				a[i]=a[i-1];
			a[n/2]=sochen;
			n++;
			break;
		default:
			printf("chon sai! Exit!!!");
	}
}
void xoa(int a[], int &n)
{
	int k;
	printf("\nnhap vi tri muon xoa ");
	scanf("%d",&k);
	n--;
	for ( int i = k-1; i < n ; i ++)
		a[i]=a[i+1];
	printf("\n Done! Da xoa!!!");
}
void tim(int a[], int n)
{
	int sotim;
	int tmp=0;
	for(int i = 0 ; i < n ; i ++)
		if (sotim == i )
		{
			tmp++;
			printf("\n so can tim o vi tri %d",i+1);
			break;
		}	
	if ( tmp == 0)
		printf("\n k co so can tim trong mang");		
}
void sapxep(int a[],int n)
{
	int h,tmp;
	printf("\n1. sap xep theo chieu tang dan");
	printf("\n2. sap xep theo chieu giam dan");
	scanf ("%d",&h);
	switch(h)
	{
		case 1:
			for (int i = 0 ; i < n-1 ; i ++)
				for ( int j = i+1 ; j < n ; j ++)
					if ( a[j] <= a[i] )
						{
							tmp = a[i];
					 		a[i] = a[j];
					 		a[j] = tmp;		
						}
			break;		
		case 2:
			for (int i = 0 ; i < n-1 ; i ++)
				for ( int j = i+1 ; j < n ; j ++)
					if ( a[j] >= a[i] )
						{
							tmp = a[i];
					 		a[i] = a[j];
					 		a[j] = tmp;		
						}	
			break;
		default:
			printf("chon sai! Exit!!!");
	}
}
void goptach(int a[], int b[], int &n)
{
	int chon3,k,tmp=0;
	printf("\n1. Gop mang");
	printf("\n2. Tach mang");
	scanf("%d",&chon3);
	switch(chon3)
	{
		case 1:
			printf("nhap so phan tu cua mang moi muon gop");
			scanf("%d",&k);
			for (int i = 0 ; i < k ; i ++)
				scanf("%d",&b[i]);
			for (int i = n ; i < n+k ; i ++)
				{
					a[i]=b[tmp];
					tmp++;
				}
			n=n+k;
			for (int i = 0 ; i < n ; i ++)
			printf("%d  ",a[i]);
		case 2:
			printf("nhap so muon tach");
			scanf("%d",&n);
			for ( int i = n ; i < 9 ; i ++)
				{
					b[tmp]=a[i];
					tmp++;
				}
		default:
			printf("chon sai! Exit!!!");
	}
	
}
[/AH]
mình chỉ test với những số cơ bản, tại chưa có thời gian test mấy số bí bí nên có chổ nào sai xót hoặc k hiểu cứ cmt mình sẽ giải thích + fixx lại code
Tks all!
 
Top