Bạn copy cái source code của bạn rồi paste lên cái khung trả lời này, nhớ markdown code lại cho dễ nhìn (về cách markdown thì có thể search trên diễn đàn)
Bạn copy cái source code của bạn rồi paste lên cái khung trả lời này, nhớ markdown code lại cho dễ nhìn (về cách markdown thì có thể search trên diễn đàn)
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <Windows.h>
#include <time.h>
#include <math.h>
#include "header.h"
int ThemSach(int &P, char ISBN[][30], char tensach[][30], char tacgia[][30], char nhaxuatban[][30], char theloai[][30], int ngayxuatban[], int thangxuatban[], int namxuatban[], float giasach[], float soquyensach[])
{
char s;
char ten[100][30];
char ts[100][30], GT[100][30], ms[100][30], tls[100][30];
float tym;
do
{
system("cls");
P++;
fflush(stdin);
gets_s(ten[P]);
do
{
printf("Nhap vao Ma sach (ISBN) : ");
fflush(stdin);
gets_s(ms[P]); // mảng tạm dùng để lưu ISBN nhập vào và so sánh
if (KiemTraLap(ISBN, ms, P) == 1) printf("Ma sach bi trung, nhap lai\n");
} while (KiemTraLap(ISBN, ms, P) == 1); //kiểm tra xem ISBN có bị trùng không
strcpy_s(ISBN[P], ms[P]); // lưu ISBN vào mảng
do
{
printf("Nhap vao ten sach: ");
fflush(stdin);
gets_s(ts[P]);
if (KiemTraLap(tensach, ts, P) == 1) printf("Ten sach bi trung, nhap lai\n");
} while (KiemTraLap(tensach, ts, P) == 1); // kiểm tra tên sách có bị trùng không
strcpy_s(tensach[P], ts[P]);
printf("Nhap vao ten tac gia: ");
fflush(stdin);
gets_s(tacgia[P]);
printf("Nhap vao nha xuat ban: ");
gets_s(nhaxuatban[P]);
int d, m, y;
do
{
printf("Nhap vao ngay/thang/nam xuat ban(dd/mm/yyyy): ");
scanf_s("%d/%d/%d", &d, &m, &y);
if (KiemTraNgay(d, m, y) == 0) printf("Ngay,thang,nam nhap vao khong hop le.Nhap lai\n");
} while (KiemTraNgay(d, m, y) == 0); // kiểm tra ngày/tháng/năm nhập vào hợp lệ không
ngayxuatban[P] = d;
thangxuatban[P] = m;
namxuatban[P] = y;
printf("CO 12 THE LOAI SACH:\n+Sach binh luan van hoc\n+Sach khoa hoc gia tuong\n+Sach giao khoa\n+Sach khoa hoc\n");
printf("+Sach kinh doanh\n+Sach chinh tri\n+Sach lich su\n+Sach thieu nhi\n+Sach thieu nien\n+Sach tu luc\n+Sach dia ly\n+Sach phi hu cau\n");
gets_s(ten[P]); //
do
{
printf("Nhap the loai sach: ");
fflush(stdin);
gets_s(tls[P]); //mảng tạm lưu thể loại sách để kiểm tra
if (KiemTraTheLoai(tls, P) == 0) printf("The loai sach khong hop le, nhap lai\n");
} while (KiemTraTheLoai(tls, P) == 0);
strcpy_s(theloai[P], tls[P]);
do
{
printf("Nhap vao gia tien sach: ");
scanf_s("%f", &giasach[P]);
if (giasach[P] <= 0) printf("Gia sach khong hop le, nhap lai\n");
} while (giasach[P] <= 0); // kiểm tra giá tiền là số dương
do
{
printf("Nhap vao so luong sach: ");
scanf_s("%f", &tym);
if (tym <= 0 || fmod(tym, 1) != 0) printf("So luong sach khong hop le, nhap lai\n");
} while (tym <= 0 || fmod(tym, 1) != 0); // kiểm tra số quyên sách phải nguyên dương hay không
soquyensach[P] = int(tym);
printf("Ban co muon nhap them khong(Y/N) ");
s = _getch();
} while (s == 'y' || s == 'Y');
return P;
}
void XemDanhSachCacSach(int P, char ISBN[][30], char tensach[][30], char tacgia[][30], char nhaxuatban[][30], char theloai[][30], int ngayxuatban[], int thangxuatban[], int namxuatban[], float giasach[], float soquyensach[])
{
system("cls");
printf("DANH SACH CAC QUYEN SACH TRONG THU VIEN\n");
printf("\n-----------------------------------------\n");
if (P == 0) printf("Chua co sach trong danh sach");
else
{
for (int i = 1; i <= P; i++)
{
printf("Ma sach (ISBN): %s\n", ISBN[i]);
printf("Ten sach: %s\n", tensach[i]);
printf("Tac gia: %s\n", tacgia[i]);
printf("Nha xuat ban: %s\n", nhaxuatban[i]);
printf("Ngay/thang/nam xuat ban:%d/%d/%d\n", ngayxuatban[i], thangxuatban[i], namxuatban[i]);
printf("The loai sach: %s\n", theloai[i]);
printf("Gia tien 1 quyen sach: %f\n", giasach[i]);
printf("So sach co trong thu vien:%.0f", soquyensach[i]);
printf("\n------------------------------------\n");
}
}
}
void ChinhSuaThongTinSach(int P, char ISBN[][30], char tensach[][30], char tacgia[][30], char nhaxuatban[][30], char theloai[][30], int ngayxuatban[], int thangxuatban[], int namxuatban[], float giasach[], float soquyensach[])
{
char s;
char ten[100][30], b[100][30], mdg[100][30];
int tym;
char tam1[100][30];
char ts[100][30], GT[100][30], ms[100][30], tls[100][30];
char tam[100][30];//lấy ISBN của sách cần thay đổi
int k = -1;//lấy vị trí lưu sách cần thay đổi
do
{
system("cls");
fflush(stdin);
gets_s(tam1[P]);//
printf("Nhap Ma sach (ISBN) cua sach ban muon thay doi: ");
fflush(stdin);
gets_s(tam[P]);
for (int i = 1; i <= P; i++)
{
if (KiemTraLap(ISBN, tam, P) == 1) k = i; break;
}
if (k == -1) printf("Sach ban can thay doi khong co trong danh sach");
else
{
printf("Nhap thong tin moi cho sach\n");
do
{
printf("Nhap vao Ma sach (ISBN): ");
fflush(stdin);
gets_s(ms[P]);
if (KiemTraLap(ISBN, ms, P) == 1) printf("Ma sach bi trung, nhap lai\n");
} while (KiemTraLap(ISBN, ms, P) == 1);
strcpy_s(ISBN[k], ms[P]);
do
{
printf("Nhap vao ten sach: ");
fflush(stdin);
gets_s(ts[P]);
if (KiemTraLap(tensach, ts, P) == 1) printf("Ten sach bi trung, nhap lai\n");
} while (KiemTraLap(tensach, ts, P) == 1);
strcpy_s(tensach[k], ts[P]);
printf("Nhap vao ten tac gia: ");
fflush(stdin);
gets_s(tacgia[k]);
printf("Nhap vao nha xuat ban: ");
gets_s(nhaxuatban[k]);
int d, m, y;
do
{
printf("Nhap vao ngay/thang/nam xuat ban(dd/mm/yyyy): ");
scanf_s("%d/%d/%d", &d, &m, &y);
if (KiemTraNgay(d, m, y) == 0) printf("Ngay,thang,nam nhap vao khong hop le.Nhap lai\n");
} while (KiemTraNgay(d, m, y) == 0);
ngayxuatban[k] = d;
thangxuatban[k] = m;
namxuatban[k] = y;
printf("CO 12 THE LOAI SACH:\n-Sach binh luan van hoc\n-Sach khoa hoc gia tuong\n-Sach giao khoa\n-Sach khoa hoc\n");
printf("-Sach kinh doanh\n-Sach chinh tri\n-Sach lich su\n-Sach thieu nhi\n-Sach thieu nien\n-Sach tu luc\n-Sach dia ly\n-Sach phi hu cau\n");
gets_s(ten[P]); //
do
{
printf("Nhap vao the loai sach: ");
fflush(stdin);
gets_s(tls[P]);
if (KiemTraTheLoai(tls, P) == 0) printf("The loai sach khong hop le, nhap lai\n");
} while (KiemTraTheLoai(tls, P) == 0);
strcpy_s(theloai[k], tls[P]);
do
{
printf("Nhap vao gia tien sach: ");
scanf_s("%f", &giasach[k]);
if (giasach[k] <= 0) printf("Gia sach khong hop le, nhap lai\n");
} while (giasach[k] <= 0);
do
{
printf("Nhap vao so luong sach: ");
scanf_s("%f", &soquyensach[k]);
if (soquyensach[k] <= 0 || fmod(soquyensach[k], 1) != 0) printf("So luong sach khong hop le, nhap lai\n");
} while (soquyensach[k] <= 0 || fmod(soquyensach[k], 1) != 0);
}
printf("Ban co muon thay doi them khong(Y/N) ");
s = _getch();
} while (s == 'y' || s == 'Y');
}
void XoaThongTinSach(int P, char ISBN[][30], char tensach[][30], char tacgia[][30], char nhaxuatban[][30], char theloai[][30], int ngayxuatban[], int thangxuatban[], int namxuatban[], float giasach[], float soquyensach[])
{
char s;
int tym;
char tam[100][30], tam1[100][30];
char ts[100][30], GT[100][30], ms[100][30], tls[100][30];
int k = -1;//lấy vị trí lưu của sách cần xoá
do
{
system("cls");
fflush(stdin);
gets_s(tam1[P]);//
printf("Nhap Ma sach (ISBN) ban muon xoa: ");
fflush(stdin);
gets_s(ms[P]); //mảng tạm lưu mã ISBN của sách cần thay đổi
k = TimViTriCanThaoTac(ISBN, ms, P); // lấy vị trí lưu của sách cần xoá
if (k == -1) printf("Sach ban can xoa khong co trong danh sach");
else
{
for (int i = k; i <= P - 1; i++) // xoá sách được lưu trong mảng
{
strcpy_s(ISBN[i], ISBN[i + 1]);
strcpy_s(tensach[i], tensach[i + 1]);
strcpy_s(tacgia[i], tacgia[i + 1]);
strcpy_s(nhaxuatban[i], nhaxuatban[i + 1]);
strcpy_s(theloai[i], theloai[i + 1]);
ngayxuatban[i] = ngayxuatban[i + 1];
thangxuatban[i] = thangxuatban[i + 1];
namxuatban[i] = namxuatban[i + 1];
giasach[i] = giasach[i + 1];
soquyensach[i] = soquyensach[i + 1];
}
P--; //trả lại giá trị của mảng
printf("Sach da duoc xoa\n");
}
printf("\nBan co muon xoa them sach khong(Y/N) ");
s = _getch();
} while (s == 'y' || s == 'Y');
}
void TimKiemSachTheoISBN(int P, char ISBN[][30], char tensach[][30], char tacgia[][30], char nhaxuatban[][30], char theloai[][30], int ngayxuatban[], int thangxuatban[], int namxuatban[], float giasach[], float soquyensach[])
{
char s;
char ms[100][30], d[100][30];
int tym;
int k = -1;//biến dùng để lấy vị trí sách cần tìm kiếm
do
{
system("cls");
fflush(stdin);
gets_s(d[P]);//
printf("Nhap ISBN cua sach ban muon tim: ");
fflush(stdin);
gets_s(ms[P]);
k = TimViTriCanThaoTac(ISBN, ms, P); // lấy vị trí lưu của sách đang tìm kiếm
if (k == -1) printf("Sach ban can tim khong co trong danh sach");
else
{
printf("Ma sach (ISBN): %s\n", ISBN[k]);
printf("Ten sach: %s\n", tensach[k]);
printf("Tac gia: %s\n", tacgia[k]);
printf("Nha xuat ban: %s\n", nhaxuatban[k]);
printf("Ngay/thang/nam xuat ban:%d/%d/%d\n", ngayxuatban[k], thangxuatban[k], namxuatban[k]);
printf("The loai sach: %s\n", theloai[k]);
printf("Gia tien 1 quyen sach: %f\n", giasach[k]);
printf("So sach co trong thu vien:%.0f", soquyensach[k]);
printf("\n===============================================\n");
}
printf("\nBan co muon tim them sach khong(Y/N) ");
s = _getch();
} while (s == 'y' || s == 'Y');
}
void TimKiemSachTheoTenSach(int P, char ISBN[][30], char tensach[][30], char tacgia[][30], char nhaxuatban[][30], char theloai[][30], int ngayxuatban[], int thangxuatban[], int namxuatban[], float giasach[], float soquyensach[])
{
char s;
char ts[100][30], d[100][30];
int tym;
int k = -1; //biến dùng để lấy vị trí sách cần tìm kiếm
do
{
system("cls");
fflush(stdin);
gets_s(d[P]);//
printf("Nhap ten cua sach ban muon tim: ");
fflush(stdin);
gets_s(ts[P]);
k = TimViTriCanThaoTac(tensach, ts, P);
if (k == -1) printf("Sach ban can tim khong co trong danh sach");
else
{
printf("Ma sach (ISBN): %s\n", ISBN[k]);
printf("Ten sach: %s\n", tensach[k]);
printf("Tac gia: %s\n", tacgia[k]);
printf("Nha xuat ban: %s\n", nhaxuatban[k]);
printf("Ngay/thang/nam xuat ban:%d/%d/%d\n", ngayxuatban[k], thangxuatban[k], namxuatban[k]);
printf("The loai sach: %s\n", theloai[k]);
printf("Gia tien 1 quyen sach: %f\n", giasach[k]);
printf("So sach co trong thu vien:%.0f", soquyensach[k]);
printf("\n===============================================\n");
}
printf("\nBan co muon tim them sach khong(Y/N) ");
s = _getch();
} while (s == 'y' || s == 'Y');
}
Hi lienlien11a2.
Các lỗi liên quan đến con trỏ. VD duyệt mảng : for (int i = 1; i <= P; i++)
Con trỏ không được cấp phát. hàm scanf new delete malloc v.v.v…
Các lỗi logic không có 1 mẫu chuẩn tìm và sửa. Bạn cần code nhiều có phong cách lập trình sạch sẽ và thuật toán rõ ràng. Thời gian code dủ dài và có kinh nghiệm debug.
Chúc bạn thành công.
Post code lên thì mọi người mới biết được lỗi ở đâu nhe bạn ơi :v
cho e hỏi cái lỗi đó là lỗi ji v?
Hi lienlien11a2.
Theo minh là lỗi đọc ghi vùng nhớ không được phép.
Bạn post code lên đi, chứ 1 bức ảnh thì khó biết lắm, mà biết thì cũng không sửa được
sao sửa đây ạ… ns khái quát cách sửa đc ko ạ?
sao post lên giwof a?? e post dạng .rar ko chịu nhận
Bạn copy cái source code của bạn rồi paste lên cái khung trả lời này, nhớ markdown code lại cho dễ nhìn (về cách markdown thì có thể search trên diễn đàn)
hình như vòng lặp bị lỗi lặp vô hạn
Hi lienlien11a2.
Các lỗi liên quan đến con trỏ. VD duyệt mảng :
for (int i = 1; i <= P; i++)
Con trỏ không được cấp phát. hàm scanf new delete malloc v.v.v…
Các lỗi logic không có 1 mẫu chuẩn tìm và sửa. Bạn cần code nhiều có phong cách lập trình sạch sẽ và thuật toán rõ ràng. Thời gian code dủ dài và có kinh nghiệm debug.
Chúc bạn thành công.