[ create a new paste ] login | about

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

C, pasted on May 6:
/* Đề Bài : Xử lý tất cả các yêu cầu sau đối với tất cả các Node,đối với các Node dương,đối với các Node âm :
	Yêu Cầu :
		1 - Nhập các Node .
		2 - Xuất ra các Node .
		3 - Đếm số lượng các Node .
		4 - Tính tổng các Node .
		5 - Tính tích các Node .
		6 - Tìm Node lớn nhất .
		7 - Tìm Node nhỏ nhất .
	    8 - Thêm vào cuối danh sách một Node và xuất ra danh sách sau khi đã thêm .
	    9 - Sắp xếp danh sách liên kết tăng dần .
	   10 - Sắp xếp danh sách liên kết giảm dần .635.cpp */
/* 

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

*/
// Các thư viện sử dụng trong chương trình .
#include<stdio.h>
#include<conio.h>
#include<limits.h>
#include<Windows.h>

// Khai báo struct Node .
struct node
{
	int Data;
	struct node*pNext;
};
typedef struct node NODE;

// Khai báo struct List .
struct list
{
	NODE*pHead;
	NODE*pTail;
};
typedef struct list LIST;

// Khởi tạo List .
void INit(LIST &l)
{
	l.pHead=NULL;
	l.pTail=NULL;
}

// Duyệt List .
NODE*getnode(int x)
{
	NODE*p;
	p=new NODE;
	if(p==NULL)
		return NULL;
	p->Data=x;
	p->pNext=NULL;
	return p;
}

// Thêm vào đầu List .
void AddHead(LIST &l,NODE *new_ele)
{
	if(l.pHead==NULL)
	{
		l.pHead=new_ele;
		l.pTail=l.pHead;
	}
	else
	{
		new_ele->pNext=l.pHead;
		l.pHead=new_ele;
	}
}

// Thêm vào cuối List .
void AddTail(LIST &l,NODE *new_ele)
{
	if(l.pHead==NULL)
	{
		l.pHead=new_ele;
		l.pTail=l.pHead;
	}
	else
	{
		l.pTail->pNext=new_ele;
		l.pTail=new_ele;
	}
}

// Hàm nhập dữ liệu .
void InPut(LIST &l)
{
	int n;
	quaylai:printf("\nNhap vao so luong cac node:");
	scanf("%d",&n);
	if(n<0)
	{
		printf("\nSo ban nhap vao khong hop le!Xin vui long nhap lai!");
		goto quaylai;
	}
	INit(l);
	for(int i=1;i<=n;i++)
	{
		int x;
		printf("\nNhap vao node thu %d:",i);
		scanf("%d",&x);
		NODE*p=getnode(x);
		AddTail(l,p);
	}
}

// Hàm xuất dữ liệu .
void OutPut(LIST l)
{
	for(NODE*p=l.pHead;p!=NULL;p=p->pNext)
	{
		printf("%4d",p->Data);
	}
}

// Hàm xử lý dữ liệu trên tất cả các Node .
void LietKeDemTinhTongTinhTichTimMaxTimMinCacNode(LIST l)
{
	int dem=0,tong=0,tich=1;
	int max=INT_MIN;
	int min=INT_MAX;
	for(NODE*p=l.pHead;p!=NULL;p=p->pNext)
	{
		printf("%4d",p->Data);
		dem++;
		tong+=p->Data;
		tich*=p->Data;
		if(p->Data>max)
		{
			max=p->Data;
		}
		if(p->Data<min)
		{
			min=p->Data;
		}
	}
	printf("\n");
	printf("\nSo Luong Cac Node La:%d",dem);
	printf("\n");
	printf("\nTong Cac Node La:%d",tong);
	printf("\n");
	printf("\nTich Cac Node La:%d",tich);
	printf("\n");
	printf("\nNode Lon Nhat La:%d",max);
	printf("\n");
	printf("\nNode Nho Nhat La:%d",min);
}

// Hàm xử lý dữ liệu trên các Node dương .
void LietKeDemTinhTongTinhTichTimMaxTimMinCacNodeDuong(LIST l)
{
	int dem=0,tong=0,tich=1;
	int max=INT_MIN;
	int min=INT_MAX;
	for(NODE*p=l.pHead;p!=NULL;p=p->pNext)
	{
		if(p->Data>=0)
		{
			printf("%4d",p->Data);
			dem++;
			tong+=p->Data;
			tich*=p->Data;
			if(p->Data>max)
			{
				max=p->Data;
			}
			if(p->Data<min)
			{
				min=p->Data;
			}
		}
	}
	printf("\n");
	printf("\nSo Luong Cac Node Duong La:%d",dem);
	printf("\n");
	printf("\nTong Cac Node Duong La:%d",tong);
	printf("\n");
	printf("\nTich Cac Node Duong La:%d",tich);
	printf("\n");
	printf("\nNode Duong Lon Nhat La:%d",max);
	printf("\n");
	printf("\nNode Duong Nho Nhat La:%d",min);
}

// Hàm xử lý dữ liệu trên các Node âm .
void LietKeDemTinhTongTinhTichTimMaxTimMinCacNodeAm(LIST l)
{
	int dem=0,tong=0,tich=1;
	int max=INT_MIN;
	int min=INT_MAX;
	for(NODE*p=l.pHead;p!=NULL;p=p->pNext)
	{
		if(p->Data<0)
		{
			printf("%4d",p->Data);
			dem++;
			tong+=p->Data;
			tich*=p->Data;
			if(p->Data>max)
			{
				max=p->Data;
			}
			if(p->Data<min)
			{
				min=p->Data;
			}
		}
	}
	printf("\n");
	printf("\nSo Luong Cac Node Am La:%d",dem);
	printf("\n");
	printf("\nTong Cac Node Am La:%d",tong);
	printf("\n");
	printf("\nTich Cac Node Am La:%d",tich);
	printf("\n");
	printf("\nNode Am Lon Nhat La:%d",max);
	printf("\n");
	printf("\nNode Am Nho Nhat La:%d",min);
}

// Hàm thêm vào cuối danh sách liên kết đơn một giá trị nguyên .
void ThemVaoCuoi(LIST l)
{
	int x;
	printf("\nNhap Vao Gia Tri Can Them Vao Cuoi Danh Sach Lien Ket Don:");
	scanf("%d",&x);
	NODE*p=getnode(x);
	AddTail(l,p);
}

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

// Hàm sắp danh sách tăng dần .
void SapTangDan(LIST l)
{
	for(NODE*p=l.pHead;p!=NULL;p=p->pNext)
	{
		for(NODE*q=p->pNext;q!=NULL;q=q->pNext)
		{
			if(p->Data>q->Data)
			{
				HoanVi(p->Data,q->Data);
			}
		}
	}
}

// Hàm sắp danh sách giảm dần .
void SapGiamDan(LIST l)
{
	for(NODE*p=l.pHead;p!=NULL;p=p->pNext)
	{
		for(NODE*q=p->pNext;q!=NULL;q=q->pNext)
		{
			if(p->Data<q->Data)
			{
				HoanVi(p->Data,q->Data);
			}
		}
	}
}

// Hàm tăng kích cỡ chiều rộng và chiều cao của khung CMD .
void resizeConsole(int width, int height)
{
	HWND console = GetConsoleWindow();
	RECT r;
	GetWindowRect(console, &r);
	MoveWindow(console, r.left, r.top, width, height, TRUE);
}

// Hàm MeNu .
void MeNu()
{
	resizeConsole(2000,1000);
	int tieptuc;
	LIST lst;
	quaylai:printf("\n>>>>>>>>>>>>>>>>Nhap List:<<<<<<<<<<<<<<<<<\n");
	InPut(lst);
	printf("\n>>>>>>>>>>>>>>>>>>>>Xuat List:<<<<<<<<<<<<<<<<<<<<\n");
	OutPut(lst);
	printf("\n");
	printf("\n>>>>>>>>>>>>>>>>Xu Ly Cac Node:<<<<<<<<<<<<<<<<<<<<<\n");
	LietKeDemTinhTongTinhTichTimMaxTimMinCacNode(lst);
	printf("\n");
	printf("\n>>>>>>>>>>>>>>>>>>>>Xu Ly Cac Node Duong:<<<<<<<<<<<<<<<<<<<<<<<\n");
	LietKeDemTinhTongTinhTichTimMaxTimMinCacNodeDuong(lst);
	printf("\n");
	printf("\n>>>>>>>>>>>>>>>>>>>>Xu Ly Cac Node Am:<<<<<<<<<<<<<<<<<<<<<<\n");
	LietKeDemTinhTongTinhTichTimMaxTimMinCacNodeAm(lst);
	printf("\n");
	ThemVaoCuoi(lst);
	printf("\n>>>>>>>>>>>>>>Danh Sach Sau Khi Them Vao Cuoi La:<<<<<<<<<<<<<<<<<<<<\n");
	OutPut(lst);
	printf("\n");
	printf("\n>>>>>>>>>>>>>>>Sap Danh Sach Tang Dan:<<<<<<<<<<<<<<<<<<<<<<\n");
	SapTangDan(lst);
	OutPut(lst);
	printf("\n");
	printf("\n>>>>>>>>>>>>>>>Sap Danh Sach Giam Dan:<<<<<<<<<<<<<<<<<<<<<<\n");
	SapGiamDan(lst);
	OutPut(lst);
	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;
	}
}

// Hàm chính .
void main()
{
	MeNu();
}


Output:
Line 17: error: conio.h: No such file or directory
Line 19: error: Windows.h: No such file or directory
Line 46: error: expected ';', ',' or ')' before '&' token
In function 'getnode':
Line 56: error: 'new' undeclared (first use in this function)
Line 56: error: (Each undeclared identifier is reported only once
Line 56: error: for each function it appears in.)
Line 56: error: expected ';' before 'NODE'
t.c: At top level:
Line 65: error: expected ';', ',' or ')' before '&' token
Line 80: error: expected ';', ',' or ')' before '&' token
Line 95: error: expected ';', ',' or ')' before '&' token
In function 'OutPut':
Line 119: error: 'for' loop initial declaration used outside C99 mode
In function 'LietKeDemTinhTongTinhTichTimMaxTimMinCacNode':
Line 131: error: 'for' loop initial declaration used outside C99 mode
In function 'LietKeDemTinhTongTinhTichTimMaxTimMinCacNodeDuong':
Line 164: error: 'for' loop initial declaration used outside C99 mode
In function 'LietKeDemTinhTongTinhTichTimMaxTimMinCacNodeAm':
Line 200: error: 'for' loop initial declaration used outside C99 mode
t.c: At top level:
Line 241: error: expected ';', ',' or ')' before '&' token
In function 'SapTangDan':
Line 251: error: 'for' loop initial declaration used outside C99 mode
Line 253: error: 'for' loop initial declaration used outside C99 mode
In function 'SapGiamDan':
Line 266: error: 'for' loop initial declaration used outside C99 mode
Line 268: error: 'for' loop initial declaration used outside C99 mode
In function 'resizeConsole':
Line 281: error: 'HWND' undeclared (first use in this function)
Line 281: error: expected ';' before 'console'
Line 282: error: 'RECT' undeclared (first use in this function)
Line 282: error: expected ';' before 'r'
Line 283: error: 'console' undeclared (first use in this function)
Line 283: error: 'r' undeclared (first use in this function)
Line 284: error: 'TRUE' undeclared (first use in this function)
In function 'main':
Line 330: warning: return type of 'main' is not 'int'


Create a new paste based on this one


Comments: