Báo Cáo Bài Tập Lớn:Ngôn Ngữ Lập Trình CC++ I.Lời Nói Đầu Tron bối cảnh hiện nay Công nghệ thông tin đang phát triển như vũ bão với những ứng dụng phong phú và hiệu quả.Điều đó được thể hiện rất rõ trong các lĩnh vực của đời sống như kinh tế ,văn hoá, trong khoa học kĩ thuật .Để bắt kịp với xu thế của thời đại người kĩ sư phải trang bị cho mình một kiến thức vững vàng về tin học .Một trong những kiến thức không thể không kể đến đó là ngôn ngữ lập trình.Ngôn ngữ lập trình không những giúp chúng ta tạo ra các úng dụng cho nhu cầu về công việc của mình mà còn giúp ta tiếp cận các ứng dụng một cách rễ ràng .Do đó việc học ngôn ngữ lập trình là một nhu cầu rất tự nhiên của chúng ta.Một trong những ngôn ngữ lập trình tương đối phổ biến là Ngôn ngữ lập trình C.C là ngôn ngữ lập trình tương đối phức tạp và nó đòi hỏi khả năng sáng tạo cao của người lập trình .Vì vậy để nắm bắt được công cụ lập trình tương đối mạnh nhu C thì đòi hỏi người học nó phải đầu tư thời gian đáng kể.Sau đây là một số bài toán áp dụng ngôn ngữ C ở mức độ đơn giản do em viết trong quá trình học tập .Các bài toán nay chỉ viết ở mức đơn giản để áp dụng các câu lệnh và cú pháp đơn giản. Chương trình gồm hai phần : Phần I:Các bài toán tính toán(Tính ex,tổ hợp Cn …). Phần II:Gồm bài toán áp dụng cấu trúc(Bài toán tuyển sinh). Đây là bài toán tuy nhỏ nhưng tương đối phổ biến trong thực tế.Nhất là các bài ở phần I nó giúp ta tính toán các bài toán lớn. Dưới đây là nội dung chi tiết của bài toán bao gồm cách tổ chức nội dung chương trình và các ý tưởng của từng bài toán.
Trang 1Báo Cáo Bài Tập Lớn:Ngôn Ngữ Lập Trình C&C++
I.
Lời Nói Đầu
Tron bối cảnh hiện nay Công nghệ thông tin đang phát triển nh vũ bão với những ứng dụng phong phú và hiệu quả.Điều đó đợc thể hiện rất rõ trong các lĩnh vực của đời sống nh kinh tế ,văn hoá, trong khoa học kĩ thuật Để bắt kịp với xu thế của thời đại ngời kĩ s phải trang bị cho mình một kiến thức vững vàng về tin học Một trong những kiến thức không thể không kể đến đó là ngôn ngữ lập
trình.Ngôn ngữ lập trình không những giúp chúng ta tạo ra các úng dụng cho nhu cầu về công việc của mình mà còn giúp ta tiếp cận các ứng dụng một cách rễ ràng Do đó việc học ngôn ngữ lập trình là một nhu cầu rất tự nhiên của chúng ta.Một trong những ngôn ngữ lập trình tơng đối phổ biến là Ngôn ngữ lập trình C.C là ngôn ngữ lập trình tơng đối phức tạp và nó đòi hỏi khả năng sáng tạo cao của ngời lập trình Vì vậy để nắm bắt đợc công cụ lập trình tơng đối mạnh nhu C thì đòi hỏi ngời học nó phải đầu
t thời gian đáng kể.Sau đây là một số bài toán áp dụng ngôn ngữ C ở mức độ đơn giản do em viết trong quá trình học tập Các bài toán nay chỉ viết ở mức đơn giản để áp dụng các câu lệnh và cú pháp đơn giản
Chơng trình gồm hai phần :
*Phần I:Các bài toán tính toán(Tính ex,tổ hợp Cn …).)
*Phần II:Gồm bài toán áp dụng cấu trúc(Bài toán tuyển sinh)
Đây là bài toán tuy nhỏ nhng tơng đối phổ biến trong thực tế.Nhất là các bài ở phần I nó giúp ta tính toán các bài toán lớn
Dới đây là nội dung chi tiết của bài toán bao gồm cách tổ chức nội dung chơng trình và các ý tởng của từng bài toán
Sinh viên thực hiện:
Trần Văn Tuân
Lớp Cơ tin 2-k44
II
Nội Dung Báo Cáo
Báo cáo trình bày ý tởng và cơ sở toán học để xây dựng các thuật giải ,cách tổ chức chơng trình
1.Cách tổ chức ch ơng trình
Chơng trình tổ chức gồm tất cả 4 bài toán trong một chơng trình chính.Các bài toán đợc xây dựng thành các hàm Các hàm này đợc gọi từ chơng trình chính
Chơng trình xây dựng 4 hàm gồm
*Các hàm
float emux(float x): Tính ex
float to_hop(int m1,int n1): Hàm tính tổ hợp chập m của n phần tử
Cmn
float tinh_gia_fx(float x,int n1): Hàm tính giá trị của hàm f(x) tại đIểm x
void nhap(int n): Nhập giá trị hệ số của đa thức f(x)
int giai_thua(int n): Hàm này tính giai thừa của một số nguyên
void datafile(int n): Hàm này tạo File dữ liệu từ tập các quan sát
void tinh_toan(void): Hàm này tính toán độ lệch chuẩn và giá trị trung bình (Lờy dữ liệu File trên)
2.
Cách sử dụng ch ơng trình
Chơng trình sẽ da ra các lựa chọn dới dạng số Nếu muốn cho chạy bài tập nào bạn chỉ việc gõ số vào Nếu số của bạn gõ vào không trùng với một trong các số hiện ra ở màn hình chơng trình sẽ thoát Khi bạn chọn chơng trình nào đó bạn phải nhập dữ liệu cho bài toán,sau đó bạn sẽ đợc kết quả
I II.Thuật giải và ý t ởng của bài toán
Bài1:Tính ex
S dụng công thức truy hồi ex=1+x1! +x22! +…).+xnn!
Ta chỉ tính với một độ chính xác nhất định Trong chơng trình này chọn độ chính xác là 0.001
Với cách chọn nh vậy thì số lần máy làm sẽ hữu hạn
Dùng chiến lợc so sánh tỉ số xn/n! với độ chính xác yêu cầu.Khi cha đạt độ chính xác theo yêu cầu thì tiếp tục tính cho đến khi đạt độ chính xác theo yêu cầu thì thôi.Để vòng lặp đợc tiếp tục thì ở mỗi lần thử ta phải tăng lên một
2.Tính tổ hợp chập n của m phần tử
Trang 2Ta sử dụng công thức toán Cmn=m!/(m-n)!.n! để tính toán đợc ta xây dựng hàm tính giai thừa của một
số nguyên.Hàm tính giai thừa xây dựng bằng giải thuật đệ quy(chơng trình xây dựng hàm thể hiện rõ).Trong bài này ta phải kiểm tra điều kiện tồn tại tổ hợp đó là nm.Trong chơng trình có sử dụng lệnh
để kiểm tra nếu không thoả mãn điều kiện trên thì thoát
3.Tính gía trị của đa thức bậc n
Bài toán này xây dựng hai phần :Một phần nhập dữ liệu là mảng một chiều chứa các hệ số của đa thức f(x),một phần hàm tính giá trị của đa thức Khi gọi tới hàm tính giá trị của đa thức thì hàm nhập dữ liệu sẽ đợc gọi tới,và ngời sử dụng nhập các hệ số cho đa thức ,nhập bậc của đa thức cần tính Chơng trình này sử dụng vòng lặp for để đọc các hệ số của đa thức sau đó cho các hệ số nhân với bậc tơng ứng của đa thức rồi cộng tổng tích luỹ của chúng lại ta đợc kết quả
4.Tính giá trị trung bình và độ lệch chuẩn của một tâp số liệu quan sát
Tổ chức bài toán gồm hai hàm đó là hàm datafile để tạo file dữ liệu của tập các quan sát,hàm tính toán có nhiệm vụ tính toán giá trị trung bình s và độ lệch chuẩn d.Bài toán đợc tổ chức sao cho ngời chạy có thể tạo file dữ liệu mới hoặc có thể sử dụng ngay file dữ liêụ đã có ,số liệu của file sẽ đợc in kèm theo phần kết quả
5.Mã chơng trình
#include<stdio.h> //Bai Tap Lon Phan Thu Nhat//
#include<conio.h>
#include<math.h>
#include<stdlib.h>
#include<stdlib.h>
int n,mu,chon,m;
float x,a[100];
float emux(float x);
float to_hop(int m1,int n1);
float tinh_gia_fx(float x,int n1);
void nhap(int n);
int giai_thua(int n);
FILE *pt;
void datafile(int n);
void tinh_toan(void);
main()
{
clrscr;
printf("Hay Nhap Chon:\n0-Thoat.\n1-Tinh giai thua.\n2-Tinh e mu x.\n3-Tinh to hop.\n4-Tinh fx.\n"); printf("5-Tao file du lieu.\n6-Tinh do lech chuan va gia tri trung binh 4.\n");
scanf("%d",&chon);
if((chon>7)||(chon<0)) exit(0);
switch(chon)
{
case 0:break;
case 1:{ printf("\a\n Day La Chuong Trinh Tinh Giai Thua:");
printf("\nNhap so can tinh giai thua n=");scanf("%d",&n);
if(n<0)printf("KHONG CO GIAI THUA");else
printf("Gia Tri Giai Thua cua %d la=%d",n,giai_thua(n));
break;
}
case 2:{ printf("\a\n Day La Chuong Trinh Tinh e Mu x:");
printf("\nNhap so can tinh mu:");scanf("%f",&x);
printf(" Gia tri cua e mu %4.2f la=%4.2f",x,emux(x));
break;
}
case 3:{ printf("\a\nDay La Chuong Trinh Tinh To Hop:");
printf("\nNhap cac thong so de tinh to hop:");
printf("\nNhap n=");scanf("%d",&n);
printf("Nhap m=");scanf("%d",&m);
Trang 3if(n>m) printf("KHONG TON TAI TO HOP"); else
printf("To hop chap %d cua %d phan tu la:%4.2f",n,m,to_hop(m,n)); break;
}
case 4:{printf("\a\n Tinh Gia Tri Cua Da Thuc:");
printf("\nNhap gia tri bac cua da thuc can tinh n=");scanf("%d",&n); printf("\nNhap gia tri tai diem can tinh gia tri x=");scanf("%f",&x); nhap(n);
printf("Gia tri cua ham tai diem %4.3f la=%4.3f:",x,tinh_gia_fx(x,n)); break;
}
case 5:{printf("\n Nhap tong so quan sat duoc:");scanf("%d",&n);
datafile(n);
break;
}
case 6:{printf("\nDAY LA BAI TAP SO 4");
tinh_toan();
break;
}
}
while(!kbhit());
}
int giai_thua(int a)
{
if(a==0)return 1;
else
{
a=a*giai_thua(a-1);
return(a);
}
}
float emux(float x)
{
float tg;
int n;
tg=1;
n=1;
while(fabs((pow(x,n))/(giai_thua(n)))>0.001)
{
n=n+1;
tg=tg+(pow(x,n))/(giai_thua(n));
}
return (tg);
}
float to_hop(int m1,int n1)
{
float tg=0;
if (m1<n1)exit(0);
else
{
tg=tg+float(giai_thua(m1)/(giai_thua(n1)*giai_thua(m1-n1)));
}
return(tg);
}
float tinh_gia_fx(float x,int n1)
Trang 4{
int i;
float tg=0;
for (i=0;i<=n1;i++)
{
tg=tg+a[i]*pow(x,i);
}
return(tg);
}
void nhap(int n1)
{
int i;
for (i=0;i<=n1;i++)
{
printf("Nhap he so thu a[%d] cua da thuc: ",i);scanf("%f",&a[i]); while(getchar()!='\n');
}
}
void datafile(int n) //Ham tao file du lieu quan sat duoc//
{
int i;
pt=fopen("quansat.dat","wb");
for(i=1;i<=n;i++)
{
printf("\nNhap so quan sat duoc thu %d:",i);scanf("%f",&a[i]); fwrite(&a[i],sizeof(float),1,pt);
}
fclose(pt);
}
void tinh_toan(void)
{
float s=0,d=0,so=0,a[100];
int i=0;
pt=fopen("quansat.dat","rb");
while(fread(&a[i],sizeof(float),1,pt),!feof(pt))
{
so=so+1;
s=s+(a[i++]);
}
printf("\nso lieu cua cac quan sat:");
for(i=0;i<=so;i++)
{
printf("\n%-4.2f",a[i]);
}
for(i=0;i<=so;i++)
{
d=d+pow(a[i]-s/so,2);
}
printf("\nGia tri cua trung s=%4.1f",s/so);
printf("\nDo lech chuan d=%4.1f",sqrt(d/so));
fclose(pt);
}