Việc nghiên cứu và lập trình ra các phần mềm, các ứng dụng mới là điều hướng tới của các sinh viên theo học công nghệ thông tin.Bản báo cáo này trình bày kết quả của việc lập trình các b
Trang 1Đề tài thực tập cơ sở – Mã đề 055
TRƯỜNG ĐẠI HỌC VINH
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO
ĐỀ TÀI THỰC TẬP CƠ SỞ
Giáo viên HD: Hoàng Hữu Việt
Nghệ An, 2015
Trang 2LỜI MỞ ĐẦU
Ngày nay, công nghệ thông tin ngày càng phát triển và tỏ rõ tầm quan trọng trong tất cả các lĩnh vực, có thể nói công nghệ thông tin đã trở thành thước đo để đánh giá sự phát triển của xã hội hiện đại – nơi mà con người đang dần thoát khỏi cách làm việc thủ công, thô sơ và dần tiến đến tin học hóa trong tất cả các lĩnh vực để công việc
có hiệu quả hơn, tiết kiệm thời gian và nhân lực
Việc nghiên cứu và lập trình ra các phần mềm, các ứng dụng mới là điều hướng tới của các sinh viên theo học công nghệ thông tin.Bản báo cáo này trình bày kết quả của việc lập trình các bài toán liên quan đến tệp và mảng trong đề tài thực tập cơ sở Trong quá trình thực hiện em nhận được sự giúp đỡ nhiệt tình từ các giảng viên trong khoa công nghệ thông tin
Nhân dịp này em xin gửi lời cảm ơn đến khoa công nghệ thông tin đã tạo cơ hội giúp em được tham gia học hỏi, rèn luyện các kỹ năng cần thiết cho đợt thực tập cuối
khóa Đặc biệt em xin gửi lời cảm ơn đến giảng viên Hoàng Hữu Việt đã quan tâm
góp ý cho bài làm thực tập cơ sở và sẵn sàng trả lời những thắc mắc khi cần thiết giúp
em hoàn thành tốt bài làm của mình
Mặc dù đã có nhiều cố gắng nhưng do kiến thức còn hạn chế cùng với kinh nghiệm chưa có nên không tránh khỏi thiếu sót.Vì vậy em rất mong nhận được những
ý kiến đóng góp bổ sung của thầy cô giáo và các bạn để bài làm thực tập cơ sở của em được hoàn thiện hơn
Sinh viên thực hiện
Page 2
Trang 3Đề tài thực tập cơ sở – Mã đề 055
MỤC LỤC
Contents
Trang 4Đúng Đọc dữ liệu từ tệp
Tệp chưa kết thúc
Bắt đầu
Kết thúc
Dữ liệu là số
Sai
Đúng
NỘI DUNG Bài 1:
1.1 Xác định bài toán
Viết chương trình đọc các phần tử của một tệp văn bản vào một mảng một chiều a, sau đó chèn thêm một phần tử x vào mảng a tại vị trí n
1.2 Thuật Toán
1.2.1 Thuật Toán Kiểm Tra Dữ Liệu
1.2.1.1 Ý t ưở ng thu t toán ậ
Tạo tệp abc.txt Đưa dữ liệu vào biến để kiểm tra nếu đúng trả về false và kết thúc, nếu sai trả về true rồi kết thúc
1.2.1.1 Mô tả thuật toán:
Bước 1: Đọc dữ liệu từ tệp abc.txt để kiểm tra.Trong khi chưa kết thúc tệp: đưa dữ liệu vào biến, chuyển sang bước 2.Ngược lại, chuyển sang bước 3
Bước 2: Kiểm tra dữ liệu:
Nếu dữ liệu đọc vào đúng là chuyển sang bước 3 Nếu sai trả về true Chuyển về bước 4
Bước 3: Trả về false, chuyển sang bước 4
Bước 4: Kết thúc
1.2.1.2 Sơ đồ khối mô tả thuật toán
Page 4
Trang 5Đề tài thực tập cơ sở – Mã đề 055
1.2.2 Thuật Toán Đọc Từ Tệp:
1.2.2.1 Mô tả thuật toán:
Bước 1: Đọc các dữ liệu từ tệp abc.txt
Bước 2: Kiểm tra dữ liệu:Nếu đọc dữ liệu thành công chuyển sang bước 3 Ngược lại chuyển sang bước 4
Bước 3: Đưa dữ liệu ra Quay lại bước 1
Bước 4: Kết thúc
1.2.2.2.Sơ đồ khối mô tả thuật toán:
Bắt đầu
i=0
Sai
Kết thúc
Đưa dữ liệu ra để tính toán
Đúng Tệp chưa kết thúc
Trang 61.2.3 Thuật toán chèn phần tử vào mảng:
1.2.3.1 Mô tả thuật toán:
Bước 1: Đọc các phần tử từ tệp đưa vào mảng a ( n phần tử) Nếu tệp không tồn tại
thì chuyển qua Bước 5 Ngược lại chuyển qua bước 2
Bước 2: Nhập phần tử (x) cần chèn vào mảng
Bước 3: Chọn vị trí n để chèn phần tử (x).
Bước 4: Hiển thị mảng a sau khi chèn phần tử (x).
Bước 5: Kết thúc.
-Đoạn chương trình:
void themPhanTu(int x,int i)
{
int j;
for(j=sophantu;j>=i;j )
{
m[j]=m[j-1];
m[j]=x;
}
Page 6
Trang 7Đề tài thực tập cơ sở – Mã đề 055
1.2.3.2 Sơ đồ khối mô tả thuật toán:
Trang 8Bắt đầu int a[], b[],n,m,i=0;
i<n
int j=0
Sai Đúng
Sai
Sai Đúng
Đúng
Sai
Page 8
Trang 9Kết thúc
int j=0
j==m a[i]==b[j] j++
i++;
b[m]=a[i]; m++;
Return m;
j<m
Đúng
Đề tài thực tập cơ sở – Mã đề 055
1.3 Chương trình:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
int m[20],sophantu;
void themPhanTu(int x,int i)
{
int j;
for(j=sophantu;j>=i;j )
{
m[j]=m[j-1];
}
m[j]=x;
}
void inMang()
{
int i=0;
while(m[i]!= NULL)
{
cout<<m[i]<< " ";
i++;
}
cout<<"\n";
}
void docFile()
{
int i=0;
FILE *f;
f=fopen("abc.txt","r");
if(f==NULL)
{
cout<<"\nFILE khong ton tai!";
getch();
exit(1);
}
else
Trang 10while(!feof(f))
{
fscanf(f,"%d",&m[i]);
cout<<" "<<m[i];
i++;
sophantu=i;
}
}
}
main()
{
int x,n;
docFile();
cout<<"\nMang ban dau la: \n";
inMang();
cout<<"\Nhap gia tri muon them vao mang : ";
cin>>x;
cout<<"nhan vi tri can chen: ";
cin>>n;
themPhanTu(x,n);
cout<< "\nMang sau khi them vao la: \n";
inMang();
system("Pause");
getch();
return 0;
}
1.4 Dữ liệu test và kết quả tương ứng
1.4.1 Bộ Test 1.
Dữ liệu test:
Page 10
Trang 11Đề tài thực tập cơ sở – Mã đề 055
Kết quả test:
1.4.2 Bộ Test 2.
Dữ liệu test:
Kết quả test:
Trang 121.4.3 Bộ Test 3.
Dữ liệu test:
Kết quả test:
1.4.4 Một Số Lỗi
Ví dụ :
Page 12
Trang 13Đề tài thực tập cơ sở – Mã đề 055
Kết quả:
1.6.Kết luận:
-Chương trình chạy nhanh, kết quả đúng yêu cầu
-Chương trình báo lỗi trong trường hợp dữ liệu vào:
+ Sử dụng dấu cách trống hoặc dấu xuống dòng nhưng không nhập số + Có chứa kí hiệu đặc biệt, chữ cái
+ File đầu vào không tồn tại
1.7 Thông tin ngôn ngữ lập trình
- Chương trình được lập trình bằng ngôn ngữ C++ với phần mềm Dev C++
Trang 14Bài 2:
1 Xác định bài toán.
Bài toán liên quan đến dãy Fibonaci
1)Tìm các số Fibonaci càng nhiều càng tốt
2)Bài toán sinh thỏ; Bài toán chuyển bi; bài toán leo cầu thang
2 Tìm hi u dãy Fibonaci ể
2.1 Khái ni m ệ
Dãy Fibonaci là dãy vô hạn các số tự nhiên bắt đầu băng hai phần tử 0 và 1, các phần
tử sau đó được thiết lập theo quy tắc mỗi phần tử luôn băng hai phần tử trước nó Công thức truy hồi của dãy Fibonaci là:
Các ph n t đ u tiên c a dãy ầ ử ầ ủ
Page 14
Trang 15Đề tài thực tập cơ sở – Mã đề 055
2.2 Các bài toán điển hình
- Bài toán sinh thỏ, bài toán leo cầu thang
- Bài toán tháp hà nội, bài toán “ cụ tổ” của một con ong đực
- Bài toán chuyển bi, …
3 Tìm các s Fibonaci càng nhi u càng t t ố ề ố
3.1 Ch ươ ng trình
#include<iostream>
#include<conio.h>
#include<math.h>
using namespace std;
int Fibonaci(int n)
{
int f1=0,f2=1,fi;
fi=f2;
for(int i = 1;i <= n ;i ++)
{
cout<<fi<<" ";
fi=f1+f2;
f1=f2;
f2=fi;
}
return fi;
}
main()
{
int n;
cout<<"Nhap vao mot so nguyen duong: ";
cin>>n;
cout<<"Vay "<<n<< " so Fibonaci dau tien la: ";
Fibonaci(n);
getch();
}
Trang 163.2 D li u test và k t qu t ữ ệ ế ả ươ ng ng ứ
3.2.1 B test 1 ộ
3.2.2 B test 2 ộ
Page 16
Trang 17Đề tài thực tập cơ sở – Mã đề 055
4 Bài toán sinh thỏ
4.1 Xác đ nh bài toán ị
Bài toán đặt ra như sau:
1) Các con thỏ không bao giờ chết
2) Hai tháng sau khi ra đời, mỗi cặp thỏ mới sẽ sinh ra một cặp thỏ con (một đực, một cái)
3) Khi đã sinh con rồi thì cứ mỗi tháng tiếp theo chúng lại sinh được một cặp con mới Giả sử từ đầu tháng 1 có một cặp mới ra đời thì đến giữa tháng thứ n sẽ có bao nhiêu cặp
4.2 Ch ươ ng trình
#include <conio.h>
#include <iostream>
#include <stdio.h>
using namespace std;
int F(int n) {
if(n==1 || n==2)
return 1;
else
return F(n-1) + F(n-2);
}
main()
{
int n;
Trang 18cout<<"Nhap so thang: ";
cin>>n;
cout<<"\nSo cap tho sau "<<n<<" thang la: "
<<F(n);
getch();
}
4.3 D li u test và k t qu test ữ ệ ế ả
4.3.1 B test 1 ộ
4.3.2 B test 2 ộ
Page 18
Trang 19Đề tài thực tập cơ sở – Mã đề 055
4.3.3 B test 3 ộ