ĐỀ TÀI 1: (2 bài làm) Xây dựng bài toán kho vật tự (20 vat) > 1. Sắp xếp tăng dần theo tên hàng có trong kho và in ra kết qủa sắp xếp > 2. Tìm kiếm 1 mặt hàng xem trong kho có còn không ? Nếu còn thì số lượng là bao nhiêu? > 3. Thống kê theo tên hàng các số lượng còn tồn ở trong kho ( vd: xh 1lan >in ra) Chương trình chạy bằng Dev C++ 5.3.04 :) hoặc bằng chương trình khác cũng được
ĐỀ TÀI 1: (2 bài làm) Xây dựng bài toán kho vật tự (20 vat) > 1. Sắp xếp tăng dần theo tên hàng có trong kho và in ra kết qủa sắp xếp > 2. Tìm kiếm 1 mặt hàng xem trong kho có còn không ? Nếu còn thì số lượng là bao nhiêu? > 3. Thống kê theo tên hàng các số lượng còn tồn ở trong kho ( vd: xh 1lan ->in ra) Chương trình chạy bằng Dev C++ 5.3.04 :) Cách 1: #include <stdio.h> #include<conio.h> #include<string.h> void main() int i = 0, j, n = 20, temp; struct hanghoa { int stt; char ten[30]; int soluong; } hang[20]; void nhap (int stt, char ten[so], int soluong) { printf (“\n nhap mat hang thu %d: ”, stt); printf(“ tenhang : ”); fflush(stdin); gets(ten); printf(“\n soluong : ”); scanf(“%d”, soluong); } void in (int stt, char ten[30], int soluong) { printf(“\n %3d%30s%4d ”, stt, ten, soluong); } void sapxep() { struct hanghoa tam; for ( i = 0; i <= n – 1; i++) for (j = 0; j <= n – 1; j++) if (strcmp( hang[j].ten, hang[j+1].ten) > 0) { temp = hang[j].stt, hang[j].stt = hang[j+1].stt; hang[j] tam = hang[j]; hang[j] = hang[j+1]; hang[j+1] = tam; } } void timkiem() { char tenhang[30]; int p=0, found=0; printf (“\n nhap ten hang can tim kiem:”); gets(tenhang); if(strlen(tenhang)) while(i<n) if(strcmp(hang[i].ten, tenhang)==0) { printf(“\n %3d%30s%4d”, stt, ten, soluong); found=1; break; } else i++; if(!found) printf(“\n khong tim thay!”); } void sapxepsl() { Struct hanghoa tam; For(i=0; i<=n; i++) For(j=0; j<=n; j++) If(hang[j].soluong>hang[j+1].soluong) { temp=hang[j].stt; hang[j]=hang[j+1].stt; hang[j+1].stt=temp; Tam=hang[j]; Hang[j]=hang[j+1]; Hang[j+1]=tam; } } void main() { int menu; printf(“\n nhan 0 de nhap hang”); printf(“\n nhan 1 de in danh sach hang hoa”); printf(“\n nhan 2 de tim kiem mot hang hoa”); Printf(“\n nhan 3 de xem thong ke”); scanf(“%d”, menu); switch(menu) { case 0: for (i=0; i<=n; i++) { hang[i].stt=I; nhap(hang[i].stt, hang[i].ten, hang[i].soluong) } break; case 1: sapxep(); For(i=0; i<=n, i++) { in(hang[i].stt, hang[i].ten, hang[i].soluong); } break; case 2: timkiem(); break; case 3: sapxepsl() for(i=0; i<=n; i++) { in(hang[i].stt, hang[i].ten, hang[i].soluong); } break; } getch() } Cách 2: #include <conio.h> #include <stdio.h> #include <iostream> #include <fstream> #define max 20 using namespace std; struct doVat{ //char tenHang[max]; string tenHang; int soLuong; int giaHang; }; //ham nay la ham doc d lieu de cho vao mang do vat int docDuLieu(doVat d[]); //ham nay la ham bat dau nhap so lieu de ghi vao file void nhapVaoKhoHang (int n); void xapXepTheoTen (); void inDanhSachHang (doVat d[],int n); int timKiemHang (string tenVat); void thongKeHang (); int main () { int i; char c; string tenVat; int giaHang; doVat d[max]; int n; // vong do while de quan ly cai menu de minh nhap do{ cout<<"Ban hay chon cac tuy chon bang cach nhan cac so tuong ung voi "<<"\n"<<"0:nhap vao danh sach kho hang "<<"\n"<<"1:hien thi danh sach do vat theo ten"<<"\n"<<"2:thong ke hang"<<"\n"<<"3:tim kiem do vat trong kho"<<"\n\n"; cout<<"Moi ban nhap so tuong ung voi tuy chon:"; cin>>i; cout<<"\n"; switch (i) { case 0: cout<<"Dau tien moi ban nhap vao so lieu cac do vat trong kho :"; cout<<"ban hay nhap vao so do vat ma ban muon quan ly trong kho: "; cin>>n; nhapVaoKhoHang (n); case 1: xapXepTheoTen(); break; case 2: thongKeHang(); break; case 3: cout<<"nhap vao ten vat can tim kiem :"; cin>>tenVat; if (timKiemHang (tenVat)==0) cout<<"hang khong co trong kho"; else cout<<"do vat "<<tenVat<<" co "<<timKiemHang(tenVat)<<" vat trong kho"<<endl; break; } cout<<"ban co muon tiep tuc khong chon (y) neu co,va (n) neu khong muon:"; cin>>c; cout<<"\n"; }while (c=='y'); } void nhapVaoKhoHang (int n) { string a; int b,c; ofstream out_stream;//tao mot luong de ghi file out_stream.open("D:\\dovat.txt");//mo file dovat.txt de ghi so lieu out_stream <<n<<endl;//ghi vao file do vat.txt so vat ma ban muon quan ly for (int i=0;i<n;i++) { cout<<"nhap vao so lieu cua do vat thu: "<<i+1<<endl; cout<<"ten do vat:"; cin>>a; out_stream<<a<<"\t"; //ghi vao file ten do vat kieu string cout<<"so luong :"; cin>>b; out_stream<<b<<"\t"; //ghi vao file so luong do vat cout<<"gia la:"; cin>>c; out_stream<<c<<"\n"; //ghi vao file gia cua do vat cout<<"\n"; } out_stream.close();//sau khi da nhap du so lieu cua n vat ta dong file } //ham docdulieu nay thuc chat la doc tu file ra so lieu roi cho vao mang dovat d de thuc hien cac thao tac can thiet int docDuLieu(doVat d[]) { int so_do_vat,so_luong,gia_hang; string a; ifstream in_stream;//tao mot luong de doc file in_stream.open("D:\\dovat.txt"); in_stream>>so_do_vat;//dau tien doc so luong do vat for (int i=0;i<so_do_vat;i++) { in_stream>>a;//tiep theo doc ten do vat d[i].tenHang=a;//gan ten do vat vao do vat thu i in_stream>>so_luong>>gia_hang; d[i].soLuong=so_luong;//doc so luong do vat d[i].giaHang=gia_hang;//doc gia hang } return so_do_vat;//tra ve so do vat de dung cho cac ham sau } void xapXepTheoTen () { doVat d[max]; int n=docDuLieu(d); for (int i=0;i<n;i++)//dung xap xep noi bot de xap xep do vat for (int j=i+1;j<n;j++) { if ((d[i].tenHang>d[j].tenHang))//2 string nen co the so sanh binh thuong { [...]... (int i=0;i . ĐỀ TÀI 1: (2 bài làm) Xây dựng bài toán kho vật tự (20 vat) > 1. Sắp xếp tăng dần theo tên hàng có trong kho và in ra kết qủa sắp xếp > 2. Tìm kiếm 1 mặt hàng xem trong kho có còn. hang do con co trong kho hay khong { if (d[i].soLuong==0)// neu so luong bang 0 return 0; //neu khong co tra ve 0 luon return d[i].soLuong;//neu co tra ve so luong vat } } //khong tim thay do vat. (tenVat)==0) cout<<"hang khong co trong kho& quot;; else cout<<"do vat "<<tenVat<<" co "<<timKiemHang(tenVat)<<" vat trong kho& quot;<<endl; break; } cout<<"ban