[ create a new paste ] login | about

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

C, pasted on May 6:
/* Bài 824/220/SBT Thầy NTTMK:Viết chương trình thực hiện các yêu cầu sau trên danh sách liên kết đơn các học sinh:
a. Khai báo cấu trúc dữ liệu của một danh sách liên kết đơn các học sinh.Biết rằng thông tin của một học sinh bao gồm: Họ tên (30 ký tự),điểm toán,điểm văn và điểm trung bình (tất cả đều là số thực) .
b. Cài đặt tất cả các thao tác cơ bản cho danh sách liên kết đơn các học sinh .
c. Liệt kê các học sinh có điểm toán nhỏ hơn 5 trong danh sách .
d. Đếm số lượng học sinh có điểm toán và điểm văn lớn hơn 8 điểm trong danh sách .
e. Viết hàm sắp xếp các học sinh giảm dần theo điểm trung bình .
665.cpp */

/* ======================================== BÀI LÀM ================================================== */
/* 

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 "time.h"
#include "Windows.h"
/* =================================================================================================== */

/* ============== Khai Báo Cấu Trúc Dữ Liệu Cho Danh Sách Liên Kết Đơn Các Học Sinh ================== */
struct hocsinh
{
	char HoTen[30];
	float Toan;
	float Van;
	float TrungBinh;
};
typedef struct hocsinh HOCSINH;

struct node
{
	HOCSINH Data;
	struct node*pNext;
};
typedef struct node NODE;

struct list
{
	NODE*pHead;
	NODE*pTail;
};
typedef struct list LIST;
/* =================================================================================================== */

/* ========================= Khởi Tạo Danh Sách Liên Kết Đơn ========================================= */
void INit(LIST &l)
{
	l.pHead=NULL;
	l.pTail=NULL;
}
/* =================================================================================================== */

/* ====================== Tạo Node Trong Danh Sách Liên Kết Đơn Các Học Sinh ========================= */
NODE*getnode(HOCSINH x)
{
	NODE*p;
	p=new NODE;
	if(p==NULL)
		return NULL;
	p->Data=x;
	p->pNext=NULL;
	return p;
}
/* =================================================================================================== */

/* =================================== Thêm Vào Cuối Danh Sách ======================================= */
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;
	}
}
/* =================================================================================================== */

/* ====================== Nhập Dữ Liệu Danh Sách Liên Kết Đơn Các Học Sinh =========================== */
void InPut(LIST &l)
{
	int n;
	quaylai:printf("\nNhap vao so luong hoc sinh:");
	scanf("%d",&n);
	if(n<0)
	{
		printf("\nSo luong hoc sinh khong hop le!Xin vui long nhap lai!");
		goto quaylai;
	}
	INit(l);
	for(int i=1;i<=n;i++)
	{
		HOCSINH x;
		printf("\n>>>>>>>>> Nhap Vao Du Lieu Hoc Sinh Thu %d <<<<<<<<<<<<\n",i);
		fflush(stdin);
		printf("\nNhap vao Ho Ten:");
		gets(x.HoTen);
		do{
			printf("\nNhap vao diem Toan:");
			scanf("%f",&x.Toan);
			if(x.Toan<0||x.Toan>10)
			{
				printf("\nDiem mon Toan khong hop le!Xin vui long nhap lai!");
			}
		}while(x.Toan<0||x.Toan>10);
		do{
			printf("\nNhap vao diem Van:");
			scanf("%f",&x.Van);
			if(x.Van<0||x.Van>10)
			{
				printf("\nDiem mon Van khong hop le!Xin vui long nhap lai!");
			}
		}while(x.Van<0||x.Van>10);
		x.TrungBinh=(x.Toan+x.Van)/2;
		NODE*p=getnode(x);
		AddTail(l,p);
	}
}
/* =================================================================================================== */

/* ======================== Xuất Danh Sách Liên Kết Đơn Các Học Sinh ================================= */
void OutPut(LIST l)
{
	printf("\tHo Va Ten  \t");
	printf("Diem Toan\t\t");
	printf("Diem Van\t\t");
	printf("Diem TB  \n\n");
	for(NODE*p=l.pHead;p!=NULL;p=p->pNext)
	{
		printf("%20s  ",p->Data.HoTen);
		printf("%10.2f  ",p->Data.Toan);
		printf("%20.2f  ",p->Data.Van);
		printf("%22.2f  \n\n",p->Data.TrungBinh);
	}
}
/* =================================================================================================== */

/* ============================ Liệt Kê Các Học Sinh Có Điểm Toán < 5 ================================ */
void LietKeCacHocSinhCoDiemToanNhoHon5(LIST l)
{
	NODE*pNode;
	printf("\n>>>>>>>>> Danh Sach Cac Hoc Sinh Co Diem Toan < 5 <<<<<<<<<\n");
	printf("\n");
	printf("\tHo Va Ten  \t");
	printf("Diem Toan\t\t");
	printf("Diem Van\t\t");
	printf("Diem TB  \n\n");
	for(pNode=l.pHead;pNode!=NULL;pNode=pNode->pNext)
	{
		if(pNode->Data.Toan<5)
		{
			printf("%20s  ",pNode->Data.HoTen);
			printf("%10.2f  ",pNode->Data.Toan);
			printf("%20.2f  ",pNode->Data.Van);
			printf("%22.2f  \n\n",pNode->Data.TrungBinh);
		}	
	}
}
/* =================================================================================================== */

/* ========================== Đếm Số Lượng Học Sinh Có Điểm Toán & Văn > 8 =========================== */
void DemSoLuongHocSinhCoDiemToanVaDiemVanLonHon8(LIST l)
{
	NODE*pNode;
	int dem=0;
	for(pNode=l.pHead;pNode!=NULL;pNode=pNode->pNext)
	{
		if(pNode->Data.Toan>8&&pNode->Data.Van>8)
		{
			dem++;
		}	
	}
	printf("\nSo Luong Cac Hoc Sinh Co Diem Toan & Van > 8 La:%d",dem);
}
/* =================================================================================================== */

/* ============================= Hàm Sắp Giảm Dần Theo Điểm Trung Bình =============================== */
void HamSapXepGiamDanTheoDiemTrungBinh(LIST &l)
{
	NODE *p,*q;
	HOCSINH temp;
	for(p=l.pHead;p!=NULL;p=p->pNext)
	{
		for(q=p->pNext;q!=NULL;q=q->pNext)
		{
			if(p->Data.TrungBinh<q->Data.TrungBinh)
			{
				temp=p->Data;
				p->Data=q->Data;
				q->Data=temp;
			}
		}
	}
}
/* =================================================================================================== */

/* ==================== Sắp Danh Sách Các Học Sinh Giảm Dần Theo Điểm Trung Bình ===================== */
void SapXepDanhSachCacHocSinhGiamDanTheoDiemTrungBinh(LIST l)
{
	HamSapXepGiamDanTheoDiemTrungBinh(l);
	printf("\n>>>>>>>>>>> Danh Sach Cac Hoc Sinh Sap Giam Dan Theo Diem Trung Binh <<<<<<<<<<\n");
	OutPut(l);
}
/* =================================================================================================== */

/* ====================================== Các Hàm Đồ Họa ============================================= */
// Hàm tăng kích cỡ 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 lấy tọa độ vị trí .
void gotoxy(int x,int y)
{
	HANDLE hstdout=GetStdHandle(STD_OUTPUT_HANDLE);
	COORD position = {x,y};
	SetConsoleCursorPosition(hstdout,position);
}

// Hàm tô màu .
void textcolor(int x)
{
	HANDLE mau;
	mau=GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleTextAttribute(mau,x);
}

// Hàm đồ họa cho tên tác giả .
void NguyenVietNamSon()
{
	textcolor(14); // Tô màu vàng .
	printf("\n--------------------------------------------------------------------------------\n");
	printf("\n\t\t\tDesigned By : Nguyen Viet Nam Son              \n");
	printf("\n--------------------------------------------------------------------------------\n");
	textcolor(7); // Trả lại màu chữ bình thường .
}
/* =================================================================================================== */

/* =================================== Hiển Thị Lời Chào ============================================= */
void Thanks()
{
	system("cls"); // Xóa đi mọi dữ liệu đã làm trước đó .
	srand(time(NULL));
	for(int j=1;j<=20;j++)
	{
		int color=rand()%15+1; // Khởi tạo màu chạy ngẫu nhiên trong đoạn thang màu [1,15].
		Sleep(300);
		gotoxy(j-1,40);
		printf("			");
		gotoxy(j,40);
		textcolor(color);
		printf("\nThanks You For Using The Program ! Goodbye And See You Later !\n"); // Khi người dùng thoát chương trình sẽ hiển thị lời chào !
	}
	textcolor(15);
	getch();
	gotoxy(3,42);
}
/* =================================================================================================== */

/* =========================================== MeNu ================================================== */
void MeNu()
{
	resizeConsole(800,600); // Tăng kích cỡ của khung CMD lên thành chiều rộng 800,chiều cao 600 .
	LIST lst;
	int w;
	printf("\n");
	quaylai:NguyenVietNamSon();
	InPut(lst);
	printf("\n>>>>>>>>>>>>>>>>>>>>> Xuat Ra Danh Sach Cac Hoc Sinh <<<<<<<<<<<<<<<<<<<<<<<<\n");
	printf("\n");
	printf("\n");
	OutPut(lst);
	printf("\n");
	do{
		// Bảng MeNu đưa ra cho người dùng các sự lựa chọn .
		textcolor(2); // Tô màu xanh nhạt cho MeNu
		printf("\n-------------------------------------MeNu---------------------------------------\n");
		printf("\n");		
		printf("\n 1.Liet Ke Cac Hoc Sinh Co Diem Toan < 5 ");
		printf("\n");
		printf("\n 2.Dem So Luong Hoc Sinh Co Diem Toan & Diem Van > 8 ");
		printf("\n");
		printf("\n 3.Sap Xep Lai Danh Sach Hoc Sinh Giam Dan Theo Diem Trung Binh ");
		printf("\n");
		printf("\n 4.Cap Nhat Lai Danh Sach Cac Hoc Sinh ");
		printf("\n");
		printf("\n 0.Thoat chuong trinh ");
		printf("\n");
		printf("\n--------------------------------------------------------------------------------\n");
		printf("\n");
		textcolor(7); // Trả về lại màu bình thường .
		printf("\nChon:");
		scanf("%d",&w);
		printf("\nKet qua:\n");
		printf("\n");		
		// Cấu trúc switch-case .
		switch(w)
		{								
		case 1:
			{
				LietKeCacHocSinhCoDiemToanNhoHon5(lst);
				break; 
			}
		case 2: 
			{
				DemSoLuongHocSinhCoDiemToanVaDiemVanLonHon8(lst);
				break;
			}
		case 3:
			{
				SapXepDanhSachCacHocSinhGiamDanTheoDiemTrungBinh(lst);
				break;
			}
		case 4:
			{
				goto quaylai;
				break;
			}
		case 0: 
			{
				Thanks();
			}
		}
	}while(w!=0);
}
/* =================================================================================================== */

/* ============================================ Main ================================================= */
void main()
{
	MeNu();
}
/* =================================================================================================== */

/* ============================== Designed By : Nguyễn Việt Nam Sơn ================================== */

/* ========================================== THE END ================================================ */


Output:
Line 18: error: conio.h: No such file or directory
Line 20: error: Windows.h: No such file or directory
Line 53: error: expected ';', ',' or ')' before '&' token
In function 'getnode':
Line 64: error: 'new' undeclared (first use in this function)
Line 64: error: (Each undeclared identifier is reported only once
Line 64: error: for each function it appears in.)
Line 64: error: expected ';' before 'NODE'
t.c: At top level:
Line 74: error: expected ';', ',' or ')' before '&' token
Line 90: error: expected ';', ',' or ')' before '&' token
In function 'OutPut':
Line 138: error: 'for' loop initial declaration used outside C99 mode
t.c: At top level:
Line 188: error: expected ';', ',' or ')' before '&' token
In function 'resizeConsole':
Line 220: error: 'HWND' undeclared (first use in this function)
Line 220: error: expected ';' before 'console'
Line 221: error: 'RECT' undeclared (first use in this function)
Line 221: error: expected ';' before 'r'
Line 222: error: 'console' undeclared (first use in this function)
Line 222: error: 'r' undeclared (first use in this function)
Line 223: error: 'TRUE' undeclared (first use in this function)
In function 'gotoxy':
Line 229: error: 'HANDLE' undeclared (first use in this function)
Line 229: error: expected ';' before 'hstdout'
Line 230: error: 'COORD' undeclared (first use in this function)
Line 230: error: expected ';' before 'position'
Line 231: error: 'hstdout' undeclared (first use in this function)
Line 231: error: 'position' undeclared (first use in this function)
In function 'textcolor':
Line 237: error: 'HANDLE' undeclared (first use in this function)
Line 237: error: expected ';' before 'mau'
Line 238: error: 'mau' undeclared (first use in this function)
Line 238: error: 'STD_OUTPUT_HANDLE' undeclared (first use in this function)
In function 'Thanks':
Line 258: error: 'for' loop initial declaration used outside C99 mode
In function 'main':
Line 344: warning: return type of 'main' is not 'int'


Create a new paste based on this one


Comments: