Các ví dụ trong môn lập trình với C, C++

Chạy chương trình

a. Biên dị ch:

Bấm F7đểbiên dị ch chương trình. Nếu thành công thì sẽthấy nhưhình trên

b. Chạy chương trình

Bấm tổhợp phím Ctrl + F5

c. Tìm lỗi chương trình

Bấm F4đểtìm l ỗi.

pdf39 trang | Chuyên mục: C/C++ | Chia sẻ: dkS00TYs | Lượt xem: 2554 | Lượt tải: 4download
Tóm tắt nội dung Các ví dụ trong môn lập trình với C, C++, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
edef struct PS
{
int tu,mau;
}PS;
PS Nhap();
void Xuat(PS a);
int ucln(int a, int b);
PS Rutgon(PS a);
PS operator +(PS a, PS b);
bool operator <(PS a, PS b);
PS operator +(PS a, int b);
PS operator +(int a, PS b);
PS operator +=(PS &a,PS b);
PS operator +=(PS &a, int b);
void Nhap(PS a[],int n);
void Xuat(PS a[],int n);
PS Tong(PS a[],int n);
void Tang(PS a[],int n,int d=1);
void SapXep(PS a[],int n);
void HoanVi(PS &a, PS &b);
void main()
{
PS a[100];
int n;
printf("Nhap n: ");scanf("%d",&n);
Nhap(a,n); Xuat(a,n); printf("\n");
printf("Mang sau khi sap xep: ");
SapXep(a,n); Xuat(a,n); printf("\n");
PS kq=Tong(a,n);printf("Tong cac ps: ");Xuat(kq);printf("\n");
Tang(a,n);printf("Mang sau khi tang: ");Xuat(a,n);
getch();
}
void Tang(PS a[],int n, int d)
{
for(int i=0;i<n;i++)
a[i]+=d;
}
PS Tong(PS a[],int n)
{
PS kq;kq.tu=0;kq.mau=1;
for(int i=0;i<n;i++)
kq+=a[i];
return kq;
}
void Xuat(PS a[], int n)
Các ví dụ về lập trình với C, C++
Trần Phước Tuấn 29/39
{
for(int i=0;i<n;i++)
{
printf("\t");
Xuat(a[i]);
}
}
void Nhap(PS a[],int n)
{
for(int i=0;i<n;i++)
{
printf("Nhap ps thu %d: ",i);
a[i]=Nhap();
}
}
PS operator +=(PS &a, int b)
{
a=a+b;
return a;
}
PS operator +=(PS &a, PS b)
{
a=a+b;
return a;
}
PS operator +(int a, PS b)
{
return (b+a);
}
PS operator +(PS a, int b)
{
PS kq;
kq.tu=a.tu+b*a.mau;
kq.mau=a.mau;
return kq;
}
PS operator +(PS a, PS b)
{
PS kq;
kq.tu=a.tu*b.mau+b.tu*a.mau;
kq.mau=a.mau*b.mau;
kq=Rutgon(kq);
return kq;
}
PS Rutgon(PS a)
{
int uc=ucln(a.tu,a.mau);
a.tu/=uc;
a.mau/=uc;
return a;
}
int ucln(int a,int b)
{
Các ví dụ về lập trình với C, C++
Trần Phước Tuấn 30/39
a=abs(a);b=abs(b);
if(b==0)
return a;
else
return ucln(b,a%b);
}
void Xuat(PS a)
{
printf("%d/%d",a.tu,a.mau);
}
PS Nhap()
{
PS a;
do{
printf("tu/mau:");
scanf("%d/%d",&a.tu,&a.mau);
}while(a.mau==0);
return a;
}
void SapXep(PS a[],int n)
{
int i,j;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[j]<a[i])
HoanVi(a[i],a[j]);
}
bool operator <(PS a, PS b)
{
float x1,x2;
x1=(float)a.tu/a.mau;
x2=(float)b.tu/b.mau;
if(x1<x2)
return true;
return false;
}
void HoanVi(PS &a, PS &b)
{
PS tam=a;a=b;b=tam;
}
Các ví dụ về lập trình với C, C++
Trần Phước Tuấn 31/39
Bài 02:
#include
#include
#include
#include
typedef struct HS
{
char HoTen[50];
float DTB;
char MAHS[30];
}HS;
void SapXep(HS a[],int n);
void HoanVi(HS &a,HS &b);
void Xuat(HS a[],int n);
void Nhap(HS a[],int n);
void Xuat(HS a);
HS Nhap();
void main()
{
HS a[100];
int n=3;
Nhap(a,n);
SapXep(a,n);
Xuat(a,n);
getch();
}
void SapXep(HS a[],int n)
{
int i,j;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strcmp(a[j].HoTen,a[i].HoTen)<0)
HoanVi(a[i],a[j]);
}
void HoanVi(HS &a,HS &b)
{
HS tam=a;a=b;b=tam;
}
void Xuat(HS a[],int n)
{
for(int i=0;i<n;i++)
Xuat(a[i]);
}
void Nhap(HS a[],int n)
{
for (int i=0;i<n;i++)
{
printf("Nhap hoc sinh thu %d:\n",i);
a[i]=Nhap();
}
Các ví dụ về lập trình với C, C++
Trần Phước Tuấn 32/39
}
void Xuat(HS a)
{
printf("%-10s%-20s%-15.2f\n",a.MAHS,a.HoTen,a.DTB);
}
HS Nhap()
{
HS a;
printf("\tMa: "); fflush(stdin); gets(a.MAHS);
printf("\tHo va ten: "); fflush(stdin); gets(a.HoTen);
printf("\tDTB: "); scanf("%f",&a.DTB);
return a;
}
Bài tập phát triển thêm: (Bài tập bắt buộc – Nhóm tối đa 2 sinh viên)
Thực hiện bài tập quản lý sinh viên với các tính năng:
1. Thêm vào Danh sách học sinh
2. Xóa trong danh sách học sinh
a. Xóa 1 học sinh
b. Xóa tất cả các học sinh
3. Sửa Danh sách học sinh
4. Lưu danh sách học sinh (Lưu xuống fileà gõ tên tập tin để lưu)
5. Xem danh sách học sinh
a. Xem toàn bộ theo thứ tự trong tập tin
b. Sắp xếp theo họ tên, mã
c. Xem học sinh theo điểm trung bình, giới tính, …
6. Mở danh sách có sẳn trên máy (gõ vào tên tập tin)
Các kiến thức liên quan cần tìm hiểu để giải quyết bài này:
1. Mảng
2. Vòng lặp
3. Cấu trúc
4. Đọc ghi file (văn bản)
5. Các hàm xử lý chuổi
Tiêu chí đánh giá:
1. Tính tiện lợi cho người sử dụng (5đ)
2. Tổ chức chương trình tối, khai báo cấu trúc dữ liệu hợp lý, … (3đ).
3. Tính thẩm mỹ của giao diện (2đ)
Các ví dụ về lập trình với C, C++
Trần Phước Tuấn 33/39
Bài 03
#include 
bool ngto(int n);
bool chphuong(int n);
int dem(int a[], int n, bool ham(int));
void main()
{
int a[]={2,3,4,5,9,11,16};
int n=7;
int nt=dem(a,n,ngto);
int cp=dem(a,n,chphuong);
printf("Trong mang co %d so nt!\n",nt);
printf("Trong mang co %d so cp!\n",cp);
}
bool ngto(int n)
{
if(n<2) return false;
for(int i=2;i<=n/2;i++)
if(n%i==0)
return false;
return true;
}
bool chphuong(int n)
{
if(n<=0) return false;
int i=1;
for(i=1;i*i<n;i++);
if(i*i==n)
return true;
return false;
}
int dem(int a[],int n, bool ham(int))
{
int s=0;
for(int i=0;i<n;i++)
if(ham(a[i]))
s++;
return s;
}
Các ví dụ về lập trình với C, C++
Trần Phước Tuấn 34/39
Bài 04
#include 
#include 
#include 
typedef struct DIEM
{
float x,y;
};
DIEM Nhap(char ghichu[]);
void Xuat(DIEM A);
float KhoangCach(DIEM A,DIEM B);
DIEM TrungDiem(DIEM A,DIEM B);
typedef struct TAMGIAC
{
DIEM A,B,C;
};
TAMGIAC NhapTG(char ghichu[]);
void Xuat(TAMGIAC ABC);
float ChuVi(TAMGIAC ABC);
float DienTich(TAMGIAC ABC);
DIEM TrongTam(TAMGIAC ABC);
//--------Chuong trinh chinh
void main()
{
TAMGIAC ABC;
ABC=NhapTG("Nhap tam giac ABC: ");
printf("\nChu vi: %.2f",ChuVi(ABC));
printf("\nDien tich: %.2f",DienTich(ABC));
printf("\nTrong tam: ");Xuat(TrongTam(ABC));
getch();
}
//-----------Cac dinh nghia ham
DIEM TrongTam(TAMGIAC ABC)
{
DIEM kq;
kq.x=(ABC.A.x+ABC.B.x+ABC.C.x)/3;
kq.y=(ABC.A.y+ABC.B.y+ABC.C.y)/3;
return kq;
}
float DienTich(TAMGIAC ABC)
{
float kq;
float a,b,c;
a=KhoangCach(ABC.B,ABC.C);
b=KhoangCach(ABC.A,ABC.C);
c=KhoangCach(ABC.A,ABC.B);
float p=(a+b+c)/2;
kq=sqrt(p*(p-a)*(p-b)*(p-c));
return kq;
}
float ChuVi(TAMGIAC ABC)
Các ví dụ về lập trình với C, C++
Trần Phước Tuấn 35/39
{
float kq;
kq=KhoangCach(ABC.A,ABC.B);
kq+=KhoangCach(ABC.B,ABC.C);
kq+=KhoangCach(ABC.C,ABC.A);
return kq;
}
void Xuat(TAMGIAC ABC)
{
printf("A");Xuat(ABC.A); printf("--");
printf("B");Xuat(ABC.B); printf("--");
printf("C");Xuat(ABC.C);
}
TAMGIAC NhapTG(char ghichu[])
{
TAMGIAC kq;
printf("%s\n",ghichu);
kq.A=Nhap("Nhap dinh A");
kq.B=Nhap("Nhap dinh B");
kq.C=Nhap("Nhap dinh C");
return kq;
}
DIEM TrungDiem(DIEM A,DIEM B)
{
DIEM kq;
kq.x=(A.x+B.x)/2;
kq.y=(A.y+B.y)/2;
return kq;
}
float KhoangCach(DIEM A,DIEM B)
{
float kq;
kq=sqrt((A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y));
return kq;
}
void Xuat(DIEM A)
{
printf("(%.2f,%.2f)",A.x,A.y);
}
DIEM Nhap(char ghichu[])
{
DIEM kq;
printf("%s x,y:",ghichu);
scanf("%f,%f",&kq.x,&kq.y);
return kq;
}
Các ví dụ về lập trình với C, C++
Trần Phước Tuấn 36/39
Bài 05
#include
#include
#include
#include
#include
typedef struct HS
{
char MAHS[20];
char HoTen[50];
float DTB;
}HS;
void SapXep(HS a[],int n);
void HoanVi(HS &a,HS &b);
void Xuat(HS a[],int n);
void Nhap(HS a[],int n);
void Xuat(HS a);
HS Nhap();
char menu();
void DocFile(HS a[],int &n, char fileName[]);
void GhiFile(HS a[],int n,char fileName[]);
void main()
{
HS a[100];
int n=0;
char ch;
do{
ch=menu();
if (ch=='1')
{
printf("Nhap n: ");scanf("%d",&n);
}
if (ch=='2')
{
Nhap(a,n);
}
if (ch=='3')
{
Xuat(a,n);
getch();
}
if (ch=='4')
{
char fileName[100];
printf("Nhap ten file can doc: ");gets(fileName);
DocFile(a,n,fileName);
printf("Da doc xong!\n");
getch();
}
if (ch=='5')
{
Các ví dụ về lập trình với C, C++
Trần Phước Tuấn 37/39
char fileName[100];
printf("Nhap ten file de ghi: ");gets(fileName);
GhiFile(a,n,fileName);
printf("Da ghi xong!\n");
getch();
}
if (ch=='6')
{
SapXep(a,n);
printf("Da sap xep xong!\n");
getch();
}
}while(ch!='0');
}
void DocFile(HS a[],int &n, char fileName[])
{
FILE *f;
f=fopen(fileName,"rt");
//cac cau lenh doc file
n=0;
char strDTB[10];
while(!feof(f))
{
fgets(a[n].MAHS,20,f);a[n].MAHS[strlen(a[n].MAHS)-1]='\0';
fgets(a[n].HoTen,50,f);a[n].HoTen[strlen(a[n].HoTen)-1]='\0';
fgets(strDTB,10,f);a[n].DTB=(float)atof(strDTB);
n++;
}
//----------
fclose(f);
}
void GhiFile(HS a[],int n,char fileName[])
{
FILE *f;
f=fopen(fileName,"wt");
//cac cau lenh ghi file
for(int i=0;i<n;i++)
{
fprintf(f,"%s\n%s\n%.2f",a[i].MAHS,a[i].HoTen,a[i].DTB);
if(i<n-1)
fprintf(f,"\n");
}
//----------
fclose(f);
}
char menu()
{
system("cls");
printf("0. Thoat!\n");
printf("1. Nhap n!\n");
printf("2. Nhap mang!\n");
printf("3. Xuat mang!\n");
printf("4. Doc du lieu tu file!\n");
Các ví dụ về lập trình với C, C++
Trần Phước Tuấn 38/39
printf("5. Ghi du lieu ra file!\n");
printf("6. Sap xep danh sach theo ten\n");
fflush(stdin);
return getch();
}
void SapXep(HS a[],int n)
{
int i,j;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strcmp(a[j].HoTen,a[i].HoTen)<0)
HoanVi(a[i],a[j]);
}
void HoanVi(HS &a,HS &b)
{
HS tam=a;a=b;b=tam;
}
void Xuat(HS a[],int n)
{
for(int i=0;i<n;i++)
Xuat(a[i]);
}
void Nhap(HS a[],int n)
{
for (int i=0;i<n;i++)
{
printf("Nhap hoc sinh thu %d:\n",i);
a[i]=Nhap();
}
}
void Xuat(HS a)
{
printf("%-10s%-20s%-15.2f\n",a.MAHS,a.HoTen,a.DTB);
}
HS Nhap()
{
HS a;
printf("\tMa: "); fflush(stdin); gets(a.MAHS);
printf("\tHo va ten: "); fflush(stdin); gets(a.HoTen);
printf("\tDTB: "); scanf("%f",&a.DTB);
return a;
}
Các ví dụ về lập trình với C, C++
Trần Phước Tuấn 39/39
5. Debug chương trình (chạy từng bước)
a. Chạy từng bước:
Bấm F10 để chạy từng bước.
Khi đến câu lệnh gọi hàm thì Bấm F11 để chạy vào các câu lệnh bên trong hàm.
Sau khi bấm F11 thì bấm phím F10 để tiếp tục chạy từng bước.
b. Kết thúc chạy từng bước:
Bấm Shift + F5 để dừng việc chạy từng bước.
Chạy từng bước trong VC++ 6.0
Chạy từng bước trong VC++ 6.0

File đính kèm:

  • pdfCác ví dụ trong môn lập trình với C, C++.pdf
Tài liệu liên quan