[ create a new paste ] login | about

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

C, pasted on Apr 19:
#include<stdio.h>
#include<conio.h>
#include<math.h>
#define MAX 100

void nhap (int a[], int &n)
{
	do
	{
		printf("\nNhap so phan tu: ");
		scanf("%d", &n);
		if(n <= 0 || n > MAX)
		{
			printf("\nSo phan tu khong hop le. Xin kiem tra lai !");
		}
	}while(n <= 0 || n > MAX);
	for(int i = 0; i < n; i++)
	{
		printf("\nNhap a[%d]: ", i);
		scanf("%d", &a[i]);
	}
}

void xuat(int a[], int n)
{
	if(n == 0)
		return;
	xuat(a, n - 1);
	printf("%4d", a[n - 1]);
}

int demPhanBiet_1(int a[], int n)
{
	if(n < 1)
		return 0;
	if(n == 1)
		return 1;
	
	int dem = demPhanBiet_1(a, n - 1);
	
	int flag = 1;
	for(int i = 0; i <= n - 2; i++)
	{
		if(a[i] == a[n - 1])
			flag = 0;
	}
	if(flag == 1)
		dem++;
	return dem;
}

// cải tiến: thêm điều kiện lặp để hạn chế số lần lặp kiểm tra
int demPhanBiet_2(int a[], int n)
{
	if(n < 1)
		return 0;
	if(n == 1)
		return 1;
	
	int dem = demPhanBiet_2(a, n - 1);
	
	int flag = 1;
	for(int i = 0; (i <= n - 2 && flag == 1); i++)
	{
		if(a[i] == a[n - 1])
			flag = 0;
	}
	
	return dem + flag;
}

// cải tiến: tinh giản biến đếm bằng cách thực hiện lời gọi hàm đệ quy sau
int demPhanBiet_3(int a[], int n)
{
	if(n < 1)
		return 0;
	if(n == 1)
		return 1;
	
	int flag = 1;
	for(int i = 0; (i <= n - 2 && flag == 1); i++)
	{
		if(a[i] == a[n - 1])
			flag = 0;
	}
	
	return flag + demPhanBiet_3(a, n - 1);
}
int main()
{
	int n;
	int a[MAX];

	nhap(a, n);
	xuat(a, n);
	int dem = demPhanBiet_3(a, n);
	printf("\nCo %d gia tri phan biet trong mang", dem);

	getch();
	return 0;
}


Output:
1
2
3
4
5
6
7
8
Line 17: error: conio.h: No such file or directory
Line 6: error: expected ';', ',' or ')' before '&' token
In function 'demPhanBiet_1':
Line 42: error: 'for' loop initial declaration used outside C99 mode
In function 'demPhanBiet_2':
Line 63: error: 'for' loop initial declaration used outside C99 mode
In function 'demPhanBiet_3':
Line 81: error: 'for' loop initial declaration used outside C99 mode


Create a new paste based on this one


Comments: