Đề ô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

//Phònghọccó7dãy,mỗidãycó10chỗ
7,10
//Sốdãy,sốchỗ,MSSV,Họlót,Tên,Ngàysinh,Ngànhhọc,Quêquán
5,2,11020102,PhanThiThu,Ha,16-12-95,CongNgheKyThuatMoiTruong,ThanhHoa
..........
Nhómhãy:
-Khaibáo1cấutrúcđểquảnlýđầyđủthôngtin1sinhviênbaogồmcảvịtríchỗngồi.
-Khaibáo1mảngcótốiđa100sinhviên.
-ĐọcthôngtintừtậptinSoDoLop.txtvàđưavàocácphầntửsinhviêntrongmảng.
SauđóCThiệnmenuchophépthựchiệncácviệcsaunhiềulần(chođếnkhichọnmenuKếtThúc)
1-Nhậpsốdãy:Inrathôngtintấtcàsinhviênngồidãyđó
2-Nhậpsốdãyvàsốchỗ.Inrathôngtinsinhviênngồitạivịtríđó.
3-Nhậpnămsinh,inradanhsáchsinhviênsinhnămnày.
4-Inrasốlượngsinhviêntrongtừngdãybàn.
5-Kếtthúc.
#include <iostream>
#include <string>
#include <fstream>
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 int const Timday(SODO sv[100], SL);
void int const Timdayvacho(SODO sv[100], SL);
void int const Timnam(SODO sv[100], SL);
void int Soday(SODO sv[100], 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( ::in);"SoDoLop.txt", ios
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;
}
}
} (choose != 5);while
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 int const Timday(SODO sv[100], 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 [i].soday [i].socho << sv << ", " << sv << ", " <<
sv sv sv[i].holot << << " " [i].ten << << ", " [i].ngaysinh [i].nganh << ", " << sv
<< << << ", " 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 int const Timdayvacho(SODO sv[100], 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 sv[i].soday && cho == [i].socho) {
count++;
cout [i].soday [i].socho << sv << ", " << sv << ", " <<
sv sv sv[i].holot << << " " [i].ten << << ", " [i].ngaysinh [i].nganh << ", " << sv
<< << << ", " 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 int const Timnam(SODO sv[100], SL)
{
int count = 0;
string nam;
cout ;<< "Nhap nam sinh: "
cin nam;>>
for int ( i = 1; i < SL; i++) {
if (nam == sv sv[i].ngaysinh.substr( [i].ngaysinh.length() - 2, 2)) {
count++;
cout [i].soday [i].socho << sv << ", " << sv << ", " <<
sv sv sv[i].holot << << " " [i].ten << << ", " [i].ngaysinh [i].nganh << ", " << sv
<< << << ", " 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 int Soday(SODO sv[100], SL)
{
for int ( j = 1; j <= 7; j++) {
int count = 0;
for int ( i = 1; i < SL; i++) {
count += (( [i].soday == j) ? 1 : 0);sv
}
cout count j endl;<< "Co " << << " sinh vien thuoc day " << <<
}
}
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 <iostream>
#include <string>
#include <fstream>
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 << << endl;"Khong mo duoc tap tin"
}
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( ::in);"Lop6A-DSLop.txt", ios
if (!ifile.is_open())
{
cout << << endl;"Khong mo duoc tap tin"
}
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 << << i << << j << endl;"Day " " cho thu "
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 << << DS[i].MSHS << endl;"MSSV: "
cout << << DS[i].hoLot << << DS[i].ten"Ho va ten: " " "
<< endl;
cout << << DS[i].ngaySinh << endl;"Ngay sinh: "
cout << << DS[i].queQuan << endl;"Que: "
}
}
}
else
cout << << endl;"Khong co hoc sinh nao co ma so nay!!!"
}
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 false checkHS = ;
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 << << DS[i].MSHS << endl;"MSSV: "
cout << << DS[i].hoLot << << DS[i].ten << "Ho va ten: " " "
endl;
cout << << DS[i].ngaySinh << endl;"Ngay sinh: "
cout << << DS[i].queQuan << endl;"Que: "
}
}
if false (checkHS == )
{
cout << << endl;"Khong co hoc sinh nao co ma so nay!!!"
}
}
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 << << Day << << count << endl;"So hoc sinh ngoi day " " la: "
for int ( i = 0; i < soGheMoiDay; i++)
{
for int ( j = 0; j < MAX; j++)
{
if (SoDo[Day][i] == DS[j].MSHS)
{
cout << << DS[j].MSHS << endl;"MSSV: "
cout << << DS[j].hoLot << << DS[j].ten"Ho va ten: " " "
<< endl;
cout << << DS[j].ngaySinh << endl;"Ngay sinh: "
cout << << DS[j].queQuan << endl;"Que: "
}
}
}
}
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 << << endl;"Khong co chuc nang tren"
break;
}
}
cout << ;"Ban co muon tiep tuc khong?(Y/N): "
cin >> tiepTuc;
} (tiepTuc == || tiepTuc == while 'Y' '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 <iostream>
#include <fstream>
#include <string>
using namespace std;
struct DTVN {
string ten, vt, clb;
int soao;
};
void int const Findfromposition(DTVN cauthu[], SL);
void int const Findfromclub(DTVN cauthu[], SL);
void int const Findfromnumber(DTVN cauthu[], SL);
void int const Findinsert(DTVN cauthu[], SL);
int main() {
DTVN cauthu[100];
int i = 1;
ifstream ds;
ds.open( ::in);"DoiTuyenQuocGiaVN.txt", ios
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 break 5: ;
default: {
cout ;<< "Lua chon khong hop le!\n"
system( );"pause"
system( );"cls"
break;
}
}
} (choose != 5);while
system( );"pause"
return 0;
}
void int const Findfromposition(DTVN cauthu[], 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 [i].ten [i].vt << cauthu << ", " << cauthu << ", " <<
cauthu cauthu[i].soao << << ", " [i].clb << endl;
}
}
if (count == 0) cout << "Khong tim thay vi tri thi dau!\n";
}
void int const Findfromclub(DTVN cauthu[], 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 [i].ten [i].vt << cauthu << ", " << cauthu << ", " <<
cauthu cauthu[i].soao << << ", " [i].clb << endl;
}
}
if (count == 0) cout << ;"Khong tim thay cau lac bo!\n"
}
void int const Findfromnumber(DTVN cauthu[], 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 [i].ten [i].vt << cauthu << ", " << cauthu << ", " <<
cauthu cauthu[i].soao << << ", " [i].clb << endl;
}
}
if (count == 0) cout << "Khong tim thay cau thu voi so ao tuong ung!\n";
}
void int const Findinsert(DTVN cauthu[], 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 [i].ten [i].vt << cauthu << ", " << cauthu << ", " <<
cauthu cauthu[i].soao << << ", " [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 <iostream>
#include <cstdlib> // for rand() and srand()
#include <ctime> // 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 << << endl;"XUAT MANG"
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ườidùngnhậpkhôngcógiátrịnào
trùngnhau).
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ườidùngnhập
khôngcógiátrịnàotrùngnhau).
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
#define MAXROW 10
#define MAXCOL 15
void int int int nhapMang( a[][MAXCOL], & r, & c)
{
do
{
cout ;<< "NHAP SO DONG : "
cin ;>> r
if (r r <= 0 || > MAXROW)
{
cout endl;<< "SO DONG KHONG HOP LE !" <<
}
} ( <= 0 || > while r r MAXROW);
do
{
cout ;<< "NHAP SO COT : "
cin ;>> c
if (c c <= 0 || > MAXCOL)
{
cout endl;<< "SO COT KHONG HOP LE !" <<
}
} ( <= 0 || > while c 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 int int int xuatMang( a[][MAXCOL], r, c)
{
cout endl;<< "XUAT MANG : " <<
for int ( i = 0; i < r; i++) {
for int ( j = 0; j < c; j++)
{
cout [i][j] ;<< a << " "
}
cout endl;<<
}
}
int int int int tinhTong( a[][MAXCOL], r, 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 int int int findMinNumber( a[][MAXCOL], r, 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 int int int findMaxNumber( a[][MAXCOL], r, 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 int int int viTriMin( a[][MAXCOL], r, 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 vtCotDauTien << "Vi Tri So Min Dau Tien La : a[" << << "][" <<
vtHangDauTien endl;<<"]" <<
cout vtCot vtHang << "Vi Tri So Min Cuoi Cung La : a[" << << "][" << <<"]"
<< endl;
}
void int int int viTriMax( a[][MAXCOL], r, 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 vtCotDauTien << "Vi Tri So Max Dau Tien La : a[" << << "][" <<
vtHangDauTien endl;<< "]" <<
cout vtCot vtHang << "Vi Tri So Max Cuoi Cung La : a[" << << "][" << << "]"
<< endl;
}
int main()
{
int a[MAXROW MAXCOL][ ];
int r, c;
nhapMang(a, r, c);
xuatMang(a, r, c);
cout tinhTong(a, r, c) endl;<< "TONG CAC PHAN TU TRONG MANG LA : " << <<
cout findMinNumber(a, r, c) endl;<< "SO BE NHAT TRONG MANG : " << <<
cout findMaxNumber(a, r, c) endl;<< "SO LON NHAT TRONG MANG : " << <<
viTriMin(a, r, c);
viTriMax(a, r, c);
return 0;
}
Bài 4.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 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ộthayhàngphảihợplệ
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 <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
#define MAXCOL 6
#define MAXROW 5
void int nhapMang( a[][MAXCOL], & r, & c)int int
{
do
{
cout << ;"NHAP SO DONG : "
cin >> r;
if (r <= 0 || r > MAXROW)
{
cout << << endl;"SO DONG KHONG HOP LE !"
}
} (r <= 0 || r > MAXROW);while
do
{
cout << ;"NHAP SO COT : "
cin >> c;
if (c <= 0 || c > MAXCOL)
{
cout << << endl;"SO COT KHONG HOP LE !"
}
} (c <= 0 || c > MAXCOL);while
srand(time(0));
for int ( i = 0; i < r; i++)
{
for int ( j = 0; j < c; j++)
{
a[i][j] = rand() % 10;
}
}
}
void int xuatMang( a[][MAXCOL], r, c)int int
{
for int ( i = 0; i < r; i++)
{
for int ( j = 0; j < c; j++)
{
cout << a[i][j] << ;" "
}
cout << endl;
}
}
void int int int tinhTongHang( a[][MAXCOL], c, &vtTongHang)
{
int total = 0;
do
{
cout << ;"NHAP VI TRI DONG CAN TINH TONG : "
cin >> vtTongHang;
if (vtTongHang < 0 || vtTongHang > MAXROW-1)
{
cout << << endl;"SO DONG KHONG HOP LE !"
}
} (vtTongHang < 0 || vtTongHang > MAXROW-1);while
for int ( i = 0; i < c; i++)
{
total = total + a[vtTongHang][i];
}
cout << << vtTongHang << << total << endl;"TONG HANG VI TRI " " La : "
}
void int tinhTongCot( a[][MAXCOL], r, & vtTongCot)int int
{
int total = 0;
do
{
cout << ;"NHAP VI TRI COT CAN TINH TONG : "
cin >> vtTongCot;
if (vtTongCot < 0 || vtTongCot > MAXCOL-1)
{
cout << << endl;"SO COT KHONG HOP LE !"
}
} (vtTongCot < 0 || vtTongCot > MAXCOL-1);while
for int ( i = 0; i < r; i++)
{
total = total + a[i][vtTongCot];
}
cout << << vtTongCot << << total <<endl;"TONG COT VI TRI " " La : "
}
void int findX( a[][MAXCOL], r, c , & x)int int int
{
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 << << i << << j << << a[i]"Vi Tri a[" "][" "] : "
[j] <<endl;
}
}
}
if (count == 0) {
cout << << count << endl;"Khong Xuat Hien X Trong Mang : "
}
else
{
cout << << count << endl;"So Lan Xuat Hien Cua X La : "
}
}
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 <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
#define MAXROW 100
#define MAXCOL 100
using namespace std;
void int int nhapMang( a[][MAXCOL], & n)
{
do
{
cout ;<< "NHAP SO CAP : "
cin ;>> n
if (n n <= 0 || > MAXCOL)
{
cout endl;<< "SO CAP KHONG HOP LE !" <<
}
} ( <= 0 || > while n 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 int int xuatMang( a[][MAXCOL], n)
{
cout endl;<< "XUAT MANG : " <<
for int ( i = 0; i < n; i++) {
for int ( j = 0; j < n; j++)
{
cout [i][j] ;<< a << " "
}
cout endl;<<
}
}
int int int tongDuongCheoChinh( a[][MAXCOL], 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 int int tongDuongCheoPhu( a[][MAXCOL], n)
{
int total = 0;
for int ( i = 0; i < n; i++) {
total = total + - i - 1];a n[i][
}
return total;
}
int main() {
int a[MAXROW MAXCOL][ ];
int n;
nhapMang(a,n);
xuatMang(a,n);
cout tongDuongCheoChinh(a, n) endl;<< "Tong Duong Cheo Chinh La :" << <<
cout tongDuongCheoPhu(a, n) endl;<< "Tong Duong Cheo Phu La :" << <<
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 <iostream>
#include <iomanip>
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 <iostream>
#include <iomanip>
const int M=20;
using namespace std;
void int int int xuat( **a, m, n)
{
for int( i=0; i<m; i++)
{
for int( j= 0; j<n; j++)
cout<<setw(4)<<a[i][j];
cout<<endl;
}
}
void int int int zizagcot( **a, m, 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 int int int zizagdong( **a, m, n)
{
int j=0, value=1;
int maxR, minR, maxC, minC;
while(j<n)
{
//huong qua phai
for int( j=minC; j<maxC; j++)
a[minR][j] = value++;
minR++;
cout<<endl;
//huong xuong
for int( i=minR; i<=maxR; i++)
a[i][maxC] = value++;
maxC--;
cout<<endl;
//huong qua trai
for int( j=maxC; j<=minC; j--)
a[maxR][j] = value++;
minR--;
cout<<endl;
//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 = *[m];new int
for int( i=0; i<m; i++)
a[i] = [n];new int
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;
}
onTapTapTin.cpp
#include<iostream>
#include<fstream>
#include<string>
#include<cmath>
#include<conio.h>
usingnamespacestd;
structSinhVien
{
stringtaiKhoan,hoTen,ngaySinh,queQuan,nganhHoc,matKhau;
};
//Bientoancuc
SinhVien*dssv=0;
intslsv;
boolktDangNhap=false;
intvtTaiKhoan=-1;//Vitritaikhoan
voiddocDuLieu();
voidchuanHoaChuoi(char*str);
voidxoaKhoangTrangThua(char*str);
voidchuanHoaHoVaTenDSSV();
voidluuDuLieu();
bool_ktNguyenTo(intn,intd,doublec);
boolktNguyenTo(intn);
boolktKyTuDacBiet(charch);
boolktKyTuChu(charch);
boolktKyTuSo(charch);
boolktKyTuChuVietHoa(charch);
stringnhapMatKhau();
intktMatKhau(stringmk);
voiddoiMatKhau(intvt);
boolDangNhap();
voidchinhSuaThongTin(intvt);
voidxemThongTinSV(intvt);
intmain()
{
docDuLieu();
chuanHoaHoVaTenDSSV();
ktDangNhap=DangNhap();
if(ktDangNhap)
{
intchon;
do{
system("cls");
cout<<"Xinchao"<<dssv[vtTaiKhoan].hoTen<<"!\n";
cout<<"Chonchucnang.\n"
<<"1.Xemthongtinsinhvien.\n"
<<"2.Capnhatthongtinsinhvien.\n"
<<"3.Xembangdiemtonghopsinhvien.\n"
<<"4.Xembangdiemhocky.\n"
<<"5.Xemdiemrenluyen.\n"
<<"6.Thoat.\nBanchon:";
cin>>chon;
switch(chon)
{
case1:
xemThongTinSV(vtTaiKhoan);
break;
case2:
chinhSuaThongTin(vtTaiKhoan);
luuDuLieu();
break;
case3:
break;
case4:
break;
case5:
break;
default:
delete[]dssv;
dssv=0;
cout<<"Thoatchuongtrinh.\n";
}
_getch();
}while(chon>=1&&chon<=5);
}
else
cout<<"Dangnhapthatbai,khongtheketnoivaohethong.\n";
/*docdulieu();
chuanHoaHoVaTenDSSV();
luuDuLieu();*/
//Ktnguyento=dequy
/*intn;
cin>>n;
cout<<ktNguyenTo(n)<<endl;*/
//Kiemtrakytudacbiet
/*charch;
cin>>ch;
cout<<ktKyTuChuVietHoa(ch)<<endl;*/
/*cout<<"Nhapmatkhau:";
cout<<nhapMatKhau()<<endl;*/
/*stringmk="Password&35";
cout<<ktMatKhau(mk)<<endl;*/
/*doiMatKhau(0);*/
/*docDuLieu();
DangNhap();
chinhSuaThongTin(0);
luuDuLieu();*/
return0;
}
voiddocDuLieu()
{
ifstreaminF;
inF.open("SinhVien.txt");
if(inF.is_open())
{
inF>>slsv;
dssv=newSinhVien[slsv];
inF.ignore();
for(inti=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<<"Docfilethanhcong.\n";
inF.close();
}
else
cout<<"Khongmoduocfilededoc.\n";
}
voidchuanHoaChuoi(char*str)
{
if(*str&&*str!=''&&(*str>='a'&&*str<='z'))
{
*str-=32;
str++;
}
while(*str)
{
if(*(str-1)==''&&(*str>='a'&&*str<='z'))
*str-=32;
str++;
}
}
voidxoaKhoangTrangThua(char*str)
{
char*tmp=str;
while(*tmp&&*tmp=='')//Xoakhoangtrangdau
tmp++;
intflag=0;//Lay1khoangtrangvaboquacackhoangtrangthua
while(*tmp)//Xoakhoangtrangthuaogiua
{
if(flag==0)
{
if(*tmp=='')
flag=1;
*str=*tmp;
str++;
}
if(*(tmp+1)!='')
flag=0;
tmp++;
}
if(*(str-1)=='')
*(str-1)='\0';//Xoakhoangtrangthuaocuoi
while(*str)
{
*str='\0';
str++;
}
}
voidchuanHoaHoVaTenDSSV()
{
for(inti=0;i<slsv;i++)
{
xoaKhoangTrangThua((char*)dssv[i].hoTen.c_str());//Epkieutustringsangchuoikytu
chuanHoaChuoi((char*)dssv[i].hoTen.c_str());
}
}
voidluuDuLieu()
{
ofstreamoutF("SinhVienNew.txt");
if(outF.is_open())
{
outF<<slsv<<endl;
for(inti=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<<"Ghifilethanhcong.\n";
outF.close();
}
else
cout<<"Khongmoduocfiledeghi.\n";
}
voidxemThongTinSV(intvt)
{
cout<<"Taikhoan:"<<dssv[vt].taiKhoan<<endl
<<"Hovaten:"<<dssv[vt].hoTen<<endl
<<"Ngaysinh:"<<dssv[vt].ngaySinh<<endl
<<"Quequan:"<<dssv[vt].queQuan<<endl
<<"Nganhhoc:"<<dssv[vt].nganhHoc<<endl
<<"Matkhau:"<<dssv[vt].matKhau<<endl;
}
//Kiemtranguyentobangdequy
bool_ktNguyenTo(intn,intd,doublec)
{
if(n<2)
returnfalse;
if(d>c)
returntrue;
if(n%d==0)
returnfalse;
return_ktNguyenTo(n,d+1,c);
}
boolktNguyenTo(intn)
{
return_ktNguyenTo(n,2,sqrt(n*1.0));
}
boolktKyTuDacBiet(charch)
{
if(ch=='@'||ch=='#'||ch=='&'||ch=='$'||ch=='%')
returntrue;
returnfalse;
}
boolktKyTuChu(charch)
{
if((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z'))
returntrue;
returnfalse;
}
boolktKyTuSo(charch)
{
if(ch>='0'&&ch<='9')
returntrue;
returnfalse;
}
boolktKyTuChuVietHoa(charch)
{
if(ch>='A'&&ch<='Z')
returntrue;
returnfalse;
}
stringnhapMatKhau()
{
stringmk="";
/*cin>>mk;*/
charx;
while((x=_getch())&&x!='\n'&&x!='\r')
{
mk+=x;
cout<<"*";
}
cout<<endl;
returnmk;
}
intktMatKhau(stringmk)
{
boollaNguyenTo=false,laKTuDacBiet=false,laKTuHoa=false,laKTuThuong=false,ktDoDai=
false;
if(mk=="")
return-1;
intn=mk.length();//C-string:n=strlen(mk);
if(n>=8)
ktDoDai=true;
for(inti=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'))//Chuyenkytusoveso:Laykytusotru
kytu0seraso
laNguyenTo=true;
}
if(laNguyenTo&&laKTuHoa&&laKTuThuong&&laKTuDacBiet&&ktDoDai)
return1;
return0;
}
voiddoiMatKhau(intvt)
{
stringmkMoi;
do{
cout<<"Nhatkhaumoi:";
mkMoi=nhapMatKhau();
if(ktMatKhau(mkMoi)!=1)
cout<<"Matkhaumoikhonghople.Vuilongnhaplai.\n";
}while(ktMatKhau(mkMoi)!=1);
dssv[vt].matKhau=mkMoi;
}
boolDangNhap()
{
stringtaiKhoan,matKhau;
cout<<"Nhaptaikhoandangnhaphethongsinhvien:\nTaikhoan:";
cin>>taiKhoan;
intgioiHanNhap=0;
for(inti=0;i<slsv;i++)
{
if(dssv[i].taiKhoan==taiKhoan)
vtTaiKhoan=i;
}
if(vtTaiKhoan!=-1)
{
do {
cout<<"Matkhau:";
matKhau=nhapMatKhau();
gioiHanNhap++;
if(matKhau!=dssv[vtTaiKhoan].matKhau)
cout<<"Saimatkhau.Con"<<3-gioiHanNhap<<"lannhap.\n";
}while(matKhau!=dssv[vtTaiKhoan].matKhau&&gioiHanNhap<3);
}
if(gioiHanNhap<3&&matKhau==dssv[vtTaiKhoan].matKhau)
{
cout<<"Dangnhapthanhcong.\n";
returntrue;
}
cout<<"Dangnhapthatbai.\n";
returnfalse;
}
voidchinhSuaThongTin(intvt)
{
if(!ktDangNhap)
return;
intchon;
do{
system("cls");
cout<<"Suathongtincanhan:\n"
<<"1.Suahovaten.\n"
<<"2.Suangaythangnamsinh.\n"
<<"3.Suaquequan.\n"
<<"4.Suanganhhoc.\n"
<<"5.Doimatkhau.\n"
<<"6.Thoat.\nBanchon:";
cin>>chon;
switch(chon)
{
case1:
cout<<"Nhaphovatenmoi:";
cin.ignore();
getline(cin,dssv[vt].hoTen);
xoaKhoangTrangThua((char*)dssv[vt].hoTen.c_str());
chuanHoaChuoi((char*)dssv[vt].hoTen.c_str());
break;
case2:
cout<<"Nhapngaysinhmoi:";
cin.ignore();
getline(cin,dssv[vt].ngaySinh);
break;
case3:
cout<<"Nhapquequanmoi:";
cin.ignore();
getline(cin,dssv[vt].queQuan);
break;
case4:
cout<<"Nhapnganhhocmoi:";
cin.ignore();
getline(cin,dssv[vt].nganhHoc);
break;
case5:
doiMatKhau(vt);
break;
default:
cout<<"Ketthucchinhsua.\n";
| 1/48

Preview text:

//Phònghọccó7dãy,mỗidãycó10chỗ 7,10
//Sốdãy,sốchỗ,MSSV,Họlót,Tên,Ngàysinh,Ngànhhọc,Quêquán
5,2,11020102,PhanThiThu,Ha,16-12-95,CongNgheKyThuatMoiTruong,ThanhHoa .......... Nhómhãy:
-Khaibáo1cấutrúcđểquảnlýđầyđủthôngtin1sinhviênbaogồmcảvịtríchỗngồi.
-Khaibáo1mảngcótốiđa100sinhviên.
-ĐọcthôngtintừtậptinSoDoLop.txtvàđưavàocácphầntửsinhviêntrongmảng.
SauđóCThiệnmenuchophépthựchiệncácviệcsaunhiềulần(chođếnkhichọnmenuKếtThúc)
1-Nhậpsốdãy:Inrathôngtintấtcàsinhviênngồidãyđó
2-Nhậpsốdãyvàsốchỗ.Inrathôngtinsinhviênngồitạivịtríđó.
3-Nhậpnămsinh,inradanhsáchsinhviênsinhnămnày.
4-Inrasốlượngsinhviêntrongtừngdãybàn. 5-Kếtthú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ườidùngnhậpkhôngcógiátrịnào trùngnhau).
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ườidùngnhập
khôngcógiátrịnàotrùngnhau). #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ế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 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ộthayhàngphảihợplệ
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 usingnamespacestd; structSinhVien {
stringtaiKhoan,hoTen,ngaySinh,queQuan,nganhHoc,matKhau; }; //Bientoancuc SinhVien*dssv=0; intslsv; boolktDangNhap=false;
intvtTaiKhoan=-1;//Vitritaikhoan voiddocDuLieu();
voidchuanHoaChuoi(char*str);
voidxoaKhoangTrangThua(char*str); voidchuanHoaHoVaTenDSSV(); voidluuDuLieu();
bool_ktNguyenTo(intn,intd,doublec); boolktNguyenTo(intn);
boolktKyTuDacBiet(charch); boolktKyTuChu(charch); boolktKyTuSo(charch);
boolktKyTuChuVietHoa(charch); stringnhapMatKhau(); intktMatKhau(stringmk); voiddoiMatKhau(intvt); boolDangNhap();
voidchinhSuaThongTin(intvt);
voidxemThongTinSV(intvt); intmain() { docDuLieu(); chuanHoaHoVaTenDSSV(); ktDangNhap=DangNhap(); if(ktDangNhap) { intchon; do{ system("cls");
cout<<"Xinchao"<<dssv[vtTaiKhoan].hoTen<<"!\n";
cout<<"Chonchucnang.\n"
<<"1.Xemthongtinsinhvien.\n"
<<"2.Capnhatthongtinsinhvien.\n"
<<"3.Xembangdiemtonghopsinhvien.\n"
<<"4.Xembangdiemhocky.\n"
<<"5.Xemdiemrenluyen.\n"
<<"6.Thoat.\nBanchon:"; cin>>chon; switch(chon) { case1: xemThongTinSV(vtTaiKhoan); break; case2: chinhSuaThongTin(vtTaiKhoan); luuDuLieu(); break; case3: break; case4: break; case5: break; default: delete[]dssv; dssv=0;
cout<<"Thoatchuongtrinh.\n"; } _getch();
}while(chon>=1&&chon<=5); } else
cout<<"Dangnhapthatbai,khongtheketnoivaohethong.\n"; /*docdulieu(); chuanHoaHoVaTenDSSV(); luuDuLieu();*/
//Ktnguyento=dequy /*intn; cin>>n;
cout<<ktNguyenTo(n)<<endl;*/
//Kiemtrakytudacbiet /*charch; cin>>ch;
cout<<ktKyTuChuVietHoa(ch)<<endl;*/
/*cout<<"Nhapmatkhau:";
cout<<nhapMatKhau()<<endl;*/
/*stringmk="Password&35";
cout<<ktMatKhau(mk)<<endl;*/ /*doiMatKhau(0);*/ /*docDuLieu(); DangNhap(); chinhSuaThongTin(0); luuDuLieu();*/ return0; } voiddocDuLieu() { ifstreaminF; inF.open("SinhVien.txt"); if(inF.is_open()) { inF>>slsv;
dssv=newSinhVien[slsv]; inF.ignore();
for(inti=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<<"Docfilethanhcong.\n"; inF.close(); } else
cout<<"Khongmoduocfilededoc.\n"; }
voidchuanHoaChuoi(char*str) {
if(*str&&*str!=''&&(*str>='a'&&*str<='z')) { *str-=32; str++; } while(*str) {
if(*(str-1)==''&&(*str>='a'&&*str<='z')) *str-=32; str++; } }
voidxoaKhoangTrangThua(char*str) { char*tmp=str;
while(*tmp&&*tmp=='')//Xoakhoangtrangdau tmp++;
intflag=0;//Lay1khoangtrangvaboquacackhoangtrangthua
while(*tmp)//Xoakhoangtrangthuaogiua { if(flag==0) { if(*tmp=='') flag=1; *str=*tmp; str++; }
if(*(tmp+1)!='') flag=0; tmp++; }
if(*(str-1)=='')
*(str-1)='\0';//Xoakhoangtrangthuaocuoi while(*str) { *str='\0'; str++; } } voidchuanHoaHoVaTenDSSV() {
for(inti=0;i<slsv;i++) {
xoaKhoangTrangThua((char*)dssv[i].hoTen.c_str());//Epkieutustringsangchuoikytu
chuanHoaChuoi((char*)dssv[i].hoTen.c_str()); } } voidluuDuLieu() {
ofstreamoutF("SinhVienNew.txt"); if(outF.is_open()) {
outF<<slsv<<endl;
for(inti=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<<"Ghifilethanhcong.\n"; outF.close(); } else
cout<<"Khongmoduocfiledeghi.\n"; } voidxemThongTinSV(intvt) {
cout<<"Taikhoan:"<<dssv[vt].taiKhoan<<endl
<<"Hovaten:"<<dssv[vt].hoTen<<endl
<<"Ngaysinh:"<<dssv[vt].ngaySinh<<endl
<<"Quequan:"<<dssv[vt].queQuan<<endl
<<"Nganhhoc:"<<dssv[vt].nganhHoc<<endl
<<"Matkhau:"<<dssv[vt].matKhau<<endl; }
//Kiemtranguyentobangdequy
bool_ktNguyenTo(intn,intd,doublec) { if(n<2) returnfalse; if(d>c) returntrue; if(n%d==0) returnfalse;
return_ktNguyenTo(n,d+1,c); } boolktNguyenTo(intn) {
return_ktNguyenTo(n,2,sqrt(n*1.0)); }
boolktKyTuDacBiet(charch) {
if(ch=='@'||ch=='#'||ch=='&'||ch=='$'||ch=='%') returntrue; returnfalse; } boolktKyTuChu(charch) {
if((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z')) returntrue; returnfalse; } boolktKyTuSo(charch) {
if(ch>='0'&&ch<='9') returntrue; returnfalse; }
boolktKyTuChuVietHoa(charch) {
if(ch>='A'&&ch<='Z') returntrue; returnfalse; } stringnhapMatKhau() { stringmk=""; /*cin>>mk;*/ charx;
while((x=_getch())&&x!='\n'&&x!='\r') { mk+=x; cout<<"*"; } cout<<endl; returnmk; } intktMatKhau(stringmk) {
boollaNguyenTo=false,laKTuDacBiet=false,laKTuHoa=false,laKTuThuong=false,ktDoDai= false; if(mk=="") return-1;
intn=mk.length();//C-string:n=strlen(mk); if(n>=8) ktDoDai=true;
for(inti=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'))//Chuyenkytusoveso:Laykytusotru kytu0seraso laNguyenTo=true; }
if(laNguyenTo&&laKTuHoa&&laKTuThuong&&laKTuDacBiet&&ktDoDai) return1; return0; } voiddoiMatKhau(intvt) { stringmkMoi; do{
cout<<"Nhatkhaumoi:"; mkMoi=nhapMatKhau();
if(ktMatKhau(mkMoi)!=1)
cout<<"Matkhaumoikhonghople.Vuilongnhaplai.\n";
}while(ktMatKhau(mkMoi)!=1); dssv[vt].matKhau=mkMoi; } boolDangNhap() { stringtaiKhoan,matKhau;
cout<<"Nhaptaikhoandangnhaphethongsinhvien:\nTaikhoan:"; cin>>taiKhoan; intgioiHanNhap=0;
for(inti=0;i<slsv;i++) {
if(dssv[i].taiKhoan==taiKhoan) vtTaiKhoan=i; } if(vtTaiKhoan!=-1) { do {
cout<<"Matkhau:"; matKhau=nhapMatKhau(); gioiHanNhap++;
if(matKhau!=dssv[vtTaiKhoan].matKhau)
cout<<"Saimatkhau.Con"<<3-gioiHanNhap<<"lannhap.\n";
}while(matKhau!=dssv[vtTaiKhoan].matKhau&&gioiHanNhap<3); }
if(gioiHanNhap<3&&matKhau==dssv[vtTaiKhoan].matKhau) {
cout<<"Dangnhapthanhcong.\n"; returntrue; }
cout<<"Dangnhapthatbai.\n"; returnfalse; }
voidchinhSuaThongTin(intvt) { if(!ktDangNhap) return; intchon; do{ system("cls");
cout<<"Suathongtincanhan:\n"
<<"1.Suahovaten.\n"
<<"2.Suangaythangnamsinh.\n"
<<"3.Suaquequan.\n"
<<"4.Suanganhhoc.\n"
<<"5.Doimatkhau.\n"
<<"6.Thoat.\nBanchon:"; cin>>chon; switch(chon) { case1:
cout<<"Nhaphovatenmoi:"; cin.ignore();
getline(cin,dssv[vt].hoTen);
xoaKhoangTrangThua((char*)dssv[vt].hoTen.c_str());
chuanHoaChuoi((char*)dssv[vt].hoTen.c_str()); break; case2:
cout<<"Nhapngaysinhmoi:"; cin.ignore();
getline(cin,dssv[vt].ngaySinh); break; case3:
cout<<"Nhapquequanmoi:"; cin.ignore();
getline(cin,dssv[vt].queQuan); break; case4:
cout<<"Nhapnganhhocmoi:"; cin.ignore();
getline(cin,dssv[vt].nganhHoc); break; case5: doiMatKhau(vt); break; default:
cout<<"Ketthucchinhsua.\n";