1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài tập lớn Tin học đại cương pptx

12 2,3K 4

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 12
Dung lượng 205 KB

Nội dung

I.1.b Output: Thông tin về mỗi sinh viên gồm: họ tên, ngày tháng năm sinh và điểm thi học kỳ 3 môn Toán, Lý, Hóa, điểm trung bình, xếp loại của học sinh đó và danh sách tất cả sinh viên

Trang 1

MỤC LỤC

MỤC LỤC 1

BÁO CÁO BÀI TẬP LỚN 2

Phần I: THUẬT TOÁN: 2

I.1 Xác định bài toán: 2

I.2 Ý tưởng: 2

I.3 Sơ đồ khối: 3

Phần II: CHƯƠNG TRÌNH: 4

II.1 Nội dung chương trình: 4

II.2 Ví dụ: 9

Trang 2

BÁO CÁO BÀI TẬP LỚN

I.1 Xác định bài toán:

I.1.a Input:

Danh sách 1 lớp gồm 45 sinh viên gồm: họ tên, ngày tháng năm sinh và điểm thi học kỳ

3 môn Toán, Lý, Hóa

I.1.b Output:

Thông tin về mỗi sinh viên gồm: họ tên, ngày tháng năm sinh và điểm thi học kỳ 3 môn Toán, Lý, Hóa, điểm trung bình, xếp loại của học sinh đó và danh sách tất cả sinh viên trước và sau khi sắp xếp theo điểm trung bình tăng dần

I.2 Ý tưởng:

Do các dữ liệu để lưu trữ thông tin cho mỗi sinh viên như: họ tên, ngày tháng năm sinh

và điểm thi học kỳ 3 môn Toán, Lý, Hóa, điểm trung bình, hay xếp loại của học sinh đó,

có các kiểu khác nhau nhưng liên kết với nhau để chứa dựng thông tin của mỗi sinh viên nên ta dùng kiểu cấu trúc để lưu thông tin cho sinh viên

Do số sinh viên phải luôn lớn hơn hoặc bằng 1 nên nếu nhập vào số sinh viên bé hơn 1

ta sẽ báo sai và cho nhập lại

Do ngày sinh phải nằm trong khoảng [1;31] nên nếu nhập vào ngày sinh nằm ngoài khoảng đó ta sẽ báo sai và cho nhập lại

Do tháng sinh phải nằm trong khoảng [1;12] nên nếu nhập vào tháng sinh nằm ngoài khoảng đó ta sẽ báo sai và cho nhập lại

Do sinh viên nên năm sinh chỉ có thể nằm trong khoảng [1900;2010] nên nếu nhập vào năm sinh nằm ngoài khoảng đó ta sẽ báo sai và cho nhập lại

Do điểm Toán, Lý, Hóa của sinh viên phải luôn lớn hơn hoặc bằng 0 và nhỏ hơn hoặc bằng 10 nên nếu nhập điểm Toán, Lý, Hóa của sinh viên bé hơn 0 hoặc lớn hơn 10 ta sẽ báo sai và cho nhập lại

Lấy điểm trung bình 3 môn cộng lại chia 3 ta được điểm trung bình

Sinh viên được xếp loại dựa vào điểm trung bình theo các tiêu chí sau:

Xuất sắc: 9.0 > điểm trung bình

Giỏi: 8.9 > điểm trung bình > 8.0

Khá: 7.9 > điểm trung bình > 6.5

Trung bình: 6.4 > điểm trung bình > 5.0

Yếu: 4.9 > điểm trung bình > 3.5

Kém: điểm trung bình > 3.4

Dựa vào điểm trung bình và sử dụng thuật toán sắp xếp lựa chọn ta tạo được danh sách sinh viên theo điểm trung bình tăng dần Nhưng nếu số sinh viên nhập vào chỉ là 1 thì ta không cần thực hiện bước này

Trang 3

I.3 Sơ đồ khối:

Begin

Nhập N và sv[1], sv[2], ……….,sv[N]

i = 0

i<N

sv[i].diemtb = (sv[i].toan + sv[i].ly + sv[i].hoa)/3

i = i + 1

i = 0

i<N

sv[i].diemtb >= 9.0 Xuất sắc

sv[i].diemtb >= 8.0 Giỏi sv[i].diemtb >= 6.5 Khá sv[i].diemtb >= 5.0 Trung bình sv[i].diemtb >= 3.5 Yếu Kém i = i +1 i = 0 i<N-1 In ra thông tin về các sinh viên Danh sách sinh viên trước và

j = i +1 sau khi sắp xếp i = i + 1 j < N End

sv[i].diemtb > sv[j].diemtb tam = sv[i].diemtb

sv[i].diemtb = sv[j].diemtb

sv[j].diemtb = tam

j = j +1

Hình 1: Sơ đồ khối của chương trình

Trang 4

Phần II: CHƯƠNG TRÌNH:

II.1 Nội dung chương trình:

#include<stdio.h>

#include<conio.h>

#include<string.h>

typedef struct ngaythang

{

int ngay,thang;

unsigned int nam;

};

typedef struct sinhvien

{

char hoten[40], xeploai[20];

ngaythang ngaysinh;

float toan, ly, hoa, diemtb;

};

void nhap(sinhvien sv[50],int n);

void xuat(sinhvien sv[50],int n);

void trungbinh(sinhvien sv[50],int n);

void xeploai(sinhvien sv[50], int n);

void hoanvi(sinhvien &a, sinhvien &b);

void sapxep(sinhvien sv[50], int n);

main()

{

sinhvien sv[50];

int i,n;

sosinhvien:

printf("\n Nhap vao so sinh vien: ");

scanf("%d",&n);

if (n<=0)

{

printf("\n ===================================");

printf("\n = Nhap SO SINH VIEN sai roi! =");

printf("\n = Nhap lai: =");

printf("\n ===================================\n");

goto sosinhvien;

}

printf("\n **********************************");

printf("\n **********************************\n");

Trang 5

nhap(sv,n);

trungbinh(sv,n);

xeploai(sv,n);

xuat(sv,n);

if (n>1)

{

printf("\n ***************************************\n");

printf("\n Danh sach sinh vien truoc khi sap xep : ");

for (i=0; i<n; i++)

printf("\n %s",sv[i].hoten);

sapxep(sv,n);

}

getch();

}

void nhap(sinhvien sv[50],int n)

{

for(int i=0; i<n; i++)

{

printf("\n Nhap thong tin cho sinh vien thu %d\n ", i+1);

printf("\n Ho va ten sinh vien : ");

fflush(stdin);

gets(sv[i].hoten);

ngaysinh:

printf("\n Nhap ngay sinh (dd mm yyyy): ");

scanf("%d",&sv[i].ngaysinh.ngay);

if ((sv[i].ngaysinh.ngay >31) || (sv[i].ngaysinh.ngay <1)) {

printf("\n ===========================");

printf("\n = Nhap NGAY sai roi! =");

printf("\n = Nhap lai: =");

printf("\n ===========================\n");

goto ngaysinh;

}

scanf("%d",&sv[i].ngaysinh.thang);

if ((sv[i].ngaysinh.thang >12) || (sv[i].ngaysinh.thang <0))

{

printf("\n ============================");

printf("\n = Nhap THANG sai roi! =");

printf("\n = Nhap lai: =");

printf("\n ============================\n");

goto ngaysinh;

}

scanf("%d",&sv[i].ngaysinh.nam);

if ((sv[i].ngaysinh.nam >2010) || (sv[i].ngaysinh.nam <1900))

{

printf("\n ===========================");

Trang 6

printf("\n = Nhap NAM sai roi! =");

printf("\n = Nhap lai: =");

printf("\n ===========================\n");

goto ngaysinh;

}

diemToan:

printf("\n Nhap diem thi Toan [0;10] : ");

scanf("%f",&sv[i].toan);

if ((sv[i].toan >10) || (sv[i].toan <0))

{

printf("\n ================================");

printf("\n = Nhap DIEM TOAN sai roi! =");

printf("\n = Nhap lai: =");

printf("\n ================================\n");

goto diemToan;

}

diemLy:

printf("\n Nhap diem thi Ly [0;10] : ");

scanf("%f",&sv[i].ly);

if ((sv[i].ly >10) || (sv[i].ly <0))

{

printf("\n ================================");

printf("\n = Nhap DIEM LY sai roi! =");

printf("\n = Nhap lai: =");

printf("\n ================================\n");

goto diemLy;

}

diemHoa:

printf("\n Nhap diem thi Hoa [0;10] : ");

scanf("%f",&sv[i].hoa);

if ((sv[i].hoa >10) || (sv[i].hoa <0))

{

printf("\n ================================");

printf("\n = Nhap DIEM HOA sai roi! =");

printf("\n = Nhap lai: =");

printf("\n ================================\n");

goto diemHoa;

}

printf("\n **********************************");

printf("\n **********************************\n");

}

}

void xuat(sinhvien sv[50],int n)

{

printf("\n\n Danh sach sinh vien:\n ");

for(int i=0; i<n; i++)

Trang 7

{

printf("\n Ho va ten sinh vien : %s",sv[i].hoten);

printf("\n Ngay sinh :

%d/%d/%d",sv[i].ngaysinh.ngay,sv[i].ngaysinh.thang,sv[i].ngaysinh.nam);

printf("\n Diem Toan : %3.1f",sv[i].toan);

printf("\n Diem Ly : %3.1f",sv[i].ly);

printf("\n Diem Hoa : %3.1f",sv[i].hoa);

printf("\n Diem Trung binh : %3.1f",sv[i].diemtb);

printf("\n Dat loai : %s",sv[i].xeploai);

printf("\n");

}

}

void trungbinh(sinhvien sv[50],int n)

{

for (int i=0; i<n; i++)

sv[i].diemtb = (sv[i].toan + sv[i].ly + sv[i].hoa)/3;

}

void xeploai(sinhvien sv[50], int n)

{

for (int i=0; i<n; i++)

{

if (sv[i].diemtb >= 9.0)

strcpy(sv[i].xeploai,"XUAT SAC");

else

if (sv[i].diemtb >= 8.0)

strcpy(sv[i].xeploai,"GIOI");

else

if (sv[i].diemtb >= 6.5)

strcpy(sv[i].xeploai,"KHA");

else

if (sv[i].diemtb >=5.0)

strcpy(sv[i].xeploai,"TRUNG BINH");

else

if (sv[i].diemtb >=3.5)

strcpy(sv[i].xeploai,"YEU");

else

strcpy(sv[i].xeploai,"KEM");

}

}

void hoanvi(sinhvien &a, sinhvien &b)

{

sinhvien tam;

tam = a;

Trang 8

a = b;

b = tam;

}

void sapxep(sinhvien sv[50], int n)

{

int i,j;

for(i=0; i<n-1;i++)

for(j=i+1; j<n;j++)

if (sv[i].diemtb > sv[j].diemtb)

hoanvi(sv[i], sv[j]);

printf("\n\n Danh sach sinh vien sau khi sap xep : ");

for (i=0; i<n; i++)

printf("\n %s",sv[i].hoten);

}

Trang 9

II.2 Ví dụ:

II.2.a Nhập vào đúng:

Hình 2: Dữ liệu nhập vào.

Trang 10

II.2.b Xuất ra:

Hình 3: Dữ liệu xuất ra.

Trang 11

II.2.c Báo lỗi:

Hình 4: Lỗi nhập số sinh viên sai.

Hình 5: Lỗi nhập ngày, tháng, năm sinh sai.

Trang 12

Hình 6: Lỗi nhập điểm sai.

II.2.d Không thực hiện bước sắp xếp:

Hình 7: Không thực hiện sắp xếp nếu số sinh viên nhập vào là 1.

Ngày đăng: 10/07/2014, 12:21

HÌNH ẢNH LIÊN QUAN

Hình 1: Sơ đồ khối của chương trình. - Bài tập lớn Tin học đại cương pptx
Hình 1 Sơ đồ khối của chương trình (Trang 3)
Hình 2: Dữ liệu nhập vào. - Bài tập lớn Tin học đại cương pptx
Hình 2 Dữ liệu nhập vào (Trang 9)
Hình 3: Dữ liệu xuất ra. - Bài tập lớn Tin học đại cương pptx
Hình 3 Dữ liệu xuất ra (Trang 10)
Hình 4: Lỗi nhập số sinh viên sai. - Bài tập lớn Tin học đại cương pptx
Hình 4 Lỗi nhập số sinh viên sai (Trang 11)
Hình 6: Lỗi nhập điểm sai. - Bài tập lớn Tin học đại cương pptx
Hình 6 Lỗi nhập điểm sai (Trang 12)
Hình 7: Không thực hiện sắp xếp nếu số sinh viên nhập vào là 1. - Bài tập lớn Tin học đại cương pptx
Hình 7 Không thực hiện sắp xếp nếu số sinh viên nhập vào là 1 (Trang 12)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w