Showing posts with label ltC. Show all posts
Showing posts with label ltC. Show all posts

12/1/12

Bài tập quản lý thư viện trong C, C++, C#

Bài tập quản lý thư viện trong C, C++
Một bài tập được khá nhiều bạn quan tâm trong thời gian vừa qua. Các hàm xây dựng để quản lý thư viện có liên kết với nhau. Bài tập quản lý thư viện này được các bạn thường sử dụng cho môn học CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT.
code quan ly thu vien trong c, bai tap quan ly thu vien trong c

 Mình đã gửi tới các bạn bài này khá lâu rồi, thời gian đầu làm quen với Blogger mình có đưa bài này.
Các hàm có trong quản lý thư viện quản lý sách như:
- Thêm sách
- Tìm sách
- Xóa sách
- Sửa sách
- Thể loại sách
....
Các hàm quản lý thời hạn, tình trạng sách... đều được thể hiện trong bài quản lý thư viện Code C này. Nếu các bạn trình bày ở dạng console trong C# thì các bạn khai báo tương tự
Các bạn có thể tham khảo
Lấy Code tại đây

----------------------------
Chúc các bạn học tập tốt !

11/22/12

Xử lý ngày - tháng - năm trong C, C#

Trong tập hợp các bài tập về C, C# của ITViet360 đáng chú ý tới bài xử lý ngày - tháng - năm. Bởi vì bài này có một số ràng buộc rất khắt khe.
bai tap xu ly ngay thang nam trong C, C#
Bài tập xử lý ngày tháng năm trong C
Bài code hoàn chỉnh có những hàm, giải quyết các vấn đề sau của xử lý ngày-tháng-năm:
1. Nhập ngày tháng năm
2. Cập nhật ngày tháng năm
3. Kiểm tra ngày tháng năm có hợp lệ
4. Tính số ngày
5. Tìm ngày.
6. In lịch theo tháng, năm.
7. Đọc ngày tháng năm (Ví dụ: 12/11/1990: Ngày mười hai tháng mười một năm một ngàn chín trăm chín mươi)
8. Tìm thứ.
Các bạn quan tâm tới code bài xử lý ngày tháng năm trong C, C# này thì DOWNLOAD CODE TẠI ĐÂY
- Các bạn vào Code sửa
Menu1 -> Menu
Chon1 -> Chon
Main1 -> Main
------------------------
Chúc các bạn học tập tốt !

11/20/12

Bài toán dãy số Fibonacci - Đệ quy trong C, C++

Ở bài giới thiệu C, C++ này itviet360 gửi tới các bạn Code C, C++ bài toán dãy số Fibonacci - Đệ quy. Khái niệm đệ quy không được giới thiệu ở đây nên các bạn có thể tham khảo ở rất nhiều trang đưa ra những đ/n khái quát.
Bài toán dãy số Fibonacci trong C
Code dưới đây là theo code C, đối với console trong C# cũng tương tự.
Các bạn tham khảo code Full:

#include <stdio.h>
#include <conio.h>

void DaoSo(long a)
{
if(a>9)
{
printf("%d",a%10);
DaoSo(a/10);
}
else
printf("%d",a);

}

long Fibonaci(int vt)
{
if(vt==1||vt==2)
return 1;
else
return (Fibonaci(vt-2)+Fibonaci(vt-1));

}

void InDayFibonaci(int n,long a=1,long b=0)
{
long kq;
if(n>0)
{
kq=a+b;
printf("%ld ",kq);
InDayFibonaci(n-1,b,kq);
}



}

void main()
{
clrscr();
long a,b;
int choice;

menu:
//Menu Select
printf("\t\t\t www.itviet360.com \n");
printf("\t\t\tCac Chuc Nang\n\n");
printf("\t\t1. Dao So\n");
printf("\t\t2. Tim 1 PT Cua Day Fibonaci\n");
printf("\t\t3. In Day Fibonaci co n pha tu\n");
printf("\t\t4. Thoat\n");


do{
printf("\n\tNhap Lua Chon Cua Ban:");
scanf("%d",&choice);
}while(choice<1||choice>4);


clrscr();
switch(choice)
{
case 1:
printf("\nNhap 1 So Nguyen:");
scanf("%ld",&a);
printf("So Sau khi dao Thu Tu:");
DaoSo(a);
getch(); clrscr();
goto menu;

case 2:
do{
printf("\n%s","Nhap Vi Tri Cua So Fibonaci Can Tim:");
scanf("%d",&b);
}while(b<0);
printf("%s%ld","Phan Tu Can Tim La:",Fibonaci(b));
getch(); clrscr();
goto menu;

case 3:
printf("\nNhap So PT Cua Day Fibonaci can xem:");
scanf("%d",&b);
printf("Day Fibonaci:\n");
InDayFibonaci(b);
getch(); clrscr();
goto menu;

case 4:
break;
}

}

11/19/12

Quản lý nhân viên - Danh sách liên kết trong C, C++

Bài tập quản lý nhân viên theo danh sách liên kết trong C, C++ là một ví dụ điển hình về sanh sách liên kết. Việc xây dựng danh sách liên kết để quản lý nhân viên ở bài code dưới đây gửi tới các bạn các hàm để quản lý nhân viên như: thêm, xóa, sửa thông tin nhân viên, code tính bảng lương nhân viên, in bảng lương nhân viên...
Bài tập quản lý nhân viên theo danh sách liên kết trong C
Ở bài code dưới đây là code theo C, Console trong C# cũng tương tự như thế. Các bạn xem một số hàm tham khảo và Download code Full ở cuối bài viết.
- Tất cả các hàm trong bài code đều có ràng buộc.
Ví dụ: thêm, sửa thông tin nhân viên có ràng buộc tuổi, ngày tháng năm sinh,...
Đi vào Code cụ thể:
Hàm Nhập nhân viên:

void nhapNV(NHANVIEN &nv)
{
clrscr();
printf("\n\t Nhap cac thong tin cua nhan vien: Ho lot, ten, ...\n");
fflush(stdin);
printf("\n\t Ho lot : ");
gets(nv.holot);
fflush(stdin);
printf("\n\t Ten : ");
gets(nv.ten);
do{
fflush(stdin);
printf("\n\t Ngay thang nam sinh (ngay/thang/nam): ");
scanf("%d/%d/%d",&nv.ngaysinh.ngay, &nv.ngaysinh.thang,&nv.ngaysinh.nam);
}while(!IsValidDate(nv.ngaysinh.ngay,nv.ngaysinh.thang,nv.ngaysinh.nam));

do{
fflush(stdin);
printf("\n\t Phai (0:Nu, 1:Nam ): ");
scanf("%d" ,&nv.phai);
}while(nv.phai!=0 && nv.phai!=1);

fflush(stdin);
printf("\n\t Noi sinh : ");
gets(nv.noisinh);

fflush(stdin);
printf("\n\t Phu cap :");
scanf("%ld",&nv.phucap);

fflush(stdin);
printf("\n\t Luong co ban :");
scanf("%ld",&nv.luongcb);

fflush(stdin);
printf("\n\t Ngay cong :");
scanf("%d",&nv.ngaycong);

}

Hàm tìm nhân viên:

NODEPTR timNV(NODEPTR dsnv, char key[])
{
NODEPTR p = dsnv;
while (p!=NULL)
{
if(strcmp(p->info.maNV,key)==0) break;
p=p->pNext;
}
return p;
}


Hàm thêm nhân viên

void themNV(NODEPTR &dsnv,NHANVIEN nv)
{
NODEPTR n;
n = new NODE;
n->info = nv;
n->pNext = dsnv;
dsnv = n;
}

Hàm thêm nhiều nhân viên 1 lúc các bạn Download trong Code full nhé.
Hàm xóa nhân viên, sửa thông tin nhân viên, bảng lương nhân viên đã có trong Code Full.
CODE FULL DOWNLOAD TẠI ĐÂY
chúc các bạn học tập tốt

11/15/12

Đổi (đọc) số thành chữ trong C, C++

Đổi (đọc) số thành chữ trong C, C++
Một bài tập lập trình  tiếp theo của những bài C# trước mình gửi tới các bạn. Code đọc số thành chữ trong C, C++. Yêu cầu của bài là nhập 1 dãy số từ bàn phím, chương trình xuất ra chuỗi ký tự chữ tương ứng với con số vừa nhập.
Ví dụ:
- Nhập: 123456789
- Xuất: mot tram hai muoi ba trieu bon tram nam muoi sau nghin bay tram tam muoi chin
Đọc số thành chữ trong C
Ý tưởng: Đọc theo Block số 3 số
Cụ thể:
Code:

#include <conio.h>
#include <stdio.h>
#include <string.h>
void readblock3(char scr[],char result[])
{
int len=strlen(scr);
int vt=0;
char *chu[10]={" ","Mot","Hai","Ba","Bon","Nam","Sau","Bay","Tam","Chin"};


if(len==3)
{
if(scr[0]=='0')
strcat(result," Khong Tram ");
else
{
strcat(result,chu[scr[vt]-48]);
strcat(result," Tram ");
}
--len;
++vt;
}

if(len==2)
{
if(scr[vt]=='0')
{
if(scr[vt+1]!='0')
strcat(result," Le ");
}
else if(scr[vt]=='1')
strcat(result," Muoi ");
else
{
strcat(result,chu[scr[vt]-48]);
if(scr[vt+1]!='0')
strcat(result," Muoi ");
}
--len; ++vt;

}

if(len==1)
{
if(scr[vt]=='1')
strcat(result," Mot ");
else
strcat(result,chu[scr[vt]-48]);

}

}
void readall(char scr[],char result[])
{
int len=strlen(scr);
int i,j,vt=0,dv;
char *donvi[4]={""," Ngan "," Trieu "," Ti "};
char tmp[200];

if(len%3==0)
dv=len/3-1;
else
dv=len/3;

if(len%3!=0)
{
for(j=0;j<len%3;++j)
tmp[j]=scr[vt++];
tmp[j]=NULL;
readblock3(tmp,result);
strcat(result,donvi[dv]);
--dv;
}


for(i=0;i<len/3;++i)
{
for(j=0;j<3;++j)
tmp[j]=scr[vt++];
tmp[j]=NULL;
readblock3(tmp,result);
strcat(result,donvi[dv]);
--dv;

}
}
void main()
{
char chuoi[255];
char result[255];
strcpy(result,"");
printf("Nhap Mot Chuoi So:");
scanf("%s",chuoi);
readall(chuoi,result);
printf("%s%s","\nChuoi Sau Khi Doi:\n",result);
getch();
}

Chúc các bạn học tập tốt !

11/13/12

Bài tập Stack - Queue trong C, C# - Code Demo (2)

Bài tập Stack - Queue trong C, C# - Code Demo cài theo phương thức hướng đối tượng. Ở Bài tập Queue - Stack trong C, C# này mình đã giới thiệu Code về Queue. Tiếp theo mình giới thiệu về Stack.
Stack là gì ?
- Trong khoa học máy tính, một ngăn xếp (còn gọi là bộ xếp chồng, tiếng Anh: stack) là một cấu trúc dữ liệu trừu tượng hoạt động theo nguyên lý "vào sau ra trước" (Last In First Out (LIFO.
Ngăn xếp - Stack
- Cụ thể:
Code Push (thêm phần tử vào Stack)

public void push(int x) // Cai phuong thuc (thua ke giao dien) them phan tu vao Stack
{
if (!this.isFull())
{
this.top++;
this.day[this.top] = x;
}
else
Console.WriteLine("\n\n\t Stack day !!!");
}

Code Pop (lấy phần tử khỏi Stack)

public void pop(ref int x) // Cai phuong thuc (thua ke giao dien) lay phan tu vao Stack
{
if (!this.isEmpty())
{
x = this.day[this.top];
top--;
}
else
Console.WriteLine("\n\n\t Stack rong !!!");
}

-------------------------------------------
Bài cài đầy đủ (copy and run ^_^) các bạn Download tại đây !
chúc các bạn học tập tốt !

11/9/12

Bài tập Queue - Stack trong C, C# - Code Demo

Ở bài này mình sẽ chia ra làm 2 phần để trình bày về Queue - Stack. Sau đó là Code dành cho các bạn tham khảo. Code cài theo lập trình hướng đối tượng
1. Giới thiệu:
  • Queue là gì?
Queue - Hàng đợi: là một cấu trúc dữ liệu dùng để chứa các đối tượng làm việc theo cơ chế FIFO (viết tắt từ tiếng Anh: First In First Out), nghĩa là "vào trước ra trước". Tham khảo trang wikipedia
Queue - Queue là gì ?

Đi vào code cụ thể:
Hàm push - Thêm phần tử vào Queue:
Code:

public void push(int x) // Cai phuong thuc (thua ke giao dien) them phan tu vao Queue
{
if (!this.isFull())
{
this.top++;
this.day[this.top] = x;
}
else
Console.WriteLine("\n\n\t Queue day !!!");
}

Queue = Vào trước ra trước:
Hàm pop - Lấy phần tử ra khỏi queue

public void pop(ref int x) // Cai phuong thuc (thua ke giao dien) lay phan tu Queue
{
x = this.day[0];
for (int i = 0; i < this.top; i++)
{
this.day[i] = this.day[i + 1];
}
this.top--;
}

------------------------
Bài Code hoàn chỉnh TẠI ĐÂY
Các bạn lấy Code hoàn chỉnh về tham khảo nhé!
- Stack mình sẽ gửi các bạn sau.
Chúc các bạn học tập tốt

11/7/12

Giải phương trình bậc 2 trong C, C# - Lập trình hướng đối tượng

Giải phương trình bậc 2 trong C, C# - Bài tập nhập môn của lập trình hướng đối tượng. Giải phương trình bậc 2 chắc hẳn chúng ta đã quen với nhiều phương pháp khác nhau. Bài Code ở đây trình bày theo hướng lập trình hướng đối tượng.
Giải phương trình bậc 2 trong C
Hàm nhập gồm 3 thuộc tính A, B, C
Code:

public void Nhap()
{
Console.Write("\t Nhap he so a: ");
this.a = float.Parse(Console.ReadLine());
Console.Write("\t Nhap he so b: ");
this.b = float.Parse(Console.ReadLine());
Console.Write("\t Nhap he so c: ");
this.c = float.Parse(Console.ReadLine());
}

Phương thức giải phương trình bậc 2.
Code:

public void GiaiPT()
{
float delta, x1, x2;
delta = this.b * this.b - 4 * this.a * this.c;
if (delta > 0)
{
x1 = (float)(-this.b - Math.Sqrt(delta)) / (2 * this.a);
x2 = (float)(-this.b + Math.Sqrt(delta)) / (2 * this.a);
Console.WriteLine("\n Phuong trinh co 2 nghiem la X1 = {0} va X2 = {1}", x1.ToString("0.000"), x2.ToString("0.000"));
}
else if (delta == 0)
{
x1 = (-this.b) / (2 * this.a);
Console.WriteLine("\n Phuong trinh co nghiem duy nhat X = {0}", x1.ToString("0.000"));
}
else
Console.WriteLine("\n Phuong trinh vo nghiem");
}

Code đầy đủ các bạn TẢI TẠI ĐÂY
- Sửa lại chữ Menu4 thành Menu dùm mình.
----------------------
Chúc các bạn học tập tốt !

11/5/12

Xử lý phân số trong C, C# - cộng, trừ, nhân, chia, ước số chung lớn nhất

Bài tập lập trình hướng đối tượng tiếp theo mình gửi tới các bạn: Xử lý phân số trong C, C#. Gồm các hàm: Cộng 2 phân số, trừ 2 phân số, tích 2 phân số, thương 2 phân số, tìm ước số chung lớn nhất của tử số và mẫu số, mục đích là để tối giản, rút gọn phân số.
Cộng trừ nhân chia phân số trong C
Cụ thể các hàm:
- Tìm ước số chung lớn nhất

public int USCLN()
{
int t, m;
//lay gia tri tuyet doi cua va mau
t = Math.Abs(this.tu);
m = Math.Abs(this.mau);
//tim USCLN
while (t != 0)
if (t > m)
t = t - m;
else
m = m = t;
//tra ket qua
return t; //hay return m
}

- Cộng 2 phân số:

public Phanso cong(Phanso ps) //phuong thuc cong hai phan so
{
Phanso p_s; //khai bao doi tuong
//tao phan so p_s trong bo nho
p_s = new Phanso();
//tim tu va mau cua phan so p_s
p_s.tu = (this.tu * ps.mau + this.mau * ps.tu);
p_s.mau = (this.mau * ps.mau);
//toi gian phan so
p_s.toigian();
//doi dau mau
p_s.doidaumau();
//tra ket qua
return p_s;
}

- Trừ 2 phân số:

public Phanso tru(Phanso ps)
{
Phanso p_s;
//tao phan so p_s trong bo nho
p_s = new Phanso();
//tim tu va mau cua phan so p_s
p_s.tu = (this.tu * ps.mau - this.mau * ps.tu);
p_s.mau = (this.mau * ps.mau);
//toi gian phan so
p_s.toigian();
//doi dau mau
p_s.doidaumau();
//tra ket qua
return p_s;
}

- Nhân 2 phân số

public Phanso nhan(Phanso ps)
{
Phanso p_s;
//tao phan so p_s trong bo nho
p_s = new Phanso();
//tim tu va mau cua phan so p_s
p_s.tu = (this.tu * ps.tu);
p_s.mau = (this.mau * ps.mau);
//toi gian phan so
p_s.toigian();
//tra ket qua
return p_s;
}

- Chia 2 phân số:

public Phanso chia(Phanso ps)
{
Phanso p_s;
//tao phan so p_s trong bo nho
p_s = new Phanso();
//tim tu va mau cua phan so p_s
p_s.tu = (this.tu * ps.mau);
p_s.mau = (this.mau * ps.tu);
//tra ket qua
return p_s;
}

trên đây là những hàm xử lý phân số.
Bài code hoàn hình các bạn TẠI ĐÂY
Chúc các bạn học tập tốt !

11/3/12

Tính thể tích - diện tích hình trụ trong C C# - Bài toán hình trụ

Bài Code tiếp theo về lập trình hướng đối tượng, lớp (class) thừa kế. Gửi tới các bạn Code Tính thể tích - diện tích hình trụ trong C C# - Bài toán hình trụ. Trong Code này mình có sử dụng thừa kế của lớp hình tròn. Lớp hình tròn mình đã giới thiệu Ở ĐÂY. Bài toán xử lý hình trụ mình xây dựng thêm các hàm tính thể tích, diện tích của hình trụ.
Tính thể tích - diện tích hình trụ trong C

Vẫn như những bài Code trước, các hàm nhập, cập nhật...
Cụ thể:
Code:

public class HinhTru : HinhTron //thua ke class HinhTron
{
//thuoc tinh
private float h;
//phuong thuc
public void NhapHTru()
{
base.Nhap();
Console.Write("Nhap chieu cao: ");
this.h = float.Parse(Console.ReadLine());
}
public void CapNhatChieuCao(float cc)
{
this.h = cc;
}
public double TheTich()
{
double tt;
tt = this.Dientich() * this.h;
return tt;
}
public double DienTichXQ()
{
double dtxq;
dtxq = this.Chuvi() * this.h;
return dtxq;
}
public void Xuat()
{
Console.WriteLine("\t Chieu cao: " + this.h + "\n");
base.Xuat();
Console.ReadLine();
}
public void Menu(out byte Chon)
{
Console.Clear();
Console.WriteLine("\n\t|| BAN DA LUA CHON - THAO TAC VOI HINH TRU");
Console.WriteLine("\t||----------------------------------------||");
Console.WriteLine("\t|| 1. - Nhap thong tin hinh tru ||");
Console.WriteLine("\t|| 2. - Cap nhap diem ||");
Console.WriteLine("\t|| 3. - Cap nhap hoanh do ||");
Console.WriteLine("\t|| 4. - Cap nhap tung do ||");
Console.WriteLine("\t|| 5. - Cap nhat chieu cao ||");
Console.WriteLine("\t|| 6. - Cap nhap ban kinh ||");
Console.WriteLine("\t|| 7. - Tinh the tich hinh tru ||");
Console.WriteLine("\t|| 8. - Tinh dien tich hinh tru ||");
Console.WriteLine("\t|| 9. - Xuat thong tinh hinh tru ||");
Console.WriteLine("\t|| 0. - Ve menu chinh ||");
Console.WriteLine("\t||----------------------------------------||");
Console.Write("\n\t\t NHAP LUA CHON: ");
Chon = byte.Parse(Console.ReadLine());
}
public void Main()
{
HinhTru HTru = new HinhTru();
byte Chon;
char kitu10;
int a, b;
float h1;
double r1;
do
{
Menu(out Chon);
switch (Chon)
{

case 1:
Console.Clear();
HTru.NhapHTru();
break;
case 2:
Console.Clear();
Console.Write("\t= Nhap ten diem: ");
kitu10 = char.Parse(Console.ReadLine());
HTru.Capnhapdiem(kitu10);
break;
case 3:
Console.Write("\t= Nhap hoanh do: ");
a = int.Parse(Console.ReadLine());
HTru.Capnhaphoanhdo(a);
break;
case 4:
Console.Write("\t= Nhap tung do: ");
b = int.Parse(Console.ReadLine());
HTru.Capnhattungdo(b);
break;
case 5:
Console.Write("\t= Nhap chieu cao: ");
h1 = int.Parse(Console.ReadLine());
HTru.CapNhatChieuCao(h1);
break;
case 6:
Console.Write("\t= Nhap ban kinh r = ");
r1 = int.Parse(Console.ReadLine());
HTru.Capnhapbankinh(r1);
break;
case 7:
Console.Clear();
double V;
V = HTru.TheTich();
Console.Write("\t\n The tich hinh tru la: " + V.ToString("0.000")); // Xu ly cat chuoi
Console.ReadLine();
break;
case 8:
Console.Clear();
double Sht;
Sht = HTru.DienTichXQ();
Console.Write("\t\n Dien tich hinh tru la: " + Sht.ToString("0.000")); // Xu ly cat chuoi
Console.ReadLine();
break;
case 9:
Console.Clear();
Console.Write("Thong tin cua hinh tru \n");
HTru.Xuat();
Console.ReadLine();
break;
case 0:
break;
default:
Console.WriteLine("\n\t Khong co lua chon nay ! !");
break;
}
} while (Chon != 0);
}
}

-----------------------
Chúc các bạn học tập tốt !

11/2/12

Tính chu vi - diện tích hình tròn trong C, C# - Code Lập trình hướng đối tượng

Bài tập tính chu vi, diện tích hình tròn trong C# mình làm theo hướng dẫn của thầy lập trình hướng đối tượng. Trong bài này những hàm phải xây dựng cho lớp Điểm (tọa độ): Nhập điểm, Cập nhật điểm (hoành độ, tung độ, ký tự điểm). Bên lớp hình tròn kế thừa lại lớp điểm để xây dựng thêm các hàm khác như: Tâm (tọa độ), tính chu vi hình tròn, tính diện tích hình tròn...
Tính chu vi - diện tích hình tròn trong C

Cụ thể:
Class Diem
Code:

public class Diem
{
// Khai bao thuoc tinh
private char kitu;
private int x,y;
// Phuong thuc nhap
public Diem() //Phuong thuc khoi tao khong co tham so
{
this.kitu='O';
this.x=this.y=0;
}
public Diem(char ch, int a, int b) // Phuong thuc khoi tao co tham so
{
this.kitu=ch;
this.x=a;
this.y=b;
}
public void Nhap()
{
Console.Write("\t- Diem: ");
Console.ReadLine();
Console.Write("\t- Tung do: ");
this.x=int.Parse(Console.ReadLine());
Console.Write("\t- Hoanh do: ");
this.y=int.Parse(Console.ReadLine());
}
public void Capnhapdiem(char ch)
{
this.kitu = ch;
}
public void Capnhaphoanhdo(int a)
{
this.x = a;
}
public void Capnhattungdo(int b)
{
this.y = b;
}
public char Dockitu()
{
return this.kitu;
}
public int Dochoanhdo()
{
return this.x;
}
public int Doctungdo()
{
return this.y;
}
public void Xuat()
{
Console.Write(kitu+"("+this.x+","+this.y+")");
}
}

Class HinhTron:Diem (lớp hình tròn kế thừa lớp điểm)
Code:

public class HinhTron:Diem
{
// Thuoc tinh
private double bankinh;
// Cac phuong thuc
public HinhTron():base()
{
this.bankinh = 0;
}
public HinhTron(int r):base()
{
this.bankinh = r;
}
public HinhTron(char ch, int a, int b, double r):base(ch,a,b)
{
this.bankinh = r;
}
public void Nhap()
{
Console.WriteLine("\t\n- Cac toa do cua tam");
base.Nhap();
Console.Write("\t - Ban kinh hinh tron: ");
this.bankinh = double.Parse(Console.ReadLine());
}
public void Capnhapbankinh(double r)
{
this.bankinh = r;
}
public double Docbankinh()
{
return this.bankinh;
}
public double Dientich()
{
return Math.PI * this.bankinh * this.bankinh;
}
public double Chuvi()
{
return 2 * Math.PI * this.bankinh;
}
public void Xuat()
{
Console.Write("\t Tam: ");
base.Xuat();
Console.WriteLine("\t Ban kinh: "+ this.bankinh);
Console.ReadLine();
}
public void Menu(out byte chon)
{
Console.Clear();
Console.WriteLine("\t||--------------------------------------------||");
Console.WriteLine("\t|| 1. - Nhap thong tin hinh tron ||");
Console.WriteLine("\t|| 2. - Cap nhap diem ||");
Console.WriteLine("\t|| 3. - Cap nhap hoanh do ||");
Console.WriteLine("\t|| 4. - Cap nhap tung do ||");
Console.WriteLine("\t|| 5. - Cap nhap ban kinh ||");
Console.WriteLine("\t|| 6. - Tinh chu vi hinh tron ||");
Console.WriteLine("\t|| 7. - Tinh dien tich hinh tron ||");
Console.WriteLine("\t|| 8. - Xuat thong tinh hinh tron ||");
Console.WriteLine("\t|| 0. - Ve menu chinh ||");
Console.WriteLine("\t||--------------------------------------------||");
Console.Write("\n\t\t NHAP LUA CHON: ");
chon5 = byte.Parse(Console.ReadLine());
}
public void Main()
{
HinhTron HT = new HinhTron();
//HT.NhapHT();
//double DTich;
//DTich = HT.Dientich();
//Console.Write("Dien tich hinh tron vua nhap la: {0}", DTich);
byte chon;
char kitu1;
int a, b;
double r1;
do
{
Menu5(out chon);
switch (chon)
{

case 1:
Console.Clear();
HT.Nhap();
break;
case 2:
Console.Clear();
Console.Write("\t= Nhap ten diem: ");
kitu1 = char.Parse(Console.ReadLine());
HT.Capnhapdiem(kitu1);
break;
case 3:
Console.Write("\t= Nhap hoanh do: ");
a = int.Parse(Console.ReadLine());
HT.Capnhaphoanhdo(a);
break;
case 4:
Console.Write("\t= Nhap tung do: ");
b = int.Parse(Console.ReadLine());
HT.Capnhattungdo(b);
break;
case 5:
Console.Write("\t= Nhap ban kinh r = ");
r1 = int.Parse(Console.ReadLine());
HT.Capnhapbankinh(r1);
break;
case 6:
Console.Clear();
double P;
P = HT.Chuvi();
Console.Write("\t\n Chu vi hinh tron la: " + P.ToString("0.000")); // xử lý cắt chuỗi
Console.ReadLine();
break;
case 7:
Console.Clear();
double S;
S = HT.Dientich();
Console.Write("\t\n Dien tich hinh tron la: " + S);
break;
case 8:
Console.Clear();
Console.Write("Thong tin hinh tron \n");
HT.Xuat();
break;
case 0:
Console.Clear();
break;
default:
Console.WriteLine("\n\t Khong co lua chon nay !");
break;

}
} while (chon != 0);
}
}

Mình đưa toàn bộ code lên, có thể hơi dài nhưng tiện cho các bạn copy and run ^_^
--------------------
Chúc các bạn học tập tốt!

10/29/12

Bài toán xử lý ma trận trong C, C#

Code bài tập xử lý ma trận trong C# - Lập trình hướng đối tượng.
Bài tập này mình làm cho môn lập trình hướng đối tượng @.@ Nhắc đến lập trình là cũng hơi ngán rồi. Bài tập tính toán ma trận này gồm các hàm: Nhập ma trận, cập nhật phần tử ma trận, tính tổng cộng 2 ma trận, hiệu 2 ma trận, tích 2 ma trận, xuất ma trận. Ở Code C các bạn chuyển đổi lại theo C
Ma trận trong C
Bạn nào có cần bài tập xử lý ma trận trong C# - Lập trình hướng đối tượng thì tham khảo code nhé !
Code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class Matran
{
// Cac thuoc tinh
private int So_Hang;
private int So_Cot;
private int[,] MT;
// Phuong thuc khoi tao
public Matran(int sh, int sc)
{
this.So_Hang = sh;
this.So_Cot = sc;
this.MT = new int[sh, sc];
}
// Phuong thuc Nhap ma tran
public void NhapMT()
{
Console.Write("\n\t Nhap so hang cua ma tran: ");
this.So_Hang = int.Parse(Console.ReadLine());
Console.Write("\n\t Nhap so cot cua ma tran: ");
this.So_Cot = int.Parse(Console.ReadLine());
for (int i = 1; i <= this.So_Hang; i++)
for (int j = 1; j <= this.So_Cot; j++)
{
Console.Write("\n\t - Nhap phan tu thu A[" + i + "," + j + "]: ");
this.MT[i, j] = int.Parse(Console.ReadLine());
}
}
// Tim kiem phan tu ma tran
public int Tim_Kiem(int x)
{
for (int i = 1; i <= this.So_Hang; i++)
for (int j = 1; j <= this.So_Cot; j++)
if (this.MT[i, j] == x)
return 1;
return 0;
}
// Cap nhat phan tu
public void CapNhat(int m, int n, int pos)
{
this.MT[m, n] = pos;
}
// Cong 2 ma tran
public Matran Cong2MT(Matran a, Matran b)
{
Matran c = new Matran(this.So_Hang,this.So_Cot);
if (a.So_Hang == b.So_Hang && a.So_Cot == b.So_Cot)
{
for (int i = 0; i < this.So_Hang; i++)
{
for (int j = 0; j < this.So_Cot; j++)
{
c.MT[i, j] = a.MT[i, j] + b.MT[i, j];
}
}
}
else
{
Console.WriteLine("\n\t Khong cong duoc !!! \n");
}
return c;
}
// Tru 2 ma tran
public Matran Hieu2MT(Matran a, Matran b)
{
Matran c = new Matran(this.So_Hang, this.So_Cot);
if (a.So_Hang == b.So_Hang && a.So_Cot == b.So_Cot)
{
for (int i = 0; i < this.So_Hang; i++)
{
for (int j = 0; j < this.So_Cot; j++)
{
c.MT[i, j] = a.MT[i, j] - b.MT[i, j];
}
}
}
else
{
Console.WriteLine("\n\t Khong tru duoc !!!");
}
return c;
}
// Tich 2 ma tran
public Matran Tich2MT(Matran a, Matran b)
{
Matran c = new Matran(this.So_Hang, this.So_Cot);
if (a.So_Cot != b.So_Hang)
{
Console.Write("\n\t ERROR: Khong thuc hien dc phep nhan !!!");
}
else
{
for (int i = 0; i < this.So_Hang; i++)
for (int j = 0; j < this.So_Cot; j++)
{
c.MT[i, j] = 0;
for (int k = 0; k < b.So_Hang; k++)
{
c.MT[i, j] += a.MT[i, k] * b.MT[k, j];
}
}
}
return c;
}
// Xuat Ma tran
public void XuatMT()
{
Console.WriteLine("\t Ma tran: \n");
for (int i = 1; i <= this.So_Hang; i++)
{
for (int j = 1; j <= this.So_Cot; j++)
{
Console.Write("\t" + this.MT[i,j] +" ");
}
Console.WriteLine();
}
}
// Menu 9
public void Menu(out byte chon)
{
Console.Clear();
Console.WriteLine("\n\t|| BAN DA LUA CHON 9 - BAI TOAN MA TRAN || ");
Console.WriteLine("\t||----------------------------------------||");
Console.WriteLine("\t|| 1. Nhap Ma Tran ||");
Console.WriteLine("\t|| 2. Cap nhap phan tu Ma Tran. ||");
Console.WriteLine("\t|| 3. Tong hai Ma tran ||");
Console.WriteLine("\t|| 4. Hieu hai Ma tran ||");
Console.WriteLine("\t|| 5. Tich hai Ma Tran ||");
Console.WriteLine("\t|| 6. Xuat Ma Tran ||");
Console.WriteLine("\t|| 0. Quay ve Menu chinh ||");
Console.WriteLine("\t||________________________________________||\n");
Console.Write("\n\tNHAP LUA CHON: ");
chon = byte.Parse(Console.ReadLine());
}
// Main 9
public void Main()
{
Matran M1 = new Matran(50,50);
Matran M2 = new Matran(50,50);
Matran M3 = new Matran(50,50);
byte chon;
int pos;
int h, c, n;
//int[,] a;
do
{
Menu9(out chon);
switch(chon)
{
case 1:
M1.NhapMT();
break;
case 2:
Console.Write("\n\t Nhap vi tri phan tu can cap nhat \n");
Console.Write("\t\tHang: ");
h = int.Parse(Console.ReadLine());
Console.Write("\n\t\t Cot: ");
c = int.Parse(Console.ReadLine());
Console.Write("\n\t\t Gia tri: ");
n = int.Parse(Console.ReadLine());
if (M1.Tim_Kiem(n) == -1)
{
Console.Write("\n\t KET QUA TIM KIEM KHONG HOP LE !!!");
}
else
{
Console.Write("\n\t Nhap gia tri moi: ");
pos = int.Parse(Console.ReadLine());
M1.CapNhat(h, c, pos);
}
Console.ReadLine();
break;
case 3:
Console.WriteLine("\n\t Nhap ma tran 1: ");
M1.NhapMT();
Console.WriteLine("\n\t Nhap ma tran thu 2: ");
M2.NhapMT();
Console.WriteLine("\t Tong hai ma tran la: ");
M3.Cong2MT(M1,M2);
M3.XuatMT();
Console.ReadLine();
break;
case 4:
Console.WriteLine("\n\t Nhap ma tran thu 1: ");
M1.NhapMT();
Console.WriteLine("\n\t Nhap ma tran thu 2: ");
M2.NhapMT();
Console.WriteLine("\t Hieu hai ma tran la: ");
M3.Hieu2MT(M1, M2);
M3.XuatMT();
Console.ReadLine();
break;
case 5:
Console.WriteLine("\n\t Nhap ma tran thu 1: ");
M1.NhapMT();
Console.WriteLine("\n\t Nhap ma tran thu 2: ");
M2.NhapMT();
Console.WriteLine("\n\t Tich 2 Ma tran la: ");
M3.Tich2MT(M1,M2);
M3.XuatMT();
Console.ReadLine();
break;
case 6:
M1.XuatMT();
Console.ReadLine();
break;
case 0:
Console.Clear();
break;
default:
Console.Write("\n KHONG CO LUA CHON NAY !!!");
break;
}
} while(chon!=0);
}
}

10/28/12

Bài tập xử lý dãy số trong C, C# - Lập trình hướng đối tượng

Bài tập xử lý dãy số trong C# - Lập trình hướng đối tượng.
Bài tập này mình làm cho môn lập trình hướng đối tượng @.@ Nhắc đến lập trình là cũng hơi ngán rồi. Xử lý dãy số trong C này gồm những hàm sau: Cập nhật, tìm kiếm phần tử, tính tổng các phần tử trong dãy số, tính trung bình cộng các phần tử, in dãy con các số nguyên tố, sắp xếp các phần tử theo thứ tự tăng.
Bạn nào có cần bài tập xử lý dãy số trong C# - Lập trình hướng đối tượng thì tham khảo nhé !
Code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

class DaySo
{
//cac thuoc tinh
private int[] ds;
private int sopt;

//cac phuong thuc
public DaySo(int n)
{
this.ds = new int[n];
this.sopt = 0;
}
public void Nhap()
{
//string x;
Console.Write("\t Nhap so phan tu cua mang: ");
this.sopt = int.Parse(Console.ReadLine());
for (int i = 0; i < this.sopt; i++)
{
Console.Write("\t Nhap phan tu thu " + i + ": ");
this.ds[i]=int.Parse(Console.ReadLine());
}
}
public void CapNhat(int pos, int a)
{
this.ds[pos] = a;
}
public int TimKiem(int a)
{
for (int i = 0; i < this.sopt; i++)
{
if (this.ds[i] == a)
return i;
}
return -1;
}
public void Sapxep()
{
int tam;
for (int i = 0; i < this.sopt; i++)
for (int j = i + 1; j <= this.sopt; j++ )
{
if (this.ds[i] > this.ds[j])
{
tam = this.ds[i];
this.ds[i] = this.ds[j];
this.ds[j] = tam;
}
}
Console.WriteLine("\t Cac phan tu sau khi sap xep la: ");
for (int i = 1; i <= this.sopt; i++)
Console.WriteLine("\t" + this.ds[i]);
}
public int Doc(int pos)
{
return this.ds[pos - 1];
}
public long TinhTong()
{
long tg = 0;
for (int i = 0; i < this.sopt; i++)
{
tg += this.ds[i];
}
return tg;
}
public float TrungBinhCong()
{
return (this.TinhTong() / this.sopt);
}
public bool LaSoNguyenTo(int i)
{
if (this.ds[i] < 2)
return false;
for (int j = 2; j <= this.ds[i] / 2; j++)
if (this.ds[i] % j == 0)
return false;
return true;
}
public DaySo DayCon()
{
DaySo a = new DaySo(this.sopt);
for (int i = 0; i < this.sopt; i++)
{
if (this.LaSoNguyenTo(this.ds[i]))
{
a.ds[a.sopt] = ds[i];
a.sopt++;
}
}
return a;
}
public void Xuat()
{
Console.Write("Day phan tu: ");
for (int i = 0; i < this.sopt; i++)
Console.Write(this.ds[i] + " ");
}
public static void Menu(out byte chon)
{
Console.Clear();
Console.WriteLine("\n\t|| BAN DA LUA CHON 4 - THAO TAC DAY SO || ");
Console.WriteLine("\t||----------------------------------------||");
Console.WriteLine("\t|| 1. Nhap ||");
Console.WriteLine("\t|| 2. Cap nhat. ||");
Console.WriteLine("\t|| 3. Tim kiem. ||");
Console.WriteLine("\t|| 4. Tinh tong cac phan tu. ||");
Console.WriteLine("\t|| 5. Tinh trung binh cong cac phan tu. ||");
Console.WriteLine("\t|| 6. In day con cac so nguyen to. ||");
Console.WriteLine("\t|| 7. Sap xep phan tu theo thu tu tang ||");
Console.WriteLine("\t|| 8. Xuat day ||");
Console.WriteLine("\t|| 0. Ve menu chinh ||");
Console.WriteLine("\t||________________________________________||\n");
Console.Write("\n\tNHAP LUA CHON: ");
chon4 = byte.Parse(Console.ReadLine());
}
public void Main()
{
DaySo d1 = new DaySo(50);
byte chon;
int pos, gt;
do
{
Menu4(out chon);
switch (chon)
{
case 1:
d1.Nhap();
break;
case 2:
Console.Write("\t Vi tri can cap nhat: ");
pos = int.Parse(Console.ReadLine());
if (d1.TimKiem(pos) == -1)
{
Console.WriteLine("\t Vi tri khong hop le!!!");
}
else
{
Console.Write("\tNhap gia tri moi: ");
gt = int.Parse(Console.ReadLine());
d1.CapNhat(pos, gt);
}
break;
case 3:
Console.Write("\tNhap vi tri can truy xuat: ");
pos = int.Parse(Console.ReadLine());
if (d1.TimKiem(pos) == -1)
{
Console.WriteLine("\tVi tri khong hop le!!!");
}
else
{
Console.WriteLine("\tGia tri tai vi tri truy xuat la: " + d1.Doc(pos));
}
break;
case 4:
long tong;
tong = d1.TinhTong();
Console.Write("\n\t Tong cac phan tu la: {0}", tong);
break;
case 5:
float TBC;
TBC = d1.TrungBinhCong();
Console.Write("\n\t Trung Binh Cong cac phan tu la: {0} ",TBC);
break;
case 6:
//int[] i;
//Console.WriteLine("\t\n Cac so nguyen to: " +i );
break;
case 7:
//int n=this.sopt;
//int[] a=this.ds;
d1.Sapxep();
break;
case 8:
d1.Xuat();
break;
case 0:
Console.Clear();
break;
default:
Console.WriteLine("\n\n\t Khong co lua chon nay !!!");
break;
}
Console.ReadLine();
}
while (chon != 0);
}
}

10/31/10

Quản lí nhân viên ( danh sách liên kết )

xin gửi tới code C về bài tập quản lí nhân viên, bảng lương của nhân viên, thông tin nhân viên.....
dựa vào bài này, các bạn có thể xây dựng thêm những hàm quản lí khác

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iomanip.h>
#include <conio.h>
#include <ctype.h>
struct Date{
int ngay;
int thang;
int nam;
};
struct NhanVien{
char manv[10];
char holot[15];
char ten[10];
Date ngaysinh;
int phai; //0:nu , 1:nam
char noisinh[20];
long phucap;
long lcb;
int ngaycong;
};
struct Node{
NhanVien dataNV;
Node *next;
};
typedef Node *DSNV;
//=====================================
void manHinh(){
printf("\n ################### QUAN LY NHAN VIEN ##################");
printf("\n #======================================================#");
printf("\n #======================================================#");
printf("\n # 1-Them nhan vien ## 5-Xoa mot nhan vien #");
printf("\n # 2-Tim 1 nhan vien ## 6-In bang luong #");
printf("\n # 3-Sua thong tin nv ## 7-Xoa tat ca nhan vien #");
printf("\n # 4-Sap xep nv theo ten ## 0-Thoat chuong trinh #");
printf("\n #======================================================#");
printf("\n #=========== SV KHOA CNTT- DH GTVT TPHCM ===========#");
printf("\n ########################################################");

}
void BangLuong(DSNV first);
//===========ham kiem tra nam nhuan=======
int ktNam(int nam){
if(nam%400==0 || ((nam%4==0) && (nam%100 != 0))) //nam nhuan tra ve 366 ngay
return 366;
return 365;
}
//==========ham kiem tra so ngay trong thang==
int soNgay(int thang,int nam){
int songay;
switch(thang){
case 4:
case 6:
case 9:
case 11:
songay = 30;
break;
case 2:
if(ktNam(nam)==366)
songay = 29;
songay = 28;
break;
default:
songay = 31;
break;
}
return songay;
}
//=======ham nhap ngay thang===========
void NhapThoiGian(Date &tg){
do{
fflush(stdin);
printf("\t Nhap ngay thang nam(dinh dang dd/mm/yy): ");
scanf("%d/%d/%d",&tg.ngay,&tg.thang,&tg.nam);
fflush(stdin);
if((tg.ngay>0)&&(tg.ngay<=soNgay(tg.thang,tg.nam))&&(tg.thang>0)&&(tg.thang<=12)) break; printf("\nvui long kiem tra lai ngay thang \n"); }while(1); } //=============ham khoi tao ====== void KhoiTao(DSNV *head){ *head=NULL; } //=========ham tim nhan vien====== DSNV TimNhanVien(DSNV head,char key[10]) { DSNV p; p=head; while((p!=NULL)&&strcmp(p->dataNV.manv,key)!=0)
p=p->next;
return p;
}
//============ham nhap nhan vien ==
void NhapNhanVien(NhanVien &nv){
// Rang buoc du lieu nhap :Phai la 0 hay 1 ,0<= ngay cong <= 31; //clrscr(); printf("\n\t Nhap cac thong tin cua nhan vien : Ho lot , ten , ....\n\n"); fflush(stdin); printf("\n\t Ho lot : "); gets(nv.holot); fflush(stdin); printf("\n\t Ten : "); gets(nv.ten); fflush(stdin); NhapThoiGian(nv.ngaysinh); // nhap vao gioi tinh ( rang buoc la 0 hay 1) do{ fflush(stdin); printf("\n\t Phai (1:Nu, 0:Nam ): "); scanf("%d" ,&nv.phai); }while(nv.phai!=0 && nv.phai!=1); fflush(stdin); printf("\n\t Noi sinh : "); gets(nv.noisinh); fflush(stdin); printf("\n\t Phu cap :"); scanf("%ld",&nv.phucap); fflush(stdin); printf("\n\t Luong co ban :"); scanf("%ld",&nv.lcb); fflush(stdin); printf("\n\t Ngay cong :"); scanf("%d",&nv.ngaycong); } //=============ham in nhan vien==== void InNhanVien(NhanVien nv){ float luong;// bien tam chua luong luong = float(nv.lcb*nv.ngaycong)/26 + nv.phucap; // tinh luong printf("\n\t Ma so :%s ",nv.manv); printf("\n\t Ho va ten :%s %s",nv.holot,nv.ten); printf("\n\t Ngay sinh :%d/%d/%d ",nv.ngaysinh.ngay,nv.ngaysinh.thang,nv.ngaysinh.nam); if(nv.phai==1) printf("\n\t Phai :nu "); else printf("\n\t phai: nam "); printf("\n\t Noi sinh :%s",nv.noisinh); printf("\n\t Phu cap :%ld",nv.phucap); printf("\n\t Luong co ban :%ld",nv.lcb); printf("\n\t Ngay cong :%d",nv.ngaycong); printf("\n\t Luong :%.1f",luong); } //===============ham tim nhan vien====== void Tim(DSNV first){ NhanVien nv; DSNV pos; printf("\n\t Ma nhan vien : "); fflush(stdin); gets(nv.manv); pos=TimNhanVien(first,nv.manv); // kiem tra xem nhan vien co trong danh sach hay chua if(pos==NULL) // nhan vien nay chua co trong danh sach printf("khong co nhan vien nay"); else InNhanVien(pos->dataNV);

}
// =========ham them cuoi =========
void ThemCuoiNV(DSNV *first,NhanVien NV_Them)
{
DSNV ps,ns;
ns=new Node;
ns->dataNV=NV_Them;
ps=*first;
if(ps==NULL)//danh sach rong
{
ns->next=*first;
*first=ns;
}
else
{
while(ps->next!=NULL)
ps=ps->next;
ns->next=ps->next;
ps->next=ns;
}
}
//====================
//=======================================//
void Them(DSNV *first){
NhanVien nv;//bien tam chua cac thong tin cua nhan vien
char tieptuc;
// vong lap them nhan vien
do{
printf("\n\t Them nhan vien vao danh sach ");
printf("\n\t Ma nhan vien : ");
fflush(stdin);
gets(nv.manv);
// kiem tra xem nhan vien co trong danh sach hay chua
if(TimNhanVien(*first,nv.manv)==NULL) // nhan vien nay chua co trong danh sach
{
NhapNhanVien(nv);// nhap cac thong tin ho lot , ten ....
ThemCuoiNV(first,nv); // them nhan vien nv vao danh sach

}
else{
printf("\n\t Nhan vien co ma so :%s da co trong danh sach ",nv.manv);

}
printf("\n\t Tiep tuc (Y/N)?: ");
tieptuc=getch();

}while((tieptuc=='Y')||(tieptuc=='y'));
}
//=========sua nhan vien========
void SuaNhanVien(DSNV *first)
{
DSNV ps;
NhanVien a;
Date tgTam;
do{
printf("\n nhap ma so nhan vien can sua:");
fflush(stdin);
gets(a.manv);
ps=TimNhanVien(*first,a.manv);
if(ps!=NULL)
break;
printf("\n Ma so nhan vien khong ton tai . vui long nhap lai");
}while(1);
printf("\n Tim thay ma so nhan vien \n");
InNhanVien(ps->dataNV);
printf("\n Tien hanh chinh sua: \n");
NhapNhanVien(a);
ps->dataNV=a;
printf("\n da sua xong");
}
//==========xoa mot nhan vien===
void XoaNhanVien(DSNV *first)
{
DSNV ps,qs;
char k[10] ;
ps = *first;
printf("\n nhap ma so nhan vien can xoa:");
fflush(stdin);
gets(k);
if(TimNhanVien(*first,k)==NULL)
printf("\n Ma so nhan vien khong ton tai . vui long thu lai");
else
{
if(ps->next==NULL)
{
*first=NULL;
delete ps;
}
else{
while(ps!=NULL)
{
qs=ps;
ps=ps->next;
if(strcmp(ps->dataNV.manv,k)==0)
break;
}
qs->next=ps->next;
delete ps;
}
printf("\n Da xoa xong");
}
}
//================sap xep danh sach theo ten=========
void SapXep(DSNV *first){
DSNV p,q;
NhanVien tam;
p= *first;
while(p->next!=NULL){
q=p->next;
while(q!=NULL){
if(strcmp(q->dataNV.ten,p->dataNV.ten)<0){ tam="q-">dataNV;
q->dataNV=p->dataNV;
p->dataNV=tam;

}
q=q->next;
}
p=p->next;
}
printf("\nsap xep xong");
BangLuong(*first);

}
//============= in bang luong ========
void BangLuong(DSNV first){
float luong,tongluong=0;
int stt=1;
char gach[80],tua[80];
DSNV p;
p = first;
strcpy(gach,"--------------------------------------------------------------------------------");
strcpy(tua,"|STT | Ho Ten | LCB | Phu cap |Ngay cong | Luong ");
clrscr();
printf("\n cong ty Hong Minh ");
printf("\n\t\t\t BANG LUONG \n");
printf("%s",gach);
printf("%s",tua);
while(p!=NULL)
{
luong=float(p->dataNV.lcb*p->dataNV.ngaycong)/26+p->dataNV.phucap;
tongluong+=luong;
// in cac thong tin chi tiet cua nhan vien
printf("\n|%-5d|%-15s %10s|%10ld|%12ld|%10d|%10.1f",stt,p->dataNV.holot
,p->dataNV.ten,p->dataNV.lcb,p->dataNV.phucap,p->dataNV.ngaycong
,luong);
stt++;
p=p->next;
// xu ly ngat dong :10 dong
if(stt%10==0){
getch();
}


}
printf("\n\t\t Tong luong : %f",tongluong);
}
//=========xoa tat ca danh sach ==========
void XoaTatCaNV(DSNV *first)
{
DSNV ps,qs;
ps=*first;
*first=NULL;
while(ps!=NULL)
{
qs=ps;
ps=ps->next;
delete qs;
}
printf("\n Da xoa xong");

}
//==========ghi file===========
void GhiFileDuLieu(DSNV first)
{
FILE *f;
DSNV ps;NhanVien a;
f=fopen("DULIEU.NTL","wb");
ps=first;
while(ps!=NULL)
{
a=ps->dataNV;
fwrite(&a,sizeof(a),1,f);
ps=ps->next;
}
fclose(f);
}
//============doc file =============
void DocFileDuLieu(DSNV *first)
{
FILE *f;
NhanVien a;
f=fopen("DULIEU.NTL","rb");
if (f==NULL )
printf("\n DU LIEU KO TON TAI .DA TAO MOI FILE DU LIEU \n");
else
{
printf("\n DA TAI DU LIEU TU FILE DU LIEU \n");
while(fread(&a,sizeof(a),1,f)==1)
{
ThemCuoiNV(first,a);
}
fclose(f);
}

}
int main(){

DSNV head;
KhoiTao(&head);
DocFileDuLieu(&head);
//NhanVien n;
//NhapNhanVien(n);
//InNhanVien(n);
int luaChon;
giaoDien:
manHinh();
printf("\n Nhap lua chon : ");
scanf("%d",&luaChon);
clrscr();;
switch(luaChon)
{
case 0:
goto thoatChuongTrinh;
break;
case 1:
Them(&head);
break;
case 2:
Tim(head);
break;
case 3:
SuaNhanVien(&head);
break;
case 4:
SapXep(&head);
break;
case 5:
XoaNhanVien(&head);
break;
case 6:
BangLuong(head);
break;
case 7:
XoaTatCaNV(&head);
break;

default:
printf("\n CHUONG TRINH KHONG CO CHUC NANG NAY");
}
do
{
cout<<"\n An phim Enter de ve menu : ";  
getch();  
break;  
}while(1);  
clrscr();  
goto giaoDien; 
thoatChuongTrinh: 
do {  
printf("\n Chuong trinh ket thuc.Ban se luu lai nhung gi vua thuc hien chu"); printf("\n chon Y de luu lai va thoat,N de thoat khong luu\n 
chon M de ve menu tiep tuc cong viec \n 
chon S de luu file roi tiep tuc cong viec\n");
fflush(stdin);
int chonThoat=getch(); 
if(toupper(chonThoat)=='Y')  
{  
GhiFileDuLieu(head);  
break;  
}  
if(toupper(chonThoat)=='N')  
{ break; }  
if(toupper(chonThoat)=='M')  
{ clrscr;  
goto giaoDien;  
break; }
if(toupper(chonThoat)=='S')
{ GhiFileDuLieu(head);
clrscr();
goto giaoDien;
break; }
clrscr();
printf("\n ban nhap sai chuc nang hay kiem tra lai\n"); }while(1);
return 0; }

CODE + DEMO giải thuật tham lam ( greedy) GTS1 & GTS2.

1. Lý thuyết
- Greedy mình đã trình bày bên GTS1. GTS2 có độ chính xác cao và có độ phức tạp tăng theo. Thuật giải thay đổi so với GTS1
2. Demo
môi trường thực hiện C-FREE
#include<iostream.h>
#include<fstream.h>

using namespace std;

int n,p,v,cs;
int Cost;
int mtTP[20][20];
int Tour[10][20];
int mCost[10];
int Flag[20];

void Input()
{
ifstream f;
f.open("Input.txt");
if(f.bad())
{
cout<<"\n\t File khong ton tai. \n";
exit(1);
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
f>>mtTP[i][j];
}
f.close();
}

int GTS1(int v)
{
for(int i=0;i<=n;i++) Flag[i]=0;
int t=v;
int dem=0;
Tour[t][0]=v;
Cost=0;
Flag[v]=1;
int tmp=v;
while(dem!=n-1)
{
int tmpCost=100;
int co;
for(int i=1;i<=n;i++)
{
if(tmpCost>mtTP[v][i] && Flag[i]==0 && mtTP[v][i]!=-1)
{
tmpCost=mtTP[v][i];
co=i;
}
}
dem++;
Tour[t][dem]=co;
Cost+=tmpCost;
Flag[v]=1;
v=co;
}
Cost+=mtTP[v][tmp];
mCost[t]=Cost;
return Cost;
}

void GTS2()
{
int tmp=100;
for(int i=1;i<=p;i++)
{
int a =GTS1(i);
if(tmp>a)
{
tmp=a;
cs=i;
}
}
}

void Output(int cs)
{
ofstream g;
g.open("Output.txt");
g<<"Chi phi cho qua trinh :"<<mCost[cs]<<endl;
g<<"Hanh trinh nhu sau :";
for(int i=0;i<n;i++)
g<<Tour[cs][i]<<" -->";
g<<Tour[cs][0]<<endl;
}

int main()
{
cout<<" **************** TRI TUE NHAN TAO ******************* \n";
cout<<" | | \n";
cout<<" ************ Khoa CNTT - DH GTVT TPHCM ************** \n";
cout<<" | bai toan ung dung giai thuat GTS2 | \n";
cout<<" ***************************************************** \n\n\n\n\n";
Input();
GTS2();
Output(cs);
return 0;
}
những bài viết về code của mình chỉ mang ý ngĩa tham khảo. cũng có những bài mình code và có những bài bạn bè học chung mình code
xem giải thuật GTS1

10/23/10

code + demo giải thuật A* (A star - A sao) cho bài toán TACI

code + demo giải thuật A* (A star - A sao)cho bài toán TACI
ngôn ngữ viết C++. trình biên dịch C-free. bài toán TACI ứng dụng thuật giải A*
giai thua a sao, sao thuat a star, giai thuat a*
code:
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
#include<windows.h>
void xuat(int X[3][3])
{
cout<<"\n *---*---*---*";
for(int i=0;i>3;i++)
{
cout<<"\n | ";
for(int j=0;j<3;j++)
if((X[i][j]==0)||(X[i][j]==13))
cout<<" | ";
else
cout<<X[i][j]<<" | ";
cout<<"\n *---*---*---*";
}
cout<<endl;
}
int kiem_tra(int X[3][3],int y)
{
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
if(X[i][j]==y)
return 1;
}
return 0;
}
void nhap_s(int S[3][3])
{
int tam;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
system("cls");
cout<<"\n NHAP VAO YEU CAU BAI TOAN ";
cout<<"\n Luu y o trong co gia tri = 0";
cout<<"\n Trang thai dau : \n";
xuat(S);
cout<<" Nhap cac so vao trang thai dau \n";
cout<<"\n Nhap nhap vao vi tri dong "<<i+1<<" cot "<<j+1<<" = ";
cin>>tam;
while(kiem_tra(S,tam)==1)
{
cout<<" so vua nhap da ton tai \n Vui long nhap so khac: ";
cin>>tam;
}
while(tam<8)
{
cout<<" Vui long nhap cac so tu 0 -> 8 : ";
cin>>tam;
}
S[i][j]=tam;
}
}
void nhap_G(int G[3][3],int S[3][3])
{
int tam;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
system("cls");
cout<<"\n NHAP VAO YEU CAU BAI TOAN ";
cout<<"\n Luu y o trong co gia tri = 0";
cout<<"\n Trang thai dau : \n";
xuat(S);
cout<<"\n Trang thai dich :\n";
xuat(G);
cout<<" Nhap cac so vao trang thai dich \n";
cout<<"\n Nhap nhap vao vi tri dong "<<i+1<<" cot "<<j+1<<" = ";
cin>>tam;
while(kiem_tra(G,tam)==1)
{
cout<<" so vua nhap da ton tai \n Vui long nhap so khac: ";
cin>>tam;
}
while(tam>8)
{
cout<<" Vui long nhap cac so tu 0 -> 8 : ";
cin>>tam;
}
G[i][j]=tam;
}
}
void khoitao(int A[3][3],int B[3][3])
{
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
A[i][j]=13;
B[i][j]=13;
}
}
int Her(int A[3][3],int B[3][3])
{
int dem=0;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
if(A[i][j]!=B[i][j])
dem++;
return dem;
}
struct trang_thai
{
int T[3][3];
int g;
int h;
int f;
};
void input_ds(trang_thai DS[100],int&nds,trang_thai X)
{
DS[nds]=X;
nds=nds+1;
}
int tim_min(trang_thai DS[100],int nds)
{
if(nds==0)
{
return -1;
}
else
{
int min,vi_tri;
int i=(nds-1);
min=DS[0].f;
vi_tri=0;
while(i>=0)
{
if(min>DS[i].f)
{
min=DS[i].f;
vi_tri=i;
}
i--;
}
return vi_tri;
}
}
void output_ds(trang_thai DS[100],int&nds,int vi_tri,trang_thai&X)
{
if(vi_tri==(nds-1))
{
X=DS[vi_tri];
nds=nds-1;
}
else
{
X=DS[vi_tri];
for(int i=vi_tri;i<nds-1;i++)
DS[i]=DS[i+1];
nds=nds-1;
}
}
void tim_o_trong(trang_thai X,int&i,int&j)
{
int ngat=0;
int m,n;
for(m=0;m<3;m++)
{
for(n=0;n<3;n++)
{
if(X.T[m][n]==0)
{
ngat=1;
break;
}
}
if(ngat==1)
{
break;
}
}
i=m;
j=n;
}
void AKT(trang_thai DS[100],int&nds,int G[3][3],trang_thai tam)
{
int vi_tri_min;
int i,j;
while(tam.f!=tam.g)
if(nds==0)
{
cout<<" Khong tim duoc loi giai ";
break;
}
else
{
vi_tri_min=tim_min(DS,nds);
output_ds(DS,nds,vi_tri_min,tam);
xuat(tam.T);
tim_o_trong(tam,i,j);
if(i<2)
{
int t;
trang_thai tam2;
tam2=tam;
t=tam.T[i+1][j];
tam2.T[i+1][j]=tam2.T[i][j];
tam2.T[i][j]=t;
tam2.g=tam2.g+1;
tam2.h=Her(tam2.T,G);
tam2.f=tam2.g+tam2.h;
input_ds(DS,nds,tam2);
}
if(i>0)
{
int t;
trang_thai tam2;
tam2=tam;
t=tam.T[i-1][j];
tam2.T[i-1][j]=tam2.T[i][j];
tam2.T[i][j]=t;
tam2.g=tam2.g+1;
tam2.h=Her(tam2.T,G);
tam2.f=tam2.g+tam2.h;
input_ds(DS,nds,tam2);
}
if(j<2)
{
int t;
trang_thai tam2;
tam2=tam;
t=tam.T[i][j+1];
tam2.T[i][j+1]=tam2.T[i][j];
tam2.T[i][j]=t;
tam2.g=tam2.g+1;
tam2.h=Her(tam2.T,G);
tam2.f=tam2.g+tam2.h;
input_ds(DS,nds,tam2);
}
if(j>0)
{
int t;
trang_thai tam2;
tam2=tam;
t=tam.T[i][j-1];
tam2.T[i][j-1]=tam2.T[i][j];
tam2.T[i][j]=t;
tam2.g=tam2.g+1;
tam2.h=Her(tam2.T,G);
tam2.f=tam2.g+tam2.h;
input_ds(DS,nds,tam2);
}
}
}
void main()
{
int A[3][3],B[3][3];
int x,y;
trang_thai ds_tr_thai[100];
int nt=0;
khoitao(A,B);
nhap_s(A);
nhap_G(B,A);
//cout<<"\n her cua a= "<<Her(A,B);
trang_thai tam;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
tam.T[i][j]=A[i][j];
tam.g=0;
tam.h=Her(tam.T,B);
tam.f=tam.g+tam.h;
input_ds(ds_tr_thai,nt,tam);
cout<<"\n---------------------------------------------------------------";
cout<<" Ket qua la: ";
AKT(ds_tr_thai,nt,B,tam);
}

những bài viết về code của mình chỉ mang ý ngĩa tham khảo. cũng có những bài mình code và có những bài bạn bè học chung mình code

10/16/10

code + demo bài toán TACI = giải thuật Akt

code + demo bài toán TACI = giải thuật Akt
ngôn ngữ C++ , trình biên dịch C-Free, bài toán TACI và thuật giải Akt. (bài tập của môn TRÍ TUỆ NHÂN TẠO)

#include <stdio.h>
#include<conio.h>
#include<math.h>
int a[3][3]={ {2,8,3},{1,6,4},{7,0,5} };
int A[3][3]={ {1,2,3},{8,0,4},{7,6,5} };
int b[3][3]={ {2,8,3},{1,6,4},{7,0,5} };
int I,J,I1,J1,g=0,h;
void xuly();
int ketthuc();
int tinh();
int tim(int );
void timdinhtrong();
void swap(int & , int &);
void xetchon();
void chep1();
void chep2();
void main()
{// clrscr();
xuly();
printf("\n So buoc lap la : %d",g);
getch();
}
void xuly(){
while(!ketthuc())
{
g++;
xetchon();
printf("%d \n",h);
for(int i=0; i<3; i++)
{
for(int j=0; j<3; j++)
printf("%d ",a[i][j]);printf("\n");
}
getch();
}
}
int ketthuc()
{
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
if (a[i][j]!=A[i][j])
return 0;
return 1;
}
int tinh()
{
int bac=0;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
if(tim(b[i][j]))
bac+=abs(I1-i)+abs(J1-j);
}
return bac;
}
int tim(int x)
{
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
if (A[i][j]==x && x!=0 )
{
I1=i;
J1=j;
return 1;
}
return 0;
}
void timdinhtrong()
{
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
if (a[i][j]==0)
{
I=i;J=j;
}
}
void swap( int &x , int &y)
{
int temp;
temp=x;
x=y;
y=temp;
}
void xetchon()
{
int min=100;
timdinhtrong();
for(int j=0;j<3;j++)
for(int l=0;l<3;l++)
{
if ((abs(I-j)+(abs(J-l))==1))
{
swap(b[j][l],b[I][J]);
h=tinh();
if( h<min )
{
min=h;
chep2();
}
swap(b[j][l],b[I][J]);
}
}
chep1();
h=min;
}
void chep1()
{
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
b[i][j]=a[i][j];
}
void chep2()
{
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
a[i][j]=b[i][j];
}


những bài viết về code của mình chỉ mang ý ngĩa tham khảo. cũng có những bài mình code và có những bài bạn bè học chung mình code

10/13/10

CODE + DEMO giải thuật tham lam ( greedy) GTS1 & GTS2

1. Lý thuyết
Nguyên lý tham lam (Greedy): Lấy tiêu chuẩn tối ưu (trên phạm vi toàn cục) của bài toán để làm tiêu chuẩn chọn lựa hành động cho phạm vi cục bộ của từng bước (hay từng giai đoạn) trong quá trình tìm kiếm lời giải.

Bài toán: Hãy tìm một hành trình cho một người giao hàng đi qua n điểm khác nhau, mỗi
điểm đi qua một lần và trở về điểm xuất phát sao cho tổng chiều dài đoạn đường cần đi là
ngắn nhất. Giả sử rằng có con đường nối trực tiếp từ giữa hai điểm bất kỳ.
Tất nhiên ta có thể giải bài toán này bằng cách liệt kê tất cả con đường có thể đi, tính
chiều dài của mỗi con đường đó rồi tìm con đường có chiều dài ngắn nhất. Tuy nhiên,
cách giải này lại có độ phức tạp 0(n!) (một hành trình là một hoán vị của n điểm, do đó,
tổng số hành trình là số lượng hoán vị của một tập n phần tử là n!). Do đó, khi số đại lý
tăng thì số con đường phải xét sẽ tăng lên rất nhanh.
Một cách giải đơn giản hơn nhiều và thường cho kết quả tương đối tốt là dùng một thuật
giải Heuristic ứng dụng nguyên lý Greedy. Tư tưởng của thuật giải như sau:
Từ điểm khởi đầu, ta liệt kê tất cả quãng đường từ điểm xuất phát cho đến n đại
lý rồi chọn đi theo con đường ngắn nhất.
Khi đã đi đến một đại lý, chọn đi đến đại lý kế tiếp cũng theo nguyên tắc trên.
Nghĩa là liệt kê tất cả con đường từ đại lý ta đang đứng đến những đại lý chưa đi
đến. Chọn con đường ngắn nhất. Lặp lại quá trình này cho đến lúc không còn đại
lý nào để đi.
Bạn có thể quan sát hình sau để thấy được quá trình chọn lựa. Theo nguyên lý Greedy, ta
lấy tiêu chuẩn hành trình ngắn nhất của bài toán làm tiêu chuẩn cho chọn lựa cục bộ. Ta
hy vọng rằng, khi đi trên n đoạn đường ngắn nhất thì cuối cùng ta sẽ có một hành trình
ngắn nhất. Điều này không phải lúc nào cũng đúng. Với điều kiện trong hình tiếp theo thì
thuật giải cho chúng ta một hành trình có chiều dài là 14 trong khi hành trình tối ưu là 13.
Kết quả của thuật giải Heuristic trong trường hợp này chỉ lệch 1 đơn vị so với kết quả tối
ưu. Trong khi đó, độ phức tạp của thuật giải Heuristic này chỉ là 0(n^2 ).
Tất nhiên, thuật giải theo kiểu Heuristic đôi lúc lại đưa ra kết quả không tốt, thậm chí rất tệ
Để hiểu hơn thì các bạn xem slide mình họa Tại đây
2. Demo
bài này viết theo ngôn ngữ C++ , môi trường thực hiện C-Free 4.0 , BOLAND C ++....
các bạn tham khảo
#include<iostream.h>
#include<fstream.h>
#include<stdio.h>
int n,v;
int Cost;
int Tour[20];
int mtTP[20][20];
int Flag[20];

void Input()
{
ifstream f; // tao file
f.open("Input.txt"); // mo file
if(f.bad()) // kiem tra file, neu file chua dc tao
{
printf("\n\t File khong ton tai. \n\n");
}
f>>n>>v;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
f>>mtTP[i][j];
}
for(int i=0;i<=n;i++)
Flag[i]=0;
f.close();
}

void Output()
{
ofstream g;
g.open("Output.txt");
g<<"Chi phi cho qua trinh :"<<Cost<<endl;
g<<"Hanh trinh nhu sau :";
for(int i=0;i<n;i++)
g<<Tour[i]<<" -->";
g<<Tour[0]<<endl;
}
// theo thuat giai
void GTS1()
{
int dem=0;
Tour[0]=v;
Flag[v]=1;
int tmp=v;
while(dem!=n-1)
{
int tmpCost=100;
int co;
for(int i=1;i<=n;i++)
{
if(tmpCost>mtTP[v][i] && Flag[i]==0 && mtTP[v][i]!=-1)
{
tmpCost=mtTP[v][i];
co=i;
}
}
dem++;
Tour[dem]=co;
Cost+=tmpCost;
Flag[v]=1;
v=co;
}
Cost+=mtTP[v][tmp];
}
int main()
{
printf("**************** TRI TUE NHAN TAO ******************* \n");
printf("| | \n");
printf("************ KHOA CNTT - DH GTVT TPHCM ************** \n");
printf("| bai toan ung dung giai thuat GTS1 | \n");
printf("***************************************************** \n\n\n\n\n");
Input();
GTS1();
Output();
return 0;
}
các bạn tạo file input.txt và output.txt nhé những bài viết về code của mình chỉ mang ý ngĩa tham khảo. cũng có những bài mình code và có những bài bạn bè học chung mình code xem tiếp GTS2

12/29/09

Bài tập quản lý thư viện - Code C

Bài tập quản lý thư viện - Code C
mình gửi tới các bạn 1 số bài tham khảo về bài tập " xây dựng chương trình quản lí thư viện " những bài này viết = ngôn ngữ C & C++. các bạn có cần đến thì down về tham khảo nha. trong code có hướng dẫn cụ thể rồi đó, các bạn cần tạo 1 file dữ liệu, file có thể tham khảo cho bài code 1 dưới tại đây
code 1 bài viết tai đây

---------------------------------------------------------------------------------
code 2 bài này hơi sơ sài code 2

chúc các bạn đạt kết quả cao