Bài tập Kỹ thuật lập trình - Bài tập 4: Mảng, chuỗi và kiểu dữ liệu có cấu trúc - Khoa Khoa học và Kỹ thuật máy tính - Đại học BK - ĐHQG TP Hồ Chí Minh

Bài 1:
Viết chương trình tính ma trận chuyển vị.
Prototype: int[][] chuyen_vi(int[][] matran) 
Bài 2:
Viết chương trình nhân hai ma trận.
Prototype: int[][] nhanmatran(int[][] matran1, int[][] matran2)
pdf 19 trang xuanthi 27/12/2022 3440
Bạn đang xem tài liệu "Bài tập Kỹ thuật lập trình - Bài tập 4: Mảng, chuỗi và kiểu dữ liệu có cấu trúc - Khoa Khoa học và Kỹ thuật máy tính - Đại học BK - ĐHQG TP Hồ Chí Minh", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfbai_tap_ky_thuat_lap_trinh_bai_tap_4_mang_chuoi_va_kieu_du_l.pdf

Nội dung text: Bài tập Kỹ thuật lập trình - Bài tập 4: Mảng, chuỗi và kiểu dữ liệu có cấu trúc - Khoa Khoa học và Kỹ thuật máy tính - Đại học BK - ĐHQG TP Hồ Chí Minh

  1. TRƯỜ NG ĐAỊ HOC̣ BÁ CH KHOA TP.HCM Khoa Khoa hoc̣ & Kỹ thuật Máy tính Bài 2: Viết chương trình nhân hai ma trận. Prototype: int[][] nhanmatran(int[][] matran1, int[][] matran2) #include #include using namespace std; int main(){ cout >m>>n>>p; srand(time(NULL)); //Khoi tao mang A (m x n), B(n x p) phan tu nguyen ngau nhien 0~4 int a[m][n]; for(int i=0;i<m;i++) for(int j=0;j<n;j++){ a[i][j]=rand()%5; } int b[n][p]; for(int i=0;i<n;i++) for(int j=0;j<p;j++){ b[i][j]=rand()%5; } //Thuc hien nhan ma tran int c[m][p]; for(int i=0;i<m;i++) for(int j=0;j<p ;j++){ int total=0; for(int k=0;k<n;k++) total+=a[i][k]*b[k][j]; c[i][j]=total; } //In mang ra man hinh cout<<"Ma tran A (m x n) ban dau:\n"; for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ cout<<a[i][j]<<" "; } cout<<endl; } cout<<"Ma tran B (n x p) ban dau:\n"; for(int i=0;i<n;i++){ for(int j=0;j<p;j++){ cout<<b[i][j]<<" "; } cout<<endl; Kỹ thuật lập trình 501127 – HK2/2011-2012 2
  2. TRƯỜ NG ĐAỊ HOC̣ BÁ CH KHOA TP.HCM Khoa Khoa hoc̣ & Kỹ thuật Máy tính Bài 3: Viết chương trình tìm ký tự xuất hiện i lần trong chuỗi (không dùng thư viện string). Nếu không tìm thấy xuất ra màn hình ký tự ‘!’. Kiểm tra tính hợp lệ của i nhập vào (lớn hơn 0 và nhỏ hơn chiều dài của chuỗi). Prototype: char tim_ky_tu(char* chuoi, int i) #include // Khong dung thu vien string using namespace std; void tim_ky_tu() { char s[100]; int length = 0; do { cout > solan; } while (solan > length || solan < 1); int dem; char ky_tu; bool tim_thay = false; for (int i = 0; i < length; i++) { dem = 1; if (s[i] == '\0') continue; ky_tu = s[i]; for (int j = 0; j < length; j++) { if (s[j] == s[i] && i != j) { dem++; s[j] = '\0'; } } if (dem == solan) { cout << "Ky tu xuat hien " << solan << " lan la: " << ky_tu << endl; tim_thay = true; } } if (!tim_thay) cout << "!"; } Kỹ thuật lập trình 501127 – HK2/2011-2012 4
  3. TRƯỜ NG ĐAỊ HOC̣ BÁ CH KHOA TP.HCM Khoa Khoa hoc̣ & Kỹ thuật Máy tính Bài 5: Viết chương trình để quản lý thông tin về thời tiết trong năm: Tạo cấu trúc Ngay chứa ngày, tháng, năm. Tạo cấu trúc Thoitiet chứa cấu trúc Ngay, nhiệt độ cao nhất trong ngày, nhiệt độ thấp nhất trong ngày, tốc độ gió lớn nhất. Tạo mảng các cấu trúc Thoitiet, mỗi phần tử lưu thông tin về thời tiết trong một ngày trong năm. Tìm ngày có nhiệt độ cao nhất trong tháng 9/2012, trong năm 2012. Prototype: Ngay nhiet_do_thap_nhat(Thoitiet[] arr_thoi_tiet) #include #include #define MAX 360 //So ngay luu tru #define DAYS 30 using namespace std; struct Date{ int day; int month; int year; }; struct Weather{ Date aday; float maxtemp; float mintemp; float maxwind; }; int main(){ Weather thoitietnam[MAX]; //khoi tao cac gia tri ngau nhien srand(time(NULL)); int nam=2009,thang=1,dayth=1; // Khoi tao tu ngay 1/1/2009, mac dinh 30ngay/1thang for(int i=0;i thoitietnam[i].maxtemp) thoitietnam[i].mintemp=(rand()%350)/10.0; thoitietnam[i].maxwind=(rand()%800)/10.0; //Toc do gio maximum la 80km/h dayth++; if (dayth>DAYS) { thang++; dayth=1; } Kỹ thuật lập trình 501127 – HK2/2011-2012 6
  4. TRƯỜ NG ĐAỊ HOC̣ BÁ CH KHOA TP.HCM Khoa Khoa hoc̣ & Kỹ thuật Máy tính Bài tập làm thêm: Bài 6: Viết chương trình trả về một ma trận A (n*n) với phần tử a[i][j] bằng ‘true’ nếu như i và j là hai số nguyên tố cùng nhau và ngược lại thì bằng ‘false’. #include using namespace std; int main(){ cout >n; bool a[n][n]; for(int i=0;i<n;i++) for(int j=0;j<n;j++){ int p,q,r; p=i+1; q=j+1; do{ r=p%q; p=q; q=r; }while(q!=0); if (p==1){//Cung nguyen to a[i][j]=true; }else{ a[i][j]=false; } } //in ma tran for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ cout<<a[i][j]<<" "; } cout<<endl; } } Kỹ thuật lập trình 501127 – HK2/2011-2012 8
  5. TRƯỜ NG ĐAỊ HOC̣ BÁ CH KHOA TP.HCM Khoa Khoa hoc̣ & Kỹ thuật Máy tính Bài 8: Viết chương trình gán kí tự thứ i trong chuỗi bằng kí tự truyền vào. #include using namespace std; int main(){ char s[100]; cout >vt; cout >c; s[vt-1]=c; cout<<"Chuoi sau khi thay the:"<<s; return 0; } Kỹ thuật lập trình 501127 – HK2/2011-2012 10
  6. TRƯỜ NG ĐAỊ HOC̣ BÁ CH KHOA TP.HCM Khoa Khoa hoc̣ & Kỹ thuật Máy tính Bài 10: Viết chương trình trả về chuỗi con có chiều dài ilength, bắt đầu từ vị trí istart. #include using namespace std; int main(){ cout >istart>>ilength; char subs[ilength+1]; for(int i=0; i using namespace std; int main(){ cout ='a'&&s[i]<='z'){ s[i]=s[i]+'A'-'a'; } i++; } cout<<"Xau in hoa:"<<s; return 0; } Kỹ thuật lập trình 501127 – HK2/2011-2012 12
  7. TRƯỜ NG ĐAỊ HOC̣ BÁ CH KHOA TP.HCM Khoa Khoa hoc̣ & Kỹ thuật Máy tính Bài 13: Viết chương trình mô phỏng các phép toán luận lý AND, OR, XOR trên hai chuỗi ký tự. Cho hai chuỗi ký tự a và b có chiều dài bằng nhau, chỉ chứa các ký tự ‘0’ và ‘1’. Thực hiện phép toán (a AND b), (a OR b), (a XOR b), kết quả là các phép AND, OR, và XOR trên từng ký tự. Chương trình cho phép nhập 2 chuỗi ký tự a và b chiều dài bằng nhau, chiều dài tối đa là 100 ký tự. Kết quả phép toán lưu vào chuỗi ký tự c. Ví dụ: a = “001010111” b = “011110111” c = a AND b = “001010111” c = a OR b = “011110111” c = a XOR b = “010100000” #include using namespace std; int main(){ char a[100], b[100], cOR[100],cAND[100],cXOR[100]; cout >a; cout >b; if (strlen(a)==strlen(b)){ unsigned int op1,op2,length=strlen(a); for(unsigned int i=0;i<length;i++){ op1=(a[i]=='1')?1:0; op2=(b[i]=='1')?1:0; cOR[i]=op1 or op2?'1':'0'; cAND[i]=op1 and op2?'1':'0'; cXOR[i]=op1 xor op2?'1':'0'; } cOR[length]='\0'; cAND[length]='\0'; cXOR[length]='\0'; cout<<"OR:"<<cOR<<endl; cout<<"AND:"<<cAND<<endl; cout<<"XOR:"<<cXOR<<endl; } return 0; } Kỹ thuật lập trình 501127 – HK2/2011-2012 14
  8. TRƯỜ NG ĐAỊ HOC̣ BÁ CH KHOA TP.HCM Khoa Khoa hoc̣ & Kỹ thuật Máy tính Bài 15: Với tam giác Pascal như sau: 1 (mảng a) 1 1 (mảng b) 1 2 1 (mảng a) 1 3 3 1 (mảng b) 1 4 6 4 1 (mảng a) Viết chương trình xuất ra dòng thứ n của tam giác Pascal, n nhập từ bàn phím, 0 using namespace std; int main(){ cout >n; int a[100],b[100]; for(int i=0;i<100;i++){ a[i]=0; b[i]=0; } a[0]=1; for(int i=2;i<=n;i++){ if (i%2==0){ b[0]=1; for(int j=1;j<=i;j++){ b[j]=a[j-1]+a[j]; } }else{ a[0]=1; for(int j=1;j<=i;j++){ a[j]=b[j-1]+b[j]; } } } //In dong thu n if (n%2==0) { for(int i=0;i<n;i++) cout<<b[i]<<" "; }else{ for(int i=0;i<n;i++) cout<<a[i]<<" "; } return 0; } Kỹ thuật lập trình 501127 – HK2/2011-2012 16
  9. TRƯỜ NG ĐAỊ HOC̣ BÁ CH KHOA TP.HCM Khoa Khoa hoc̣ & Kỹ thuật Máy tính Bài 17: Viết chương trình sử dụng kiểu dữ liệu từ điển để quản lý thông tin của một lớp học. Trong đó khóa là chuỗi mã số học viên còn giá trị là tên của học viên. Viết chương trình minh họa cho phép nhập vào 10 học viên, và cho phép người dùng tìm kiếm tên của học viên thông qua mã số học viên. #include #include using namespace std; #define MAXARR 100 //mang structure luu tru #define MAXLIST 50 //So luong hoc sinh mot lop #define HTEN 50 //chieu dai ho ten #define MASO 3 //chieu dai ma so hoc sinh struct hocsinh{ char mshs[MASO]; char hoten[HTEN]; }; int main(){ //intial cout >n; hocsinh hoso[MAXARR]; for(int i=0;i >masostr; int masonum=atoi(masostr); //string to integer pos=masonum%MAXLIST; while (strlen(hoso[pos].mshs)!=0) pos++; cout<<"Ho ten hoc sinh:"; char hotenstr[HTEN]; cin.ignore(2); cin.getline(hotenstr,HTEN); strcpy(hoso[pos].mshs,masostr); strcpy(hoso[pos].hoten,hotenstr); } //Tim kiem hoc sinh cout<<"===\n"; Kỹ thuật lập trình 501127 – HK2/2011-2012 18