Đề ôn thi giữa kỳ - Công nghệ thông tin | Đại học Văn Lang
Đề ôn thi giữa kỳ - Công nghệ thông tin | Đại học Văn Lang giúp sinh viên tham khảo, ôn luyện và phục vụ nhu cầu học tập của mình cụ thể là có định hướng, ôn tập, nắm vững kiến thức môn học và làm bài tốt trong những bài kiểm tra, bài tiểu luận, bài tập kết thúc học phần, từ đó học tập tốt và có kết quả cao cũng như có thể vận dụng tốt những kiến thức mình đã học
Môn: Công nghệ thông tin (2200115174)
Trường: Đại học Văn Lang
Thông tin:
Tác giả:
Preview text:
//Phònghọccó7dãy,mỗidãycó10chỗ 7,10
//Sốdãy,sốchỗ,MSSV,Họlót,Tên,Ngàysinh,Ngànhhọc,Quêquán
5,2,11020102,PhanThiThu,Ha,16-12-95,CongNgheKyThuatMoiTruong,ThanhHoa .......... Nhómhãy:
-Khaibáo1cấutrúcđểquảnlýđầyđủthôngtin1sinhviênbaogồmcảvịtríchỗngồi.
-Khaibáo1mảngcótốiđa100sinhviên.
-ĐọcthôngtintừtậptinSoDoLop.txtvàđưavàocácphầntửsinhviêntrongmảng.
SauđóCThiệnmenuchophépthựchiệncácviệcsaunhiềulần(chođếnkhichọnmenuKếtThúc)
1-Nhậpsốdãy:Inrathôngtintấtcàsinhviênngồidãyđó
2-Nhậpsốdãyvàsốchỗ.Inrathôngtinsinhviênngồitạivịtríđó.
3-Nhậpnămsinh,inradanhsáchsinhviênsinhnămnày.
4-Inrasốlượngsinhviêntrongtừngdãybàn. 5-Kếtthúc. #include #include #include using namespace std; //- Khai báo 1 cấ u trúc để" qua "n lý đấ% y đu
" thông tin 1 sinh viển bao gô% m ca " vị trí chô+ ngô% i. struct SODO { int soday, socho;
string mssv, holot, ten, ngaysinh, nganh, que; };
void Timday(SODO sv[100], int const SL);
void Timdayvacho(SODO sv[100], int const SL);
void Timnam(SODO sv[100], int const SL);
void Soday(SODO sv[100], int SL); int main() {
//- Đọc thông tin từ tập tin SoDoLop.txt và đưa vào các phấ% n tư" sinh viển trong ma "ng.
SODO sv[100];//- Khai báo 1 ma "ng có tô i đa 100 sinh viển. int SL = 0, i = 1; string temp; ifstream doc;
doc.open("SoDoLop.txt", ios::in); if (doc.is_open()) { getline(doc, temp); getline(doc, temp); getline(doc, temp); while (!doc.eof()) { doc >> sv[i].soday; doc.ignore(1); doc >> sv[i].socho; doc.ignore(1); getline(doc, sv[i].mssv, ',');
getline(doc, sv[i].holot, ','); getline(doc, sv[i].ten, ',');
getline(doc, sv[i].ngaysinh, ',');
getline(doc, sv[i].nganh, ','); getline(doc, sv[i].que); i++; } doc.close(); SL = i - 1; }
else cout << "Cannot open the file!\n";
cout << "*" << SL << "*\n";
int choose; //Sau đó CT hiện menu cho phép thực hiện các việc sau do { system("cls"); cout << "MENU\n";
cout << "<1>- Nhap so day, in ra thong tin sinh vien ngoi day do.\n";
cout << "<2>- Nhap so day va so cho, in ra thong tin sinh vien ngoi vi tri do.\n";
cout << "<3>- Nhap nam sinh, in ra danh sach sinh vien sinh nam nay.\ n";
cout << "<4>- In ra so luong sinh vien trong tung day ban.\n";
cout << "<5>- Ket thuc\n";
cout << "Lua chon cua ban la: "; cin >> choose; switch (choose) { case 1: { Timday(sv, SL); system("pause"); break; } case 2: { Timdayvacho(sv, SL); system("pause"); break; } case 3: { Timnam(sv, SL); system("pause"); break; } case 4: { Soday(sv, SL); system("pause"); break; } case 5: { break; } default: { cout << ; "Khong hop le\n" system("pause"); break; } } } while (choose != 5); system("pause"); return 0; } //1- Nhập sô
dãy: In ra thông tin tấ t cà sinh viển ngô% i dãy đó
void Timday(SODO sv[100], int const SL) { int SD, count = 0; cout << "Nhap so day: "; cin >> SD;
for (int i = 1; i < SL; i++) { if (sv[i].soday == SD) { count++;
cout << sv[i].soday << ", " << sv[i].socho << ", " <<
sv[i].holot << " " << sv[i].ten << ", " << sv[i].ngaysinh << ", " << sv[i].nganh
<< ", " << sv[i].que << endl; } }
if (count == 0) cout << "Khong tim thay sinh vien thuoc day " << SD << endl; } //2 - Nhập sô dãy và sô chô+
.In ra thông tin sinh viển ngô% i tại vị trí đó.
void Timdayvacho(SODO sv[100], int const SL) { int day, cho, count = 0; cout << "Nhap so day: "; cin >> day; cout << "Nhap so cho: "; cin >> cho;
for (int i = 1; i < SL; i++) {
if (day == sv[i].soday && cho == sv[i].socho) { count++;
cout << sv[i].soday << ", " << sv[i].socho << ", " <<
sv[i].holot << " " << sv[i].ten << ", " << sv[i].ngaysinh << ", " << sv[i].nganh
<< ", " << sv[i].que << endl; } }
if (count == 0) cout << "Khong tim thay sinh vien thuoc day " << day << "
cho " << cho << endl; }
//3- Nhập năm sinh, in ra danh sách sinh viển sinh năm này.
void Timnam(SODO sv[100], int const SL) { int count = 0; string nam;
cout << "Nhap nam sinh: "; cin >> nam;
for (int i = 1; i < SL; i++) {
if (nam == sv[i].ngaysinh.substr(sv[i].ngaysinh.length() - 2, 2)) { count++;
cout << sv[i].soday << ", " << sv[i].socho << ", " <<
sv[i].holot << " " << sv[i].ten << ", " << sv[i].ngaysinh << ", " << sv[i].nganh
<< ", " << sv[i].que << endl; } }
if (count == 0) cout << "Khong co sinh vien sinh nam " << nam << endl; } //4- In ra sô
lượng sinh viển trong từng dãy bàn.
void Soday(SODO sv[100], int SL) {
for (int j = 1; j <= 7; j++) { int count = 0;
for (int i = 1; i < SL; i++) {
count += ((sv[i].soday == j) ? 1 : 0); }
cout << "Co " << count << " sinh vien thuoc day " << j << endl; } }
Sử dụng tập tin Lop6A-DSLop.txt và Lop6A-SoDoLop
Khai báo cấu trúc phù hợp để quản lý DS học sinh.
Dùng 1 mảng 2 chiều để lưu giữ sơ đồ chổ ngồi trong lớp.
Viết chương trình thực hiện các chức năng sau (dạng menu):
1- Nhập MSHS, in ra thông tin và vị trí ngồi trong lớp\
2- Nhập vị trí ngồi (dãy và chỗ): In ra thông tin học sinh này (nếu có)
3- Nhập số dãy: In số học sinh ngồi dãy đó và thông tin từng em. 4- Kết thúc #include #include #include using namespace std; const int MAX = 100; int soDay = 7; int soGheMoiDay = 5; string temp;
struct DanhSachHocSinh //Khai báo cấ u trúc phù hợp để" qua "n lý DS học sinh. { string MSHS; string hoLot; string ten; string ngaySinh; string queQuan; }; DanhSachHocSinh DS[MAX];
string SoDo[MAX][MAX]; //Dùng 1 ma "ng 2 chiể% u để" lưu giữ sơ đô% chô" ngô% i trong lớp. void DocFile1() { ifstream ifile;
ifile.open("Lop6A-SoDoLop.txt", ios::in); if (!ifile.is_open()) {
cout << "Khong mo duoc tap tin" << endl; } getline(ifile, temp); getline(ifile, temp); getline(ifile, temp);
for (int i = 0; i < soDay; i++) {
for (int j = 0; j < soGheMoiDay; j++) { if (j < soGheMoiDay)
getline(ifile, SoDo[i][j], ','); else getline(ifile, SoDo[i][j]); } } ifile.close(); } void DocFile2() { int i = 0; ifstream ifile;
ifile.open("Lop6A-DSLop.txt", ios::in); if (!ifile.is_open()) {
cout << "Khong mo duoc tap tin" << endl; } while (!ifile.eof()) {
getline(ifile, DS[i].MSHS, ',');
getline(ifile, DS[i].hoLot, ',');
getline(ifile, DS[i].ten, ',');
getline(ifile, DS[i].ngaySinh, ','); getline(ifile, DS[i].queQuan); i++; } ifile.close(); } void TimHS() //
1 - Nhập MSHS, in ra thông tin và vị trí ngô% i trong lớp\ { string ms,temp;
cout << "Nhap ma so hoc sinh: "; cin >> ms;
for (int i = 0; i < soDay; i++) {
for (int j = 0; j < soGheMoiDay; j++) { if (ms == SoDo[i][j]) {
cout << "Day " << i << " cho thu " << j << endl; temp = SoDo[i][j]; break; } } } if (temp.size()>0) { cout << DS[0].MSHS;
for (int i = 0; i < MAX; i++) { if (ms == DS[i].MSHS) {
cout << "MSSV: " << DS[i].MSHS << endl;
cout << "Ho va ten: " << DS[i].hoLot << " " << DS[i].ten << endl;
cout << "Ngay sinh: " << DS[i].ngaySinh << endl;
cout << "Que: " << DS[i].queQuan << endl; } } } else
cout << "Khong co hoc sinh nao co ma so nay!!!" << endl; }
void NhapViTri()// 2 - Nhập vị trí ngô% i(dãy và chô+
) : In ra thông tin học sinh này(nể u có) { int Day, Cho; string ms; bool checkHS = false; cout << "Nhap so day: "; cin >> Day; cout << "Nhap so cho: "; cin >> Cho;
for (int i = 0; i < MAX; i++) {
for (int j = 0; j < MAX; j++) {
if (SoDo[i][j] != "X" && (i == Day && j == Cho)) { ms = SoDo[i][j]; checkHS = true; break; } } }
for (int i = 0; i < MAX; i++) {
if (checkHS && ms == DS[i].MSHS) {
cout << "MSSV: " << DS[i].MSHS << endl;
cout << "Ho va ten: " << DS[i].hoLot << " " << DS[i].ten << endl;
cout << "Ngay sinh: " << DS[i].ngaySinh << endl;
cout << "Que: " << DS[i].queQuan << endl; } } if (checkHS == false) {
cout << "Khong co hoc sinh nao co ma so nay!!!" << endl; } } void NhapDay()// 3 - Nhập sô dãy : In sô học sinh ngô%
i dãy đó và thông tin từng em. { int Day = NULL; int count = 0; cout << "Nhap so day: "; cin >> Day;
for (int i = 0; i < soGheMoiDay; i++) { if (SoDo[Day][i] != "X") { count++; } }
cout << "So hoc sinh ngoi day " << Day << " la: " << count << endl;
for (int i = 0; i < soGheMoiDay; i++) {
for (int j = 0; j < MAX; j++) {
if (SoDo[Day][i] == DS[j].MSHS) {
cout << "MSSV: " << DS[j].MSHS << endl;
cout << "Ho va ten: " << DS[j].hoLot << " " << DS[j].ten << endl;
cout << "Ngay sinh: " << DS[j].ngaySinh << endl;
cout << "Que: " << DS[j].queQuan << endl; } } } } int main() { int chon; char tiepTuc; DocFile1(); DocFile2(); do { system("cls");
cout << "\tMENU\n1. Nhap MSHS, in ra thong tin và vi tri ngoi trong lop\n"
"2. Nhap vi tri ngoi (day và cho): In ra thong tin hoc sinh này (neu co)\n"
"3. Nhap so day: In so hoc sinh ngoi day đo va thong tin tung em\n" "4. Ket Thuc\nMoi ban chon: "; cin >> chon; switch (chon) { case 1: { cin.ignore(); TimHS(); break; } case 2: { cin.ignore(); NhapViTri(); break; } case 3: { cin.ignore(); NhapDay(); break; } case 4: { break; } default: {
cout << "Khong co chuc nang tren" << endl; break; } }
cout << "Ban co muon tiep tuc khong?(Y/N): "; cin >> tiepTuc;
} while (tiepTuc == 'Y' || tiepTuc == 'y'); return 0; }
//<1>- Nhap vi tri thi dau, in danh sach cau thu.\n";
//<2>- Nhap ten CLB, in danh sach cau thu.\n";
//<3>- Nhap so ao, in danh sach cau thu.\n";
//<4>- Nhap khuon dang ho, in danh sach cau thu.\n"; //<5>- Ket thuc.\n"; #include #include #include using namespace std; struct DTVN { string ten, vt, clb; int soao; };
void Findfromposition(DTVN cauthu[], int const SL);
void Findfromclub(DTVN cauthu[], int const SL);
void Findfromnumber(DTVN cauthu[], int const SL);
void Findinsert(DTVN cauthu[], int const SL); int main() { DTVN cauthu[100]; int i = 1; ifstream ds;
ds.open("DoiTuyenQuocGiaVN.txt", ios::in); if (ds.is_open()) { while (!ds.eof()) {
getline(ds, cauthu[i].ten, ',');
getline(ds, cauthu[i].vt, ','); ds >> cauthu[i].soao; ds.ignore(1); getline(ds, cauthu[i].clb); i++; } ds.close(); }
else cout << "Cannot open the file!\n"; int SL = i - 1, choose; do { cout << "MENU:\n";
cout << "<1>- Nhap vi tri thi dau, in danh sach cau thu.\n";
cout << "<2>- Nhap ten CLB, in danh sach cau thu.\n";
cout << "<3>- Nhap so ao, in danh sach cau thu.\n";
cout << "<4>- Nhap khuon dang ho, in danh sach cau thu.\n";
cout << "<5>- Ket thuc.\n";
cout << "Lua chon cua ban la: "; cin >> choose; switch (choose) { case 1: {
cout << "Lua chon cua ban la nhap vi tri thi dau, in danh sach cau thu.\n"; Findfromposition(cauthu, SL); system("pause"); system("cls"); break; } case 2: {
cout << "Lua chon cua ban la nhap ten CLB, in danh sach cau thu.\n"; Findfromclub(cauthu, SL); system("pause"); system("cls"); break; } case 3: {
cout << "Lua chon cua ban la nhap so ao, in danh sach cau thu.\n"; Findfromnumber(cauthu, SL); system("pause"); system("cls"); break; } case 4: {
cout << "Lua chon cua ban la nhap khuon dang ho, in danh sach cau thu.\n"; Findinsert(cauthu, SL); system("pause"); system("cls"); break; } case 5: break; default: {
cout << "Lua chon khong hop le!\n"; system("pause"); system("cls"); break; } } } while (choose != 5); system("pause"); return 0; }
void Findfromposition(DTVN cauthu[], int const SL) { int count = 0; string vitri = ""; cin.ignore();
cout << "Nhap vi tri thi dau: "; getline(cin, vitri);
for (int i = 1; i <= SL; i++) { if (vitri == cauthu[i].vt) { count++;
cout << cauthu[i].ten << ", " << cauthu[i].vt << ", " <<
cauthu[i].soao << ", " << cauthu[i].clb << endl; } }
if (count == 0) cout << "Khong tim thay vi tri thi dau!\n"; }
void Findfromclub(DTVN cauthu[], int const SL) { string club = ""; int count = 0; cin.ignore();
cout << "Nhap ten cau lac bo: "; getline(cin, club);
for (int i = 1; i <= SL; i++) { if (club == cauthu[i].clb) { count++;
cout << cauthu[i].ten << ", " << cauthu[i].vt << ", " <<
cauthu[i].soao << ", " << cauthu[i].clb << endl; } }
if (count == 0) cout << "Khong tim thay cau lac bo!\n"; }
void Findfromnumber(DTVN cauthu[], int const SL) { int SA; int count = 0;
cout << "Nhap so ao cau thu: "; cin >> SA;
for (int i = 1; i <= SL; i++) { if (SA == cauthu[i].soao) { count++;
cout << cauthu[i].ten << ", " << cauthu[i].vt << ", " <<
cauthu[i].soao << ", " << cauthu[i].clb << endl; } }
if (count == 0) cout << "Khong tim thay cau thu voi so ao tuong ung!\n"; }
void Findinsert(DTVN cauthu[], int const SL) { int count = 0; string ho = "";
cout << "Nhap khuon dang ho: "; cin >> ho;
for (int i = 1; i <= SL; i++) {
if (ho == cauthu[i].ten.substr(0, ho.length())) { count++;
cout << cauthu[i].ten << ", " << cauthu[i].vt << ", " <<
cauthu[i].soao << ", " << cauthu[i].clb << endl; } }
if (count == 0) cout << "Khong tim thay khuon dang!\n"; }
BÀI TẬP THỰC HÀNH CHƯƠNG 1: MẢNG NHIỀU CHIỀU
Bài 2. Viết chương trình dùng câu lệnh while để nhập và xuất giá trị cho một mảng số nguyên gồm 4 hàng và 3 cột.
Gợi ý: dựa trên tính chất câu lệnh while và for để xây dựng lại phần nhập và xuất mảng 2 chiều. #include
#include // for rand() and srand() #include // for time() using namespace std; int a[4][3];
int cot_nhap, dong_nhap, cot_xuat, dong_xuat; int main() {
srand(time(0)); // set initial seed value to system clock while (cot_nhap < 4) { dong_nhap = 0; while (dong_nhap < 3) {
a[cot_nhap][dong_nhap] = rand() % 10; dong_nhap++; } cot_nhap++; }
cout << "XUAT MANG" << endl; while (cot_xuat < 4) { dong_xuat = 0; while (dong_xuat < 3) {
cout << a[cot_xuat][dong_xuat] << " "; dong_xuat++; } cout << endl; cot_xuat++; } return 0; }
Bài 3. Viết 01 chương trình thực hiện toàn bộ các công việc sau:
a. Cho phép người dùng nhập vào một mảng số nguyên gồm r hàng và c cột (tối đa 10 hàng và 15 cột,
nếu nhập sai thì yêu cầu nhập lại cho đến khi đúng mới tiếp tục).
b. Thực hiện việc tính tổng các giá trị lưu trữ trong mảng.
c. Tìm giá trị nhỏ nhất, lớn nhất đang lưu trữ trong mảng.(Giảsửngườidùngnhậpkhôngcógiátrịnào trùngnhau).
d. Cho biết vị trí của giá trị nhỏ nhất hay lớn nhất ở hàng mấy? cột bao nhiêu(Giảsửngườidùngnhập
khôngcógiátrịnàotrùngnhau). #include #include #include using namespace std; #define MAXROW 10 #define MAXCOL 15
void nhapMang(int a[][MAXCOL], int& r, int& c) { do {
cout << "NHAP SO DONG : "; cin >> r;
if (r <= 0 || r > MAXROW) {
cout << "SO DONG KHONG HOP LE !" << endl; }
} while (r <= 0 || r > MAXROW); do { cout << ; "NHAP SO COT : " cin >> c;
if (c <= 0 || c > MAXCOL) {
cout << "SO COT KHONG HOP LE !" << endl; }
} while (c <= 0 || c > MAXCOL); srand(time(0));
for (int i = 0; i < r ; i++) { for (int j = 0; j < c; j++) { a[i][j] = rand() % 10; } } }
void xuatMang(int a[][MAXCOL], int r, int c) {
cout << "XUAT MANG : " << endl;
for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) {
cout << a[i][j] << " "; } cout << endl; } }
int tinhTong(int a[][MAXCOL], int r, int c) { int total = 0;
for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { total = total + a[i][j]; } } return total; }
int findMinNumber(int a[][MAXCOL], int r, int c) { int min = a[0][0];
for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { if (min > a[i][j]) { min = a[i][j]; } } } return min; }
int findMaxNumber(int a[][MAXCOL], int r, int c) { int max = a[0][0];
for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { if (max < a[i][j]) { max = a[i][j]; } } } return max; }
void viTriMin(int a[][MAXCOL], int r, int c) { int vtCot = 0, vtHang = 0;
int vtCotDauTien = 0, vtHangDauTien = 0; int min = a[0][0];
for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { if (min >= a[i][j]) { if (min > a[i][j]) { vtCotDauTien = i; vtHangDauTien = j; } min = a[i][j]; vtCot = i; vtHang = j; } } }
cout << "Vi Tri So Min Dau Tien La : a[" << vtCotDauTien << "][" <<
vtHangDauTien <<"]" << endl;
cout << "Vi Tri So Min Cuoi Cung La : a[" << vtCot << "][" << vtHang <<"]" << endl; }
void viTriMax(int a[][MAXCOL], int r, int c) { int vtCot = 0, vtHang = 0;
int vtCotDauTien = 0, vtHangDauTien = 0; int max = a[0][0];
for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { if (max <= a[i][j]) { if (max < a[i][j]) { vtCotDauTien = i; vtHangDauTien = j; } max = a[i][j]; vtCot = i; vtHang = j; } } }
cout << "Vi Tri So Max Dau Tien La : a[" << vtCotDauTien << "][" <<
vtHangDauTien << "]" << endl;
cout << "Vi Tri So Max Cuoi Cung La : a[" << vtCot << "][" << vtHang << "]" << endl; } int main() { int a[MAXROW][MAXCOL]; int r, c; nhapMang(a, r, c); xuatMang(a, r, c);
cout << "TONG CAC PHAN TU TRONG MANG LA : " << tinhTong(a, r, c) << endl;
cout << "SO BE NHAT TRONG MANG : " << findMinNumber(a, r, c) << endl;
cout << "SO LON NHAT TRONG MANG : " << findMaxNumber(a, r, c) << endl; viTriMin(a, r, c); viTriMax(a, r, c); return 0; }
Bài 4.Viết01chươngtrìnhthựchiệntoànbộcáccôngviệcsau:
a. Cho phép người dùng nhập vào một mảng số nguyên gồm r hàng và c cột (tối đa 5 hàng và 6 cột,
nếu nhập sai thì yêu cầu nhập lại cho đến khi đúng mới tiếp tục).
b. Cho người dùng nhập vào một vị trí cột/hàng cần tính tổng. Hãy tiến hành tính tổng các giá trị lưu
trữ trong cột/hàng mà người dùng yêu cầu.Lưuý:vịtrícộthayhàngphảihợplệ
c. Cho người dùng nhập vào một giá trị x bất kỳ. Hãy tìm xem x có tồn tại trong mảng hay không? Nếu
có thì tồn tại bao nhiêu lần? Tại các vị trí nào? #include #include #include using namespace std; #define MAXCOL 6 #define MAXROW 5
void nhapMang(int a[][MAXCOL], int& r, int& c) { do {
cout << "NHAP SO DONG : "; cin >> r;
if (r <= 0 || r > MAXROW) {
cout << "SO DONG KHONG HOP LE !" << endl; }
} while (r <= 0 || r > MAXROW); do {
cout << "NHAP SO COT : "; cin >> c;
if (c <= 0 || c > MAXCOL) {
cout << "SO COT KHONG HOP LE !" << endl; }
} while (c <= 0 || c > MAXCOL); srand(time(0)); for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { a[i][j] = rand() % 10; } } }
void xuatMang(int a[][MAXCOL], int r, int c) { for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) {
cout << a[i][j] << " "; } cout << endl; } }
void tinhTongHang(int a[][MAXCOL], int c,int &vtTongHang) { int total = 0; do {
cout << "NHAP VI TRI DONG CAN TINH TONG : "; cin >> vtTongHang;
if (vtTongHang < 0 || vtTongHang > MAXROW-1) {
cout << "SO DONG KHONG HOP LE !" << endl; }
} while (vtTongHang < 0 || vtTongHang > MAXROW-1); for (int i = 0; i < c; i++) {
total = total + a[vtTongHang][i]; }
cout << "TONG HANG VI TRI " << vtTongHang << " La : " << total << endl; }
void tinhTongCot(int a[][MAXCOL], int r,int& vtTongCot) { int total = 0; do {
cout << "NHAP VI TRI COT CAN TINH TONG : "; cin >> vtTongCot;
if (vtTongCot < 0 || vtTongCot > MAXCOL-1) {
cout << "SO COT KHONG HOP LE !" << endl; }
} while (vtTongCot < 0 || vtTongCot > MAXCOL-1); for (int i = 0; i < r; i++) {
total = total + a[i][vtTongCot]; }
cout << "TONG COT VI TRI " << vtTongCot << " La : " << total <}
void findX(int a[][MAXCOL], int r, int c , int& x) {
cout << "Nhap So Can Tim : "; cin >> x; int count = 0; for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { if (a[i][j] == x) { count = count + 1;
cout << "Vi Tri a[" << i << "][" << j << "] : " << a[i] [j] <} } } if (count == 0) {
cout << "Khong Xuat Hien X Trong Mang : " << count << endl; } else {
cout << "So Lan Xuat Hien Cua X La : " << count << endl; } } int main() { int a[MAXROW][MAXCOL]; int r, c; int vtHang, vtCot, x; nhapMang(a, r, c); xuatMang(a, r, c); tinhTongHang(a, c, vtHang); tinhTongCot(a, r, vtCot); findX(a, r, c, x); return 0; }
Bài 5. Viết chương trình cho nhập vào một ma trận vuông cấp n (chứa các số nguyên). Sau đó tính
tổng các giá trị trên đường chéo chính và đường chéo phụ của ma trận vừa nhập. #include #include #include using namespace std; #define MAXROW 100 #define MAXCOL 100 using namespace std;
void nhapMang(int a[][MAXCOL], int& n) { do { cout << ; "NHAP SO CAP : " cin >> n;
if (n <= 0 || n > MAXCOL) {
cout << "SO CAP KHONG HOP LE !" << endl; }
} while (n <= 0 || n > MAXCOL); srand(time(0)); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { a[i][j] = rand() % 10; } } }
void xuatMang(int a[][MAXCOL], int n) {
cout << "XUAT MANG : " << endl;
for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) {
cout << a[i][j] << " "; } cout << endl; } }
int tongDuongCheoChinh(int a[][MAXCOL], int n) { int total = 0;
for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (i == j) { total = total + a[i][j]; } } } return total; }
int tongDuongCheoPhu(int a[][MAXCOL], int n) { int total = 0;
for (int i = 0; i < n; i++) {
total = total + a[i][n - i - 1]; } return total; } int main() { int a[MAXROW][MAXCOL]; int n; nhapMang(a,n); xuatMang(a,n);
cout << "Tong Duong Cheo Chinh La :" << tongDuongCheoChinh(a, n) << endl;
cout << "Tong Duong Cheo Phu La :" << tongDuongCheoPhu(a, n) << endl; return 0; }
Bài tập 9 + 10 (Bài Thực hành): Viết chương trình gán các giá trị số nguyên từ 1 đến n^2 cho các
phần tử của ma trận có kích thước m x n được nhập từ bàn phím theo dạng zigzag cột #include #include using namespace std;
void xuat(int** a, int m, int n) { for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++)
cout << setw(4) << a[i][j]; cout << endl; } } //1 2 3 //10 11 4 //9 12 5 //8 7 6
void mangxoan1(int** a, int m, int n) {
int Value = 1, MaxR, MinR, MaxC, MinC;
MaxR = m - 1; MinR = 0; MaxC = n - 1; MinC = 0; do { //qua phai
for (int j = MinC; j <= MaxC; j++) a[MinR][j] = Value++; MinR++; //xuong
for (int i = MinR; i <= MaxR; i++) a[i][MaxC] = Value++; MaxC--; //qua trai
for (int j = MaxC; j >= MinC; j--) a[MaxR][j] = Value++; MaxR--; //len
for (int i = MaxR; i >= MinR; i--) a[i][MinC] = Value++; MinC++; } while (Value <= m * n); } //1 16 15 14 13 //2 17 23 22 12 //3 18 24 25 11 //4 19 20 21 10 //5 6 7 8 9
void mangxoan2(int** a, int m, int n) {
int Value = 1, MaxR, MinR, MaxC, MinC;
MaxR = m - 1; MinR = 0; MaxC = n - 1; MinC = 0; do { //huong xuong
for (int i = MinR; i <= MaxR; i++) a[i][MinC] = Value++; MinC++; //qua phai
for (int j = MinC; j <= MaxC; j++) a[MaxR][j] = Value++; MaxR--; //len
for (int i = MaxR; i >= MinR; i--) a[i][MaxC] = Value++; MinC--; //qua trái
for (int j = MaxC; j >= MinC; j--) a[MinR][j] = Value++; MaxR++; } while (Value <= m * n); } //1 8 9 16 //2 7 10 15 //3 6 11 14 //4 5 12 13
void zizagcot(int** a, int m, int n) { int j = 0, value = 1; while (j < n) { //huong xuong for (int i = 0; i < m; i++) a[i][j] = value++; cout << endl; //huong len j++;
for (int i = m - 1; i >= 0; i--) a[i][j] = value++; j++; } }
void zizagdong(int** a, int m, int n) { int i = 0, value = 1; while (i < m) { //qua trái for (int j = 0; j < n; j++) a[i][j] = value ++; cout << endl; //qua phai i++;
for (int j = n - 1; j >= 0; j--) a[i][j] = value++; i++; } } int main() { int** a, m, n;
cout << "Nhap so dong: "; cin >> m; cout << "Nhap so cot: "; cin >> n; int MinR, MaxR, MinC, MaxC; //cap phat a = new int* [m]; for (int i = 0; i < m; i++) a[i] = new int[n]; mangxoan1(a, m, n);
cout << "Xuat ma tran xoan:\n"; xuat(a, m, n); mangxoan2(a, m, n);
cout << "Xuat ma tran xoan:\n"; xuat(a, m, n); /*zizagcot(a, m, n);
cout << "Xuat ma tran zizag cot:\n"; xuat(a, m, n);*/ /*zizagdong(a, m, n);
cout << "Xuat ma tran zizag dong:\n"; xuat(a, m, n);*/ // huy cap phat for (int i = 0; i < m; i++) delete[]a[i]; delete[]a; a = 0; system("pause"); return 0; }
//ma tran vuong hinh xich xac trai qua phai # include #include const int M=20; using namespace std;
void xuat(int **a, int m, int n) { for(int i=0; i{
for(int j= 0; jcout<cout<} }
void zizagcot(int **a, int m, int n) { int j=0, value=1; while(j{ //huong xuong
for(int i=0; ia[i][j] = value++; cout<//huong len j++; for(int i=m-1; i>=0; i--) a[i][j] = value++; j++; } }
void zizagdong(int **a, int m, int n) { int j=0, value=1; int maxR, minR, maxC, minC; while(j{ //huong qua phai
for(int j=minC; ja[minR][j] = value++; minR++; cout<//huong xuong
for(int i=minR; i<=maxR; i++) a[i][maxC] = value++; maxC--; cout<//huong qua trai
for(int j=maxC; j<=minC; j--) a[maxR][j] = value++; minR--; cout<//huong len
for(int i=maxR; i>=minR; i--) a[i][maxC] = value++; } } int main() { int **a, m, n; cout<<"Nhap so dong: "; cin>>m; cout<< ; "Nhap so cot: " cin>>n; //cap phat a = new int *[m];
for(int i=0; ia[i] = new int [n]; zizagcot(a,m,n);
cout<<"Xuat ma tran zizag cot:\n"; xuat(a,m,n); zizagdong(a,m,n);
cout<<"Xuat ma tran zizag dong:\n"; xuat(a,m,n); //huy cap phat for(int i=0; idelete []a[i]; delete []a; a=0; system("pause"); return 0; } onTapTapTin.cpp #include #include #include #include #include usingnamespacestd; structSinhVien {
stringtaiKhoan,hoTen,ngaySinh,queQuan,nganhHoc,matKhau; }; //Bientoancuc SinhVien*dssv=0; intslsv; boolktDangNhap=false;
intvtTaiKhoan=-1;//Vitritaikhoan voiddocDuLieu();
voidchuanHoaChuoi(char*str);
voidxoaKhoangTrangThua(char*str); voidchuanHoaHoVaTenDSSV(); voidluuDuLieu();
bool_ktNguyenTo(intn,intd,doublec); boolktNguyenTo(intn);
boolktKyTuDacBiet(charch); boolktKyTuChu(charch); boolktKyTuSo(charch);
boolktKyTuChuVietHoa(charch); stringnhapMatKhau(); intktMatKhau(stringmk); voiddoiMatKhau(intvt); boolDangNhap();
voidchinhSuaThongTin(intvt);
voidxemThongTinSV(intvt); intmain() { docDuLieu(); chuanHoaHoVaTenDSSV(); ktDangNhap=DangNhap(); if(ktDangNhap) { intchon; do{ system("cls");
cout<<"Xinchao"<<dssv[vtTaiKhoan].hoTen<<"!\n";
cout<<"Chonchucnang.\n"
<<"1.Xemthongtinsinhvien.\n"
<<"2.Capnhatthongtinsinhvien.\n"
<<"3.Xembangdiemtonghopsinhvien.\n"
<<"4.Xembangdiemhocky.\n"
<<"5.Xemdiemrenluyen.\n"
<<"6.Thoat.\nBanchon:"; cin>>chon; switch(chon) { case1: xemThongTinSV(vtTaiKhoan); break; case2: chinhSuaThongTin(vtTaiKhoan); luuDuLieu(); break; case3: break; case4: break; case5: break; default: delete[]dssv; dssv=0;
cout<<"Thoatchuongtrinh.\n"; } _getch();
}while(chon>=1&&chon<=5); } else
cout<<"Dangnhapthatbai,khongtheketnoivaohethong.\n"; /*docdulieu(); chuanHoaHoVaTenDSSV(); luuDuLieu();*/
//Ktnguyento=dequy /*intn; cin>>n;
cout<<ktNguyenTo(n)<<endl;*/
//Kiemtrakytudacbiet /*charch; cin>>ch;
cout<<ktKyTuChuVietHoa(ch)<<endl;*/
/*cout<<"Nhapmatkhau:";
cout<<nhapMatKhau()<<endl;*/
/*stringmk="Password&35";
cout<<ktMatKhau(mk)<<endl;*/ /*doiMatKhau(0);*/ /*docDuLieu(); DangNhap(); chinhSuaThongTin(0); luuDuLieu();*/ return0; } voiddocDuLieu() { ifstreaminF; inF.open("SinhVien.txt"); if(inF.is_open()) { inF>>slsv;
dssv=newSinhVien[slsv]; inF.ignore();
for(inti=0;i<slsv;i++) {
getline(inF,dssv[i].taiKhoan,',');
getline(inF,dssv[i].hoTen,',');
getline(inF,dssv[i].ngaySinh,',');
getline(inF,dssv[i].queQuan,',');
getline(inF,dssv[i].nganhHoc,',');
getline(inF,dssv[i].matKhau); }
cout<<"Docfilethanhcong.\n"; inF.close(); } else
cout<<"Khongmoduocfilededoc.\n"; }
voidchuanHoaChuoi(char*str) {
if(*str&&*str!=''&&(*str>='a'&&*str<='z')) { *str-=32; str++; } while(*str) {
if(*(str-1)==''&&(*str>='a'&&*str<='z')) *str-=32; str++; } }
voidxoaKhoangTrangThua(char*str) { char*tmp=str;
while(*tmp&&*tmp=='')//Xoakhoangtrangdau tmp++;
intflag=0;//Lay1khoangtrangvaboquacackhoangtrangthua
while(*tmp)//Xoakhoangtrangthuaogiua { if(flag==0) { if(*tmp=='') flag=1; *str=*tmp; str++; }
if(*(tmp+1)!='') flag=0; tmp++; }
if(*(str-1)=='')
*(str-1)='\0';//Xoakhoangtrangthuaocuoi while(*str) { *str='\0'; str++; } } voidchuanHoaHoVaTenDSSV() {
for(inti=0;i<slsv;i++) {
xoaKhoangTrangThua((char*)dssv[i].hoTen.c_str());//Epkieutustringsangchuoikytu
chuanHoaChuoi((char*)dssv[i].hoTen.c_str()); } } voidluuDuLieu() {
ofstreamoutF("SinhVienNew.txt"); if(outF.is_open()) {
outF<<slsv<<endl;
for(inti=0;i<slsv;i++) { if(i==slsv-1)
outF<<dssv[i].taiKhoan<<','
<<dssv[i].hoTen<<','
<<dssv[i].ngaySinh<<','
<<dssv[i].queQuan<<','
<<dssv[i].nganhHoc<<',' <<dssv[i].matKhau; else
outF<<dssv[i].taiKhoan<<','
<<dssv[i].hoTen<<','
<<dssv[i].ngaySinh<<','
<<dssv[i].queQuan<<','
<<dssv[i].nganhHoc<<','
<<dssv[i].matKhau<<endl; }
cout<<"Ghifilethanhcong.\n"; outF.close(); } else
cout<<"Khongmoduocfiledeghi.\n"; } voidxemThongTinSV(intvt) {
cout<<"Taikhoan:"<<dssv[vt].taiKhoan<<endl
<<"Hovaten:"<<dssv[vt].hoTen<<endl
<<"Ngaysinh:"<<dssv[vt].ngaySinh<<endl
<<"Quequan:"<<dssv[vt].queQuan<<endl
<<"Nganhhoc:"<<dssv[vt].nganhHoc<<endl
<<"Matkhau:"<<dssv[vt].matKhau<<endl; }
//Kiemtranguyentobangdequy
bool_ktNguyenTo(intn,intd,doublec) { if(n<2) returnfalse; if(d>c) returntrue; if(n%d==0) returnfalse;
return_ktNguyenTo(n,d+1,c); } boolktNguyenTo(intn) {
return_ktNguyenTo(n,2,sqrt(n*1.0)); }
boolktKyTuDacBiet(charch) {
if(ch=='@'||ch=='#'||ch=='&'||ch=='$'||ch=='%') returntrue; returnfalse; } boolktKyTuChu(charch) {
if((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z')) returntrue; returnfalse; } boolktKyTuSo(charch) {
if(ch>='0'&&ch<='9') returntrue; returnfalse; }
boolktKyTuChuVietHoa(charch) {
if(ch>='A'&&ch<='Z') returntrue; returnfalse; } stringnhapMatKhau() { stringmk=""; /*cin>>mk;*/ charx;
while((x=_getch())&&x!='\n'&&x!='\r') { mk+=x; cout<<"*"; } cout<<endl; returnmk; } intktMatKhau(stringmk) {
boollaNguyenTo=false,laKTuDacBiet=false,laKTuHoa=false,laKTuThuong=false,ktDoDai= false; if(mk=="") return-1;
intn=mk.length();//C-string:n=strlen(mk); if(n>=8) ktDoDai=true;
for(inti=0;i<n;i++) { if(ktKyTuDacBiet(mk[i])) laKTuDacBiet=true; if(ktKyTuChuVietHoa(mk[i])) laKTuHoa=true;
if(ktKyTuChu(mk[i])&&!ktKyTuChuVietHoa(mk[i])) laKTuThuong=true;
if(ktKyTuSo(mk[i])&&ktNguyenTo(mk[i]-'0'))//Chuyenkytusoveso:Laykytusotru kytu0seraso laNguyenTo=true; }
if(laNguyenTo&&laKTuHoa&&laKTuThuong&&laKTuDacBiet&&ktDoDai) return1; return0; } voiddoiMatKhau(intvt) { stringmkMoi; do{
cout<<"Nhatkhaumoi:"; mkMoi=nhapMatKhau();
if(ktMatKhau(mkMoi)!=1)
cout<<"Matkhaumoikhonghople.Vuilongnhaplai.\n";
}while(ktMatKhau(mkMoi)!=1); dssv[vt].matKhau=mkMoi; } boolDangNhap() { stringtaiKhoan,matKhau;
cout<<"Nhaptaikhoandangnhaphethongsinhvien:\nTaikhoan:"; cin>>taiKhoan; intgioiHanNhap=0;
for(inti=0;i<slsv;i++) {
if(dssv[i].taiKhoan==taiKhoan) vtTaiKhoan=i; } if(vtTaiKhoan!=-1) { do {
cout<<"Matkhau:"; matKhau=nhapMatKhau(); gioiHanNhap++;
if(matKhau!=dssv[vtTaiKhoan].matKhau)
cout<<"Saimatkhau.Con"<<3-gioiHanNhap<<"lannhap.\n";
}while(matKhau!=dssv[vtTaiKhoan].matKhau&&gioiHanNhap<3); }
if(gioiHanNhap<3&&matKhau==dssv[vtTaiKhoan].matKhau) {
cout<<"Dangnhapthanhcong.\n"; returntrue; }
cout<<"Dangnhapthatbai.\n"; returnfalse; }
voidchinhSuaThongTin(intvt) { if(!ktDangNhap) return; intchon; do{ system("cls");
cout<<"Suathongtincanhan:\n"
<<"1.Suahovaten.\n"
<<"2.Suangaythangnamsinh.\n"
<<"3.Suaquequan.\n"
<<"4.Suanganhhoc.\n"
<<"5.Doimatkhau.\n"
<<"6.Thoat.\nBanchon:"; cin>>chon; switch(chon) { case1:
cout<<"Nhaphovatenmoi:"; cin.ignore();
getline(cin,dssv[vt].hoTen);
xoaKhoangTrangThua((char*)dssv[vt].hoTen.c_str());
chuanHoaChuoi((char*)dssv[vt].hoTen.c_str()); break; case2:
cout<<"Nhapngaysinhmoi:"; cin.ignore();
getline(cin,dssv[vt].ngaySinh); break; case3:
cout<<"Nhapquequanmoi:"; cin.ignore();
getline(cin,dssv[vt].queQuan); break; case4:
cout<<"Nhapnganhhocmoi:"; cin.ignore();
getline(cin,dssv[vt].nganhHoc); break; case5: doiMatKhau(vt); break; default:
cout<<"Ketthucchinhsua.\n";