[ create a new paste ] login | about

Link: http://codepad.org/iieslUfI    [ raw code | output | fork ]

C, pasted on May 6:
/* Đề Bài: Nhập vào 1 mảng A các số nguyên và sắp xếp mảng A trên theo quy luật :
	+ Các số dương (nếu có) ở đầu mảng và có thứ tự giảm dần.
	+ Các số âm (nếu có) ở cuối mảng và có thứ tự tăng dần . 542.cpp */

/* Ý Tưởng : Đầu tiên ta tách ra các phần tử dương và số lượng các phần tử dương trong mảng A và lưu vào 1 mảng mới (trong bài này là mảng C),tiếp đó ta tách ra các phần tử âm và số lượng các phần tử âm trong mảng A và lưu vào 1 mảng mới (trong bài này là mảng D) . Sau đó ta làm theo đúng đề bài sắp xếp các phần tử dương theo thứ tự giảm dần => tức là sắp xếp mảng C giảm dần,sắp xếp các phần tử âm theo thứ tự tăng dần => tức là sắp xếp mảng D tăng dần . Sau đó ta khởi tạo ra 1 mảng F để ghép 2 mảng C & D lại theo đúng trình tự thì sẽ ghép mảng C vào mảng F trước sau đó sẽ đến lượt ghép mảng D vào mảng F . Thế là xong ! */

/* Trong bài này thì chỉ cần xuất ra mảng F thỏa đúng điều kiện đề bài cho nhưng ta vẫn nên xuất ra mảng C & D để kiếm trả tính chính xác của việc ghép các mảng . */
/* 

Tác giả: Nguyễn Việt Nam Sơn
Trung tâm đào tạo tin học - Thiết kế phần mềm - Sơn Đẹp Trai: www.SonDepTrai.com

Nguồn source code này Tôi viết vào năm 2012 lúc mới bắt đầu học lập trình C/C++ nên một số cách sẽ không được tối ưu - Bạn chỉ nên dùng trên tinh thần tham khảo thôi nhé.
Mong giúp đỡ được Bạn trên con đường Học Lập Trình.
TẤT CẢ VÌ SỰ THÀNH CÔNG CỦA BẠN

*/
#include<stdio.h>
#include<conio.h>
#include<Windows.h>
#define MAX 100

// Hàm nhập mảng.
void NhapMang(int a[],int &n)
{
	quaylai:printf("\nNhap vao so luong phan tu cua mang A:n=");
	scanf("%d",&n);
	if(n<1||n>MAX)
	{
		printf("\nSo ban nhap vao khong hop le!Xin vui long nhap lai!");
		goto quaylai;
	}
	for(int i=0;i<n;i++)
	{
		printf("\nNhap vao a[%d]=",i);
		scanf("%d",&a[i]);
	}
}

// Hàm xuất mảng.
void XuatMang(int a[],int n)
{
	for(int i=0;i<n;i++)
	{
		printf("%4d",a[i]);
	}
}

// Hàm hoán vị.
void HoanVi(int &x,int &y)
{
	int temp=x;
	x=y;
	y=temp;
}

// Hàm tách ra phần tử dương lưu vào mảng C,phần tử lẻ âm lưu vào mảng D
void TachDuongVaAm(int a[],int c[],int d[],int n)
{
	int j=0,k=0;
	for(int i=0;i<n;i++)
	{
		if(a[i]>=0)
		{
			c[j++]=a[i];
		}
		else
		{
			d[k++]=a[i];
		}
	}
}

// Hàm trả về số lượng các phần tử dương trong mảng C .
int SoLuongPhanTuMangC(int a[],int n)
{
	int dem=0;
	for(int i=0;i<n;i++)
	{
		if(a[i]>=0)
		{
			dem++;
		}
	}
	return dem;
}

// Hàm trả về số lượng các phần tử âm trong mảng D .
int SoLuongPhanTuMangD(int a[],int n)
{
	int dem1=0;
	for(int i=0;i<n;i++)
	{
		if(a[i]<0)
		{
			dem1++;
		}
	}
	return dem1;
}

// Hàm sắp mảng C chứa các phần tử dương giảm dần .
void SapMangCGiamDan(int c[],int dem)
{
	for(int i=0;i<dem-1;i++)
	{
		for(int j=i+1;j<dem;j++)
		{
			if(c[i]<c[j])
			{
				HoanVi(c[i],c[j]);
			}
		}
	}
}

// Hàm sắp mảng D chứa các phần tử âm tăng dần .
void SapMangDTangDan(int d[],int dem1)
{
	for(int i=0;i<dem1-1;i++)
	{
		for(int j=i+1;j<dem1;j++)
		{
			if(d[i]>d[j])
			{
				HoanVi(d[i],d[j]);
			}
		}
	}
}

// Hàm ghép chung 2 mảng C & D vào chung 1 mảng F theo đúng trình tự thì ghép mảng C vào trước & mảng D vào sau .
void MangF(int f[],int c[],int d[],int dem,int dem1)
{
	int l=0;
	for(int j=0;j<dem;j++)
	{
		f[l++]=c[j];
	}
	for(int k=0;k<dem1;k++)
	{
		f[l++]=d[k];
	}
}

// Hàm chính .
void main()
{
	int a[MAX],c[MAX],d[MAX],f[MAX];
	int n,tieptuc;
	quaylai:NhapMang(a,n);
	printf("\n>>>>>>>>>>>Mang A ban dau la:<<<<<<<<<<<<<<<\n");
	XuatMang(a,n);
	printf("\n");
	int s=SoLuongPhanTuMangC(a,n);
	int s1=SoLuongPhanTuMangD(a,n);
	TachDuongVaAm(a,c,d,n);
	SapMangCGiamDan(c,s);
	printf("\n>>>>>>>>>>Mang C chua cac phan tu duong cua mang A va sap giam dan :<<<<<<<<<<<<<<<<<<\n");
	XuatMang(c,s);
	printf("\n");
	SapMangDTangDan(d,s1);
	printf("\n>>>>>>>>>Mang D chua cac phan tu am cua mang A va sap tang dan :<<<<<<<<<<<<<<<<<<\n");
	XuatMang(d,s1);
	printf("\n");
	MangF(f,c,d,s,s1);
	printf("\n>>>>>>>>>>Mang F ghep cac phan tu cua 2 mang C & D :<<<<<<<<<<<<<<<<<<<\n");
	XuatMang(f,n);
	printf("\n");
	printf("\nBan co muon tiep tuc thuc hien chuong trinh hay khong ? Neu co bam phim C,nguoc lai bam bat ky 1 phim nao khac de ket thuc!");
	tieptuc=getch();
	if(tieptuc=='c'||tieptuc=='C')
	{
		system("cls");
		goto quaylai;
	}
}


Output:
Line 17: error: conio.h: No such file or directory
Line 19: error: Windows.h: No such file or directory
Line 24: error: expected ';', ',' or ')' before '&' token
In function 'XuatMang':
Line 43: error: 'for' loop initial declaration used outside C99 mode
t.c: At top level:
Line 50: error: expected ';', ',' or ')' before '&' token
In function 'TachDuongVaAm':
Line 61: error: 'for' loop initial declaration used outside C99 mode
In function 'SoLuongPhanTuMangC':
Line 78: error: 'for' loop initial declaration used outside C99 mode
In function 'SoLuongPhanTuMangD':
Line 92: error: 'for' loop initial declaration used outside C99 mode
In function 'SapMangCGiamDan':
Line 105: error: 'for' loop initial declaration used outside C99 mode
Line 107: error: 'for' loop initial declaration used outside C99 mode
In function 'SapMangDTangDan':
Line 120: error: 'for' loop initial declaration used outside C99 mode
Line 122: error: 'for' loop initial declaration used outside C99 mode
In function 'MangF':
Line 136: error: 'for' loop initial declaration used outside C99 mode
Line 140: error: 'for' loop initial declaration used outside C99 mode
In function 'main':
Line 148: warning: return type of 'main' is not 'int'


Create a new paste based on this one


Comments: