SlideShare a Scribd company logo
o o n 
Kỹ thuật lập trình 501127 – HK2/2011-2012 1 
Ỹ UẬ LẬ Ì 
ài p 4 – ần 12 
ảng, ỗi và kiể dữ liệ ó ấ rú 
ài p bắ b ộ : 
Bài 1: 
Viết chương trình tính ma trận chuyển vị. 
Prototype: int[][] chuyen_vi(int[][] matran) 
#include<iostream> 
using namespace std; 
int main(){ 
cout<<"Nhap m,n, cho ma tran A(m x n):"; 
int m,n; 
cin>>m>>n; 
//Khoi tao (nhap) mang m x n 
int a[m][n]; 
for(int i=0;i<m;i++) 
for(int j=0;j<n;j++){ 
cout<<"Nhap A["<<i<<"]["<<j<<"]:"; 
cin>>a[i][j]; 
} 
//Thuc hien chuyen vi 
int b[n][m]; 
for(int i=0;i<n;i++) 
for(int j=0;j<m;j++){ 
b[i][j]=a[j][i]; 
} 
//In mang ra man hinh 
cout<<"Ma tran 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 chuyen vi:n"; 
for(int i=0;i<n;i++){ 
for(int j=0;j<m;j++){ 
cout<<b[i][j]<<" "; 
} 
cout<<endl; 
} 
return 0; 
}
o o n 
Kỹ thuật lập trình 501127 – HK2/2011-2012 2 
Bài 2: 
Viết chương trình nhân hai ma trận. 
Prototype: int[][] nhanmatran(int[][] matran1, int[][] matran2) 
#include<iostream> 
#include <stdlib.h> 
using namespace std; 
int main(){ 
cout<<"Nhap m,n,p cho ma tran A(m x n), B(n x p):"; 
int m,n,p; 
cin>>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;
o o n 
Kỹ thuật lập trình 501127 – HK2/2011-2012 3 
} 
cout<<"A x B = C (n x p):n"; 
for(int i=0;i<m;i++){ 
for(int j=0;j<p;j++){ 
cout<<c[i][j]<<" "; 
} 
cout<<endl; 
} 
return 0; 
}
o o n 
Kỹ thuật lập trình 501127 – HK2/2011-2012 4 
Bài 3: 
Viết chương trình trả về về kí tự thứ i trong chuỗi, kiểm tra tính hợp lệ của i nhập vào. 
Prototype: char ki_tu_tai(int i) 
#include<iostream> //Khong su dung thu vien string 
using namespace std; 
int main(){ 
char s[100]; 
int length=0; 
do{ 
cout<<"Nhap vao mot chuoi:"; 
cin.getline(s,100); 
while(s[length]!='0')length++; 
length--; 
}while (length==0) ; 
int vt; 
do{ 
cout<<"Nhap vi tri can trich ki tu:"; 
cin>>vt; 
}while (vt>length||vt<1); 
cout<<"Ki tu tai vi tri "<<vt<<" la "<<s[vt-1]; 
return 0; 
}
o o n 
Kỹ thuật lập trình 501127 – HK2/2011-2012 5 
Bài 4: 
Viết chương trình tìm vị trí xuất hiện đầu tiên của một chuỗi con trong chuỗi hiện tại. 
Prototype: int xuat_hien(char* chuoi_hien_tai, char* chuoi_con) 
#include<iostream> //Khong su dung thu vien string 
using namespace std; 
int main(){ 
char s1[100],s2[100];//s1: chuoi hien tai, s2: chuoi con 
cout<<"Nhap vao mot chuoi 1:"; 
cin.getline(s1,100); 
cout<<"Nhap vao mot chuoi 2:"; 
cin.getline(s2,100); 
int lengths1=0,lengths2=0; 
while(s1[lengths1]!='0')lengths1++; 
lengths1--; 
while(s2[lengths2]!='0')lengths2++; 
lengths2--; 
int i; 
for(i=0;i<lengths1;i++){ 
if (s1[i]==s2[0]){ 
int j; 
for(j=1;j<lengths2;j++){ 
if (s1[i+j]!=s2[j]){ 
break; 
} 
} 
if (j==lengths2){ 
cout<<"Chuoi con xuat hien trong chuoi hien tai o vi 
tri:"<<i+1; 
break; 
} 
} 
} 
if (i==lengths1){ 
cout<<"Khong tim thay chuoi con trong chuoi hien tai"; 
} 
return 0; 
}
o o n 
Kỹ thuật lập trình 501127 – HK2/2011-2012 6 
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 8/2009, trong năm 2009. 
Prototype: Ngay nhiet_do_thap_nhat(Thoitiet[] arr_thoi_tiet) 
#include<iostream> 
#include <stdlib.h> 
#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<MAX;i++){ 
thoitietnam[i].aday.day=dayth; 
thoitietnam[i].aday.month=thang; 
thoitietnam[i].aday.year=nam; 
thoitietnam[i].maxtemp=(rand()%350)/10.0; //Nhiet do 
maximum la 35.0 (oC) 
thoitietnam[i].mintemp=(rand()%350)/10.0; //Nhiet do 
maximum la 35.0 (oC) 
while (thoitietnam[i].mintemp>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; 
}
o o n 
Kỹ thuật lập trình 501127 – HK2/2011-2012 7 
if (thang>12){ 
nam++; 
thang=1; 
} 
} 
//Tim ngay co nhiet do thap nhat trong khoang thoi gian 
cout<<"Nhap thang, nam (nhap thang = 0 neu chi xet trong 
nam:"; 
int qmonth,qyear; 
Date result; 
float qmaxtemp=0;//-1000.0; //Khoi tao qmaxtemp co nhiet do - 
1000 (oC) 
cin>>qmonth>>qyear; 
for(int i=1;i<=MAX;i++){ 
if(thoitietnam[i].aday.year==qyear&&(qmonth==0?true:thoitietna 
m[i].aday.month==qmonth)&&thoitietnam[i].maxtemp>qmaxtemp){ 
qmaxtemp=thoitietnam[i].maxtemp; 
result=thoitietnam[i].aday; 
} 
} 
if (qmaxtemp!=-1000.0){ 
cout<<"Nhiet do maximum trong thoi gian do la "<<qmaxtemp; 
cout<<" vao ngay "<<result.day<<" thang "<<result.month<<" 
nam "<<result.year; 
}else{ 
cout<<"Khong do du lieu!"; 
} 
return 0; 
}
o o n 
Kỹ thuật lập trình 501127 – HK2/2011-2012 8 
ài 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<iostream> 
using namespace std; 
int main(){ 
cout<<"Nhap n:"; 
int n; 
cin>>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; 
} 
}
o o n 
Kỹ thuật lập trình 501127 – HK2/2011-2012 9 
Bài 7: 
Viết chương trình trả về chiều dài chuỗi ký tự (không sử dụng hàm strlen). 
#include<iostream> //Khong su dung thu vien string 
using namespace std; 
int main(){ 
cout<<"Nhap vao mot chuoi:"; 
char s[100]; 
cin.getline(s,100); 
int length=0; 
while(s[length]!='0')length++; 
length--; 
cout<<"Xau co do dai: "<<length; 
return 0; 
}
o o n 
Kỹ thuật lập trình 501127 – HK2/2011-2012 
10 
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<iostream> 
using namespace std; 
int main(){ 
char s[100]; 
cout<<"Nhap vao mot chuoi:"; 
cin.getline(s,100); 
cout<<"Nhap vi tri can thay the ki tu:"; 
int vt; 
cin>>vt; 
cout<<"Nhap ki tu can thay the:"; 
char c; 
cin>>c; 
s[vt-1]=c; 
cout<<"Chuoi sau khi thay the:"<<s; 
return 0; 
}
o o n 
Kỹ thuật lập trình 501127 – HK2/2011-2012 
11 
Bài 9: 
Viết chương trình so sánh hai chuỗi, có phân biệt chữ hoa chữ thường (không sử 
dụng hàm strcmp). 
//trả về: 
-1 :cho biết chuỗi 1 < chuỗi 2 
0 :cho biết 2 chuỗi giống nhau 
1 : cho biết chuỗi 1 > chuỗi 2 
#include<iostream> //Khong su dung thu vien string 
using namespace std; 
int main(){ 
char s1[100],s2[100];//s1: chuoi hien tai, s2: chuoi con 
cout<<"Nhap vao mot chuoi 1:"; 
cin.getline(s1,100); 
cout<<"Nhap vao mot chuoi 2:"; 
cin.getline(s2,100); 
int lengths1=0,lengths2=0; 
while(s1[lengths1]!='0')lengths1++; 
lengths1--; 
while(s2[lengths2]!='0')lengths2++; 
lengths2--; 
int max=(lengths1>lengths2)?lengths1:lengths2; 
int i; 
for(i=0;i<max;i++){ 
if (s1[i]<s2[i]){ 
cout<< -1; 
break; 
}else if(s1[i]>s2[i]){ 
cout<< 1; 
break; 
}else if (i==max-1){ 
cout<< 0; 
} 
} 
return 0; 
}
o o n 
Kỹ thuật lập trình 501127 – HK2/2011-2012 
12 
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<iostream> 
using namespace std; 
int main(){ 
cout<<"Nhap xau:"; 
char s[100]; 
cin.getline(s,100); 
cout<<"Nhap vi tri, chieu dai xau can trich:"; 
int istart,ilength; 
cin>>istart>>ilength; 
char subs[ilength+1]; 
for(int i=0; i<ilength;i++){ 
subs[i]=s[istart-1+i]; 
} 
cout<<"Xau trich duoc:"<<subs; 
return 0; 
} 
Bài 11: 
Viết chương trình chuyển các ký tự trong chuỗi sang chữ in hoa. 
#include<iostream> 
using namespace std; 
int main(){ 
cout<<"Nhap xau:"; 
char s[100]; 
cin.getline(s,100); 
int i=0; 
while (s[i]!='0'){ 
if(s[i]>='a'&&s[i]<='z'){ 
s[i]=s[i]+'A'-'a'; 
} 
i++; 
} 
cout<<"Xau in hoa:"<<s; 
return 0; 
}
o o n 
Kỹ thuật lập trình 501127 – HK2/2011-2012 
13 
Bài 12: 
Viết chương trình xóa các khoảng trắng ở đầu chuỗi và cuối chuỗi. 
#include<iostream> 
#include<string.h> 
using namespace std; 
int main(){ 
cout<<"Nhap xau:"; 
char s[100]; 
cin.getline(s,100); 
int begin=0,end=strlen(s)-1; 
while (s[begin]==' ') begin++; 
while (s[end]==' ') end--; 
char s2[100]; 
if (begin<=end){ 
for(int i=begin;i<=end;i++){ 
s2[i-begin]=s[i]; 
} 
s2[end-begin+1]='0'; 
}else{ 
strcpy(s2,""); 
} 
cout<<"Xau xoa khoang trang:"<<s2; 
return 0; 
}
o o n 
Kỹ thuật lập trình 501127 – HK2/2011-2012 
14 
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<iostream> 
using namespace std; 
int main(){ 
char a[100], b[100], cOR[100],cAND[100],cXOR[100]; 
cout<<"Nhap chuoi A:"; 
cin>>a; 
cout<<"Nhap chuoi B:"; 
cin>>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; 
}
o o n 
Kỹ thuật lập trình 501127 – HK2/2011-2012 
15 
Bài 14: 
Viết chương trình trả về độ dài lớn nhất của dãy con tăng và giảm của A và 
xuất ra dãy con tăng và giảm lớn nhất của A với A = (a1, a2,…, an) là dãy gồm n số 
phân biệt. Một dãy con k phần tử của A là dãy B gồm k số hạng phần tử của A xuất hiện 
theo đúng thứ tự mà chúng xuất hiện trong A. Có nghĩa là B = (ai1, ai2,…, aik) với i1 < i2 
< …< ik. Dãy con B được gọi là tăng nếu ai1 < ai2 <…< aik, và giảm nếu ai1 > ai2 
>…> aik. 
#include<iostream> 
using namespace std; 
int main(){ 
cout<<"Nhap so phan tu cua A:"; 
int n; 
cin>>n; 
int a[n]; 
for (int i=0;i<n;i++){ 
cout<<"Nhap phan tu thu "<<i+1<<": "; 
cin>>a[i]; 
} 
int tang=1,giam=1,maxtang=1,maxgiam=1; 
int i=0; 
while (i<n-1){ 
if (a[i+1]>a[i]){ 
tang++; 
i++; 
maxgiam=maxgiam<giam?giam:maxgiam; 
giam=1; 
}else{ 
giam++; 
i++; 
maxtang=maxtang<tang?tang:maxtang; 
tang=1; 
} 
} 
maxgiam=maxgiam<giam?giam:maxgiam; 
maxtang=maxtang<tang?tang:maxtang; 
cout<<"Day tang maximum: "<<maxtang; 
cout<<"Day giam maximum: "<<maxgiam; 
return 0; 
}
o o n 
Kỹ thuật lập trình 501127 – HK2/2011-2012 
16 
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 < n < 
100. 
Lưu ý: Không dùng mảng 2 chiều. Chỉ dùng 2 mảng các số nguyên luân phiên chứa hàng 
thứ i và i+1. 
#include<iostream> 
using namespace std; 
int main(){ 
cout<<"Nhap n (0<n<100):"; 
int n; 
cin>>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; 
}
o o n 
Kỹ thuật lập trình 501127 – HK2/2011-2012 
17 
Bài 16: 
Viết chương trình tạo ra một mảng lưu trữ điểm số của học sinh. Tính trung bình điểm 
của tất cả học sinh. Xuất kết quả từng điểm và điểm trung bình. 
#include<iostream> 
using namespace std; 
int main(){ 
cout<<"Nhap so hoc sinh:"; 
int n; 
cin>>n; 
float diem[n]; 
for(int i=0;i<n;i++){ 
cout<<"Nhap diem hoc sinh thu "<<i+1<<": "; 
cin>>diem[i]; 
} 
float sumdiem=0,tbdiem; 
for(int i=0;i<n;i++){ 
sumdiem+=diem[i]; 
} 
tbdiem=sumdiem/n; 
//in ket qua 
cout<<"STT Diem"; 
for(int i=0;i<n;i++){ 
cout<<"n"<<i+1<<" "<<diem[i]; 
} 
cout<<"nDiem trung binh: "<<tbdiem; 
return 0; 
}
o o n 
Kỹ thuật lập trình 501127 – HK2/2011-2012 
18 
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<iostream> 
#include<string.h> 
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<<"Nhap so luong hoc sinh:"; 
int n; 
cin>>n; 
hocsinh hoso[MAXARR]; 
for(int i=0;i<MAXARR;i++){ 
strcpy(hoso[i].mshs,""); 
strcpy(hoso[i].hoten,""); 
} 
//Them hoc sinh, gia su nhap hop le, khong nhap trung mshs 
(duplicate), code moi xu ly don gian dung do (Collision) 
for(int i=0;i<n;i++){ 
int pos; 
cout<<"Nhap ma so hoc sinh thu "<<i+1<<": "; 
char masostr[MASO]; 
cin>>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";
o o n 
Kỹ thuật lập trình 501127 – HK2/2011-2012 
19 
cout<<"Nhap mshs can tim: "; 
char qmasostr[MASO]; 
cin>>qmasostr; 
int qmasonum=atoi(qmasostr); 
int pos=qmasonum%MAXLIST; 
while (strcmp(hoso[pos].mshs,qmasostr)!=0&&pos<MAXARR) pos++; 
if (pos<MAXARR){ 
cout<<"Maso: "<<hoso[pos].mshs<<" - Ho ten: 
"<<hoso[pos].hoten; 
}else{ 
cout<<"Khong tim thay!"; 
} 
return 0; 
} 
-- ế -

More Related Content

What's hot

Lap trinh c++ có lời giải 3
Lap trinh c++ có lời giải 3Lap trinh c++ có lời giải 3
Lap trinh c++ có lời giải 3Minh Ngoc Tran
 
Nmlt c05 cau_lenhlap
Nmlt c05 cau_lenhlapNmlt c05 cau_lenhlap
Nmlt c05 cau_lenhlap
Minh Ngoc Tran
 
Lap trinh c++ có lời giải 1
Lap trinh c++ có lời giải 1Lap trinh c++ có lời giải 1
Lap trinh c++ có lời giải 1Minh Ngoc Tran
 
C đến C++ phần 1
C đến C++ phần 1C đến C++ phần 1
C đến C++ phần 1
TechMaster Vietnam
 
Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2Minh Ngoc Tran
 
giao trinh c++ Chuong1
giao trinh c++ Chuong1giao trinh c++ Chuong1
giao trinh c++ Chuong1Bễ Nguyễn
 
đáP án 24 đề tin
đáP án 24 đề tinđáP án 24 đề tin
đáP án 24 đề tinTtx Love
 
Exercise array
Exercise arrayExercise array
Exercise array
Tuấn Bùi
 
Basic C programming
Basic C programmingBasic C programming
Basic C programming
TechMaster Vietnam
 
Control structure in C
Control structure in CControl structure in C
Control structure in C
TechMaster Vietnam
 
Nmlt c09 chuoi_kytu
Nmlt c09 chuoi_kytuNmlt c09 chuoi_kytu
Nmlt c09 chuoi_kytu
Minh Ngoc Tran
 
Stl vector nguyen_trihai_11520094_khmt06
Stl vector nguyen_trihai_11520094_khmt06Stl vector nguyen_trihai_11520094_khmt06
Stl vector nguyen_trihai_11520094_khmt06
Quach Long
 
Data Structures and Algorithms Gụidance
Data Structures and Algorithms GụidanceData Structures and Algorithms Gụidance
Data Structures and Algorithms Gụidance
Popping Khiem - Funky Dance Crew PTIT
 
Nmlt c11 con_trocoban-
Nmlt c11 con_trocoban-Nmlt c11 con_trocoban-
Nmlt c11 con_trocoban-
Minh Ngoc Tran
 

What's hot (19)

Lap trinh c++ có lời giải 3
Lap trinh c++ có lời giải 3Lap trinh c++ có lời giải 3
Lap trinh c++ có lời giải 3
 
Tut6
Tut6Tut6
Tut6
 
Lab4
Lab4Lab4
Lab4
 
Nmlt c05 cau_lenhlap
Nmlt c05 cau_lenhlapNmlt c05 cau_lenhlap
Nmlt c05 cau_lenhlap
 
Lap trinh c++ có lời giải 1
Lap trinh c++ có lời giải 1Lap trinh c++ có lời giải 1
Lap trinh c++ có lời giải 1
 
C đến C++ phần 1
C đến C++ phần 1C đến C++ phần 1
C đến C++ phần 1
 
Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2
 
giao trinh c++ Chuong1
giao trinh c++ Chuong1giao trinh c++ Chuong1
giao trinh c++ Chuong1
 
đáP án 24 đề tin
đáP án 24 đề tinđáP án 24 đề tin
đáP án 24 đề tin
 
Exercise array
Exercise arrayExercise array
Exercise array
 
Bai tap oop c++
Bai tap oop c++Bai tap oop c++
Bai tap oop c++
 
Basic C programming
Basic C programmingBasic C programming
Basic C programming
 
Control structure in C
Control structure in CControl structure in C
Control structure in C
 
Nmlt c09 chuoi_kytu
Nmlt c09 chuoi_kytuNmlt c09 chuoi_kytu
Nmlt c09 chuoi_kytu
 
Stl vector nguyen_trihai_11520094_khmt06
Stl vector nguyen_trihai_11520094_khmt06Stl vector nguyen_trihai_11520094_khmt06
Stl vector nguyen_trihai_11520094_khmt06
 
Data Structures and Algorithms Gụidance
Data Structures and Algorithms GụidanceData Structures and Algorithms Gụidance
Data Structures and Algorithms Gụidance
 
Nmlt c11 con_trocoban-
Nmlt c11 con_trocoban-Nmlt c11 con_trocoban-
Nmlt c11 con_trocoban-
 
Chuong1 c
Chuong1 c Chuong1 c
Chuong1 c
 
C10 generic algorithms
C10 generic algorithmsC10 generic algorithms
C10 generic algorithms
 

Similar to Tut4 solution

C10 generic algorithms
C10 generic algorithmsC10 generic algorithms
C10 generic algorithmsHồ Lợi
 
Chuyen doi he so
Chuyen doi he soChuyen doi he so
Chuyen doi he so
Dương Hằng
 
Bài tập CTDL và GT 8
Bài tập CTDL và GT 8Bài tập CTDL và GT 8
Bài tập CTDL và GT 8
Hồ Lợi
 
C8 object-oriented thinking
C8 object-oriented thinkingC8 object-oriented thinking
C8 object-oriented thinking
Tiến Quang Phan
 
C8 object-oriented thinking
C8 object-oriented thinkingC8 object-oriented thinking
C8 object-oriented thinkingHồ Lợi
 
Sang tao4
Sang tao4Sang tao4
Sang tao4hieusui
 
Lập trình hướng đối tượng - p3
Lập trình hướng đối tượng - p3Lập trình hướng đối tượng - p3
Lập trình hướng đối tượng - p3
Học viện đào tạo CNTT NIIT iNET
 
Bài tập ôn lập trình
Bài tập ôn lập trìnhBài tập ôn lập trình
Bài tập ôn lập trình
Thai Hoc Vu
 
Cấu trúc dữ liệu cơ bản - Ôn tập
Cấu trúc dữ liệu cơ bản - Ôn tậpCấu trúc dữ liệu cơ bản - Ôn tập
Cấu trúc dữ liệu cơ bản - Ôn tập
Hồ Lợi
 
Bài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giảiBài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giải
Trung Thanh Nguyen
 
String c++
String c++String c++
String c++
ptquang160492
 
Bai tap java
Bai tap javaBai tap java
Bai tap java
Phan van giap
 
C3 functions and_library
C3 functions and_libraryC3 functions and_library
C3 functions and_libraryHồ Lợi
 
Giao trinh bai tap c va c++
Giao trinh bai tap c va c++Giao trinh bai tap c va c++
Giao trinh bai tap c va c++Congdat Le
 

Similar to Tut4 solution (20)

C10 generic algorithms
C10 generic algorithmsC10 generic algorithms
C10 generic algorithms
 
Ctdl lab01
Ctdl lab01Ctdl lab01
Ctdl lab01
 
Chuyen doi he so
Chuyen doi he soChuyen doi he so
Chuyen doi he so
 
Bài tập CTDL và GT 8
Bài tập CTDL và GT 8Bài tập CTDL và GT 8
Bài tập CTDL và GT 8
 
Lesson08
Lesson08Lesson08
Lesson08
 
C8 object-oriented thinking
C8 object-oriented thinkingC8 object-oriented thinking
C8 object-oriented thinking
 
C8 object-oriented thinking
C8 object-oriented thinkingC8 object-oriented thinking
C8 object-oriented thinking
 
Sang tao4
Sang tao4Sang tao4
Sang tao4
 
Lesson08
Lesson08Lesson08
Lesson08
 
Lập trình hướng đối tượng - p3
Lập trình hướng đối tượng - p3Lập trình hướng đối tượng - p3
Lập trình hướng đối tượng - p3
 
Bài tập ôn lập trình
Bài tập ôn lập trìnhBài tập ôn lập trình
Bài tập ôn lập trình
 
Cấu trúc dữ liệu cơ bản - Ôn tập
Cấu trúc dữ liệu cơ bản - Ôn tậpCấu trúc dữ liệu cơ bản - Ôn tập
Cấu trúc dữ liệu cơ bản - Ôn tập
 
Bài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giảiBài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giải
 
String c++
String c++String c++
String c++
 
Bai tap java
Bai tap javaBai tap java
Bai tap java
 
C3 functions and_library
C3 functions and_libraryC3 functions and_library
C3 functions and_library
 
C3 functions and_library
C3 functions and_libraryC3 functions and_library
C3 functions and_library
 
Giao trinh bai tap c va c++
Giao trinh bai tap c va c++Giao trinh bai tap c va c++
Giao trinh bai tap c va c++
 
Giao trinh bai tap c va c++
Giao trinh bai tap c va c++Giao trinh bai tap c va c++
Giao trinh bai tap c va c++
 
Lect09 string
Lect09 stringLect09 string
Lect09 string
 

More from Trần Văn Nam

Phan 2 chuong 8 (chuoi ky tu)
Phan 2   chuong 8 (chuoi ky tu)Phan 2   chuong 8 (chuoi ky tu)
Phan 2 chuong 8 (chuoi ky tu)Trần Văn Nam
 
Phan 2 chuong 9 (cau truc)
Phan 2   chuong 9 (cau truc)Phan 2   chuong 9 (cau truc)
Phan 2 chuong 9 (cau truc)Trần Văn Nam
 
Phan 2 chuong 10 (tap tin)
Phan 2   chuong 10 (tap tin)Phan 2   chuong 10 (tap tin)
Phan 2 chuong 10 (tap tin)Trần Văn Nam
 
Giáo trình cấu trúc dữ liệu và giải thuật phần 1 tài liệu, ebook, giáo trình
Giáo trình cấu trúc dữ liệu và giải thuật phần 1   tài liệu, ebook, giáo trìnhGiáo trình cấu trúc dữ liệu và giải thuật phần 1   tài liệu, ebook, giáo trình
Giáo trình cấu trúc dữ liệu và giải thuật phần 1 tài liệu, ebook, giáo trìnhTrần Văn Nam
 
Bg chuong trinh dich chuong 3
Bg chuong trinh dich chuong 3Bg chuong trinh dich chuong 3
Bg chuong trinh dich chuong 3Trần Văn Nam
 
Bài giảng ngôn ngữ lập trình c++ chương 7 ra vào dữ liệu tài liệu, ebook, ...
Bài giảng ngôn ngữ lập trình c++ chương 7  ra vào dữ liệu   tài liệu, ebook, ...Bài giảng ngôn ngữ lập trình c++ chương 7  ra vào dữ liệu   tài liệu, ebook, ...
Bài giảng ngôn ngữ lập trình c++ chương 7 ra vào dữ liệu tài liệu, ebook, ...Trần Văn Nam
 

More from Trần Văn Nam (18)

Pointer
PointerPointer
Pointer
 
Phan 2 chuong 8 (chuoi ky tu)
Phan 2   chuong 8 (chuoi ky tu)Phan 2   chuong 8 (chuoi ky tu)
Phan 2 chuong 8 (chuoi ky tu)
 
Phan 2 chuong 9 (cau truc)
Phan 2   chuong 9 (cau truc)Phan 2   chuong 9 (cau truc)
Phan 2 chuong 9 (cau truc)
 
Phan 2 chuong 10 (tap tin)
Phan 2   chuong 10 (tap tin)Phan 2   chuong 10 (tap tin)
Phan 2 chuong 10 (tap tin)
 
Lect05 array
Lect05 arrayLect05 array
Lect05 array
 
Huong dan thao_tac_file
Huong dan thao_tac_fileHuong dan thao_tac_file
Huong dan thao_tac_file
 
Cam bien gia toc
Cam bien gia tocCam bien gia toc
Cam bien gia toc
 
Bai tap c
Bai tap cBai tap c
Bai tap c
 
Giáo trình cấu trúc dữ liệu và giải thuật phần 1 tài liệu, ebook, giáo trình
Giáo trình cấu trúc dữ liệu và giải thuật phần 1   tài liệu, ebook, giáo trìnhGiáo trình cấu trúc dữ liệu và giải thuật phần 1   tài liệu, ebook, giáo trình
Giáo trình cấu trúc dữ liệu và giải thuật phần 1 tài liệu, ebook, giáo trình
 
Ctdlgt
CtdlgtCtdlgt
Ctdlgt
 
Chuong 05
Chuong 05Chuong 05
Chuong 05
 
Bg chuong trinh dich chuong 3
Bg chuong trinh dich chuong 3Bg chuong trinh dich chuong 3
Bg chuong trinh dich chuong 3
 
Chapter07 io
Chapter07 ioChapter07 io
Chapter07 io
 
C++ 2011 april_draft
C++ 2011 april_draftC++ 2011 april_draft
C++ 2011 april_draft
 
Bài giảng ngôn ngữ lập trình c++ chương 7 ra vào dữ liệu tài liệu, ebook, ...
Bài giảng ngôn ngữ lập trình c++ chương 7  ra vào dữ liệu   tài liệu, ebook, ...Bài giảng ngôn ngữ lập trình c++ chương 7  ra vào dữ liệu   tài liệu, ebook, ...
Bài giảng ngôn ngữ lập trình c++ chương 7 ra vào dữ liệu tài liệu, ebook, ...
 
Tailieuvkt hk3
Tailieuvkt hk3Tailieuvkt hk3
Tailieuvkt hk3
 
Lenh tat auto_cad hk3
Lenh tat auto_cad hk3Lenh tat auto_cad hk3
Lenh tat auto_cad hk3
 
Nhung ad
Nhung adNhung ad
Nhung ad
 

Tut4 solution

  • 1. o o n Kỹ thuật lập trình 501127 – HK2/2011-2012 1 Ỹ UẬ LẬ Ì ài p 4 – ần 12 ảng, ỗi và kiể dữ liệ ó ấ rú ài p bắ b ộ : Bài 1: Viết chương trình tính ma trận chuyển vị. Prototype: int[][] chuyen_vi(int[][] matran) #include<iostream> using namespace std; int main(){ cout<<"Nhap m,n, cho ma tran A(m x n):"; int m,n; cin>>m>>n; //Khoi tao (nhap) mang m x n int a[m][n]; for(int i=0;i<m;i++) for(int j=0;j<n;j++){ cout<<"Nhap A["<<i<<"]["<<j<<"]:"; cin>>a[i][j]; } //Thuc hien chuyen vi int b[n][m]; for(int i=0;i<n;i++) for(int j=0;j<m;j++){ b[i][j]=a[j][i]; } //In mang ra man hinh cout<<"Ma tran 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 chuyen vi:n"; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cout<<b[i][j]<<" "; } cout<<endl; } return 0; }
  • 2. o o n Kỹ thuật lập trình 501127 – HK2/2011-2012 2 Bài 2: Viết chương trình nhân hai ma trận. Prototype: int[][] nhanmatran(int[][] matran1, int[][] matran2) #include<iostream> #include <stdlib.h> using namespace std; int main(){ cout<<"Nhap m,n,p cho ma tran A(m x n), B(n x p):"; int m,n,p; cin>>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;
  • 3. o o n Kỹ thuật lập trình 501127 – HK2/2011-2012 3 } cout<<"A x B = C (n x p):n"; for(int i=0;i<m;i++){ for(int j=0;j<p;j++){ cout<<c[i][j]<<" "; } cout<<endl; } return 0; }
  • 4. o o n Kỹ thuật lập trình 501127 – HK2/2011-2012 4 Bài 3: Viết chương trình trả về về kí tự thứ i trong chuỗi, kiểm tra tính hợp lệ của i nhập vào. Prototype: char ki_tu_tai(int i) #include<iostream> //Khong su dung thu vien string using namespace std; int main(){ char s[100]; int length=0; do{ cout<<"Nhap vao mot chuoi:"; cin.getline(s,100); while(s[length]!='0')length++; length--; }while (length==0) ; int vt; do{ cout<<"Nhap vi tri can trich ki tu:"; cin>>vt; }while (vt>length||vt<1); cout<<"Ki tu tai vi tri "<<vt<<" la "<<s[vt-1]; return 0; }
  • 5. o o n Kỹ thuật lập trình 501127 – HK2/2011-2012 5 Bài 4: Viết chương trình tìm vị trí xuất hiện đầu tiên của một chuỗi con trong chuỗi hiện tại. Prototype: int xuat_hien(char* chuoi_hien_tai, char* chuoi_con) #include<iostream> //Khong su dung thu vien string using namespace std; int main(){ char s1[100],s2[100];//s1: chuoi hien tai, s2: chuoi con cout<<"Nhap vao mot chuoi 1:"; cin.getline(s1,100); cout<<"Nhap vao mot chuoi 2:"; cin.getline(s2,100); int lengths1=0,lengths2=0; while(s1[lengths1]!='0')lengths1++; lengths1--; while(s2[lengths2]!='0')lengths2++; lengths2--; int i; for(i=0;i<lengths1;i++){ if (s1[i]==s2[0]){ int j; for(j=1;j<lengths2;j++){ if (s1[i+j]!=s2[j]){ break; } } if (j==lengths2){ cout<<"Chuoi con xuat hien trong chuoi hien tai o vi tri:"<<i+1; break; } } } if (i==lengths1){ cout<<"Khong tim thay chuoi con trong chuoi hien tai"; } return 0; }
  • 6. o o n Kỹ thuật lập trình 501127 – HK2/2011-2012 6 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 8/2009, trong năm 2009. Prototype: Ngay nhiet_do_thap_nhat(Thoitiet[] arr_thoi_tiet) #include<iostream> #include <stdlib.h> #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<MAX;i++){ thoitietnam[i].aday.day=dayth; thoitietnam[i].aday.month=thang; thoitietnam[i].aday.year=nam; thoitietnam[i].maxtemp=(rand()%350)/10.0; //Nhiet do maximum la 35.0 (oC) thoitietnam[i].mintemp=(rand()%350)/10.0; //Nhiet do maximum la 35.0 (oC) while (thoitietnam[i].mintemp>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; }
  • 7. o o n Kỹ thuật lập trình 501127 – HK2/2011-2012 7 if (thang>12){ nam++; thang=1; } } //Tim ngay co nhiet do thap nhat trong khoang thoi gian cout<<"Nhap thang, nam (nhap thang = 0 neu chi xet trong nam:"; int qmonth,qyear; Date result; float qmaxtemp=0;//-1000.0; //Khoi tao qmaxtemp co nhiet do - 1000 (oC) cin>>qmonth>>qyear; for(int i=1;i<=MAX;i++){ if(thoitietnam[i].aday.year==qyear&&(qmonth==0?true:thoitietna m[i].aday.month==qmonth)&&thoitietnam[i].maxtemp>qmaxtemp){ qmaxtemp=thoitietnam[i].maxtemp; result=thoitietnam[i].aday; } } if (qmaxtemp!=-1000.0){ cout<<"Nhiet do maximum trong thoi gian do la "<<qmaxtemp; cout<<" vao ngay "<<result.day<<" thang "<<result.month<<" nam "<<result.year; }else{ cout<<"Khong do du lieu!"; } return 0; }
  • 8. o o n Kỹ thuật lập trình 501127 – HK2/2011-2012 8 ài 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<iostream> using namespace std; int main(){ cout<<"Nhap n:"; int n; cin>>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; } }
  • 9. o o n Kỹ thuật lập trình 501127 – HK2/2011-2012 9 Bài 7: Viết chương trình trả về chiều dài chuỗi ký tự (không sử dụng hàm strlen). #include<iostream> //Khong su dung thu vien string using namespace std; int main(){ cout<<"Nhap vao mot chuoi:"; char s[100]; cin.getline(s,100); int length=0; while(s[length]!='0')length++; length--; cout<<"Xau co do dai: "<<length; return 0; }
  • 10. o o n Kỹ thuật lập trình 501127 – HK2/2011-2012 10 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<iostream> using namespace std; int main(){ char s[100]; cout<<"Nhap vao mot chuoi:"; cin.getline(s,100); cout<<"Nhap vi tri can thay the ki tu:"; int vt; cin>>vt; cout<<"Nhap ki tu can thay the:"; char c; cin>>c; s[vt-1]=c; cout<<"Chuoi sau khi thay the:"<<s; return 0; }
  • 11. o o n Kỹ thuật lập trình 501127 – HK2/2011-2012 11 Bài 9: Viết chương trình so sánh hai chuỗi, có phân biệt chữ hoa chữ thường (không sử dụng hàm strcmp). //trả về: -1 :cho biết chuỗi 1 < chuỗi 2 0 :cho biết 2 chuỗi giống nhau 1 : cho biết chuỗi 1 > chuỗi 2 #include<iostream> //Khong su dung thu vien string using namespace std; int main(){ char s1[100],s2[100];//s1: chuoi hien tai, s2: chuoi con cout<<"Nhap vao mot chuoi 1:"; cin.getline(s1,100); cout<<"Nhap vao mot chuoi 2:"; cin.getline(s2,100); int lengths1=0,lengths2=0; while(s1[lengths1]!='0')lengths1++; lengths1--; while(s2[lengths2]!='0')lengths2++; lengths2--; int max=(lengths1>lengths2)?lengths1:lengths2; int i; for(i=0;i<max;i++){ if (s1[i]<s2[i]){ cout<< -1; break; }else if(s1[i]>s2[i]){ cout<< 1; break; }else if (i==max-1){ cout<< 0; } } return 0; }
  • 12. o o n Kỹ thuật lập trình 501127 – HK2/2011-2012 12 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<iostream> using namespace std; int main(){ cout<<"Nhap xau:"; char s[100]; cin.getline(s,100); cout<<"Nhap vi tri, chieu dai xau can trich:"; int istart,ilength; cin>>istart>>ilength; char subs[ilength+1]; for(int i=0; i<ilength;i++){ subs[i]=s[istart-1+i]; } cout<<"Xau trich duoc:"<<subs; return 0; } Bài 11: Viết chương trình chuyển các ký tự trong chuỗi sang chữ in hoa. #include<iostream> using namespace std; int main(){ cout<<"Nhap xau:"; char s[100]; cin.getline(s,100); int i=0; while (s[i]!='0'){ if(s[i]>='a'&&s[i]<='z'){ s[i]=s[i]+'A'-'a'; } i++; } cout<<"Xau in hoa:"<<s; return 0; }
  • 13. o o n Kỹ thuật lập trình 501127 – HK2/2011-2012 13 Bài 12: Viết chương trình xóa các khoảng trắng ở đầu chuỗi và cuối chuỗi. #include<iostream> #include<string.h> using namespace std; int main(){ cout<<"Nhap xau:"; char s[100]; cin.getline(s,100); int begin=0,end=strlen(s)-1; while (s[begin]==' ') begin++; while (s[end]==' ') end--; char s2[100]; if (begin<=end){ for(int i=begin;i<=end;i++){ s2[i-begin]=s[i]; } s2[end-begin+1]='0'; }else{ strcpy(s2,""); } cout<<"Xau xoa khoang trang:"<<s2; return 0; }
  • 14. o o n Kỹ thuật lập trình 501127 – HK2/2011-2012 14 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<iostream> using namespace std; int main(){ char a[100], b[100], cOR[100],cAND[100],cXOR[100]; cout<<"Nhap chuoi A:"; cin>>a; cout<<"Nhap chuoi B:"; cin>>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; }
  • 15. o o n Kỹ thuật lập trình 501127 – HK2/2011-2012 15 Bài 14: Viết chương trình trả về độ dài lớn nhất của dãy con tăng và giảm của A và xuất ra dãy con tăng và giảm lớn nhất của A với A = (a1, a2,…, an) là dãy gồm n số phân biệt. Một dãy con k phần tử của A là dãy B gồm k số hạng phần tử của A xuất hiện theo đúng thứ tự mà chúng xuất hiện trong A. Có nghĩa là B = (ai1, ai2,…, aik) với i1 < i2 < …< ik. Dãy con B được gọi là tăng nếu ai1 < ai2 <…< aik, và giảm nếu ai1 > ai2 >…> aik. #include<iostream> using namespace std; int main(){ cout<<"Nhap so phan tu cua A:"; int n; cin>>n; int a[n]; for (int i=0;i<n;i++){ cout<<"Nhap phan tu thu "<<i+1<<": "; cin>>a[i]; } int tang=1,giam=1,maxtang=1,maxgiam=1; int i=0; while (i<n-1){ if (a[i+1]>a[i]){ tang++; i++; maxgiam=maxgiam<giam?giam:maxgiam; giam=1; }else{ giam++; i++; maxtang=maxtang<tang?tang:maxtang; tang=1; } } maxgiam=maxgiam<giam?giam:maxgiam; maxtang=maxtang<tang?tang:maxtang; cout<<"Day tang maximum: "<<maxtang; cout<<"Day giam maximum: "<<maxgiam; return 0; }
  • 16. o o n Kỹ thuật lập trình 501127 – HK2/2011-2012 16 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 < n < 100. Lưu ý: Không dùng mảng 2 chiều. Chỉ dùng 2 mảng các số nguyên luân phiên chứa hàng thứ i và i+1. #include<iostream> using namespace std; int main(){ cout<<"Nhap n (0<n<100):"; int n; cin>>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; }
  • 17. o o n Kỹ thuật lập trình 501127 – HK2/2011-2012 17 Bài 16: Viết chương trình tạo ra một mảng lưu trữ điểm số của học sinh. Tính trung bình điểm của tất cả học sinh. Xuất kết quả từng điểm và điểm trung bình. #include<iostream> using namespace std; int main(){ cout<<"Nhap so hoc sinh:"; int n; cin>>n; float diem[n]; for(int i=0;i<n;i++){ cout<<"Nhap diem hoc sinh thu "<<i+1<<": "; cin>>diem[i]; } float sumdiem=0,tbdiem; for(int i=0;i<n;i++){ sumdiem+=diem[i]; } tbdiem=sumdiem/n; //in ket qua cout<<"STT Diem"; for(int i=0;i<n;i++){ cout<<"n"<<i+1<<" "<<diem[i]; } cout<<"nDiem trung binh: "<<tbdiem; return 0; }
  • 18. o o n Kỹ thuật lập trình 501127 – HK2/2011-2012 18 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<iostream> #include<string.h> 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<<"Nhap so luong hoc sinh:"; int n; cin>>n; hocsinh hoso[MAXARR]; for(int i=0;i<MAXARR;i++){ strcpy(hoso[i].mshs,""); strcpy(hoso[i].hoten,""); } //Them hoc sinh, gia su nhap hop le, khong nhap trung mshs (duplicate), code moi xu ly don gian dung do (Collision) for(int i=0;i<n;i++){ int pos; cout<<"Nhap ma so hoc sinh thu "<<i+1<<": "; char masostr[MASO]; cin>>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";
  • 19. o o n Kỹ thuật lập trình 501127 – HK2/2011-2012 19 cout<<"Nhap mshs can tim: "; char qmasostr[MASO]; cin>>qmasostr; int qmasonum=atoi(qmasostr); int pos=qmasonum%MAXLIST; while (strcmp(hoso[pos].mshs,qmasostr)!=0&&pos<MAXARR) pos++; if (pos<MAXARR){ cout<<"Maso: "<<hoso[pos].mshs<<" - Ho ten: "<<hoso[pos].hoten; }else{ cout<<"Khong tim thay!"; } return 0; } -- ế -