Hướng dẫn Soạn Tin học 11 Kết nối tri thức Bài 20: Thực hành bài toán tìm kiếm (trang 94, 98) ngắn gọn, hay nhất theo chương trình Sách mới.
Bài 20: Thực hành bài toán tìm kiếm
* Gợi ý:
#include <iostream>
#include <string.h>
#include <iomanip>
using namespace std;
struct sv
{
char hoten[25];
char malop[6];
float diemTN;
float diemTL;
float tong;
};
void nhap (sv a[], int n)
{
sv x;
int i;
for (i = 0; i < n; i++)
{
cout << "Nhap Thong Tin Cho Sinh Vien: " << i+1 << endl;
cout << "Ho Ten: ";
cin.ignore();
cin.getline(x.hoten, 25);
cout << "Ma Lop: ";
cin >> x.malop;
cout << "Diem Trac Nghiem: ";
cin >> x.diemTN;
cout << "Diem Tu Luan: ";
cin >> x.diemTL;
a[i] = x;
cout << endl;
}
}
void xuat (sv a[], int n)
{
int i;
float tong;
for (i = 0; i < n; i++)
{
cout << "Sinh Vien: " << i+1 << endl;
cout << "Ho Ten: " << a[i].hoten << endl;
cout << "Ma Lop: " << a[i].malop << endl;
cout << "Diem Trac Nghiem: " << a[i].diemTN << endl;
cout << "Diem Tu Luan: " << a[i].diemTL << endl;
tong = (a[i].diemTN * 0.3) + (a[i].diemTL * 0.7);
cout << "Tong Diem: " << setprecision(3) << tong << endl << endl;
}
}
void sxep(sv a[], int n)
{
int i, j;
sv trunggian;
cout << "Sap Xep Theo Chieu Tang Dan Tong Diem" << endl;
for (i = 0; i < n; i++)
{
for (j = i+1; j < n; j++)
{
if (a[i].tong > a[j].tong)
{
trunggian = a[i];
a[i] = a[j];
a[j] = trunggian;
}
}
}
for (i = 0; i < n; i++)
{
cout << "Ho Ten: " << a[i].hoten << endl;
cout << "Tong Diem: " << a[i].tong << endl;
}
}
int main()
{
sv TDC[10];
int n;
cout << "Nhap So Sinh Vien: ";
cin >> n;
nhap(TDC, n);
cout << endl;
xuat(TDC, n);
cout << endl;
sxep(TDC, n);
system("pause");
return 0;
}
Sơn 5,6
Huyền 7,4
Nam 7,8
Hùng 8,4
Hương 8,9
Hà 9,5
Trả lời:
#include<stdio.h>
#include<string.h>
//khai bao mot cau truc sinh vien
struct SinhVien{
int MaSV;
char TenSV[50];
char Lop[50];
float Dtoan;
float Dvan;
float Danh;
};
void Nhap(SinhVien sv[], int n)//ham nhap sinh vien
{
for(int i=0; i<n ; i++)//vong lap for duyet sinh vien trong mang tu 0 den n-1
{
//nhap du lieu vao mang
printf("Nhap sinh vien thu %d",i);
printf("\nNhap ma sinh vien:");
scanf("%d", &sv[i].MaSV);
printf("\nNhap ten sinh vien:");
fflush(stdin);
gets(sv[i].TenSV);
printf("\nNhap lop:");
gets(sv[i].Lop);
fflush(stdin);
printf("\nNhap diem toan:");
scanf("%f", &sv[i].Dtoan);
printf("\nNhap diem van:");
scanf("%f", &sv[i].Dvan);
printf("\nNhap diem tieng anh:");
scanf("%f", &sv[i].Danh);
}
}
void Xuat(SinhVien sv[], int n)//ham xuat sinh vien
{
printf("MaSV \t TenSV \t Lop \t Toan \t Van \t Anh \t DTB\n");
for(int i=0; i<n ; i++)//vong lap for duyet sinh vien trong mang 0 den n-1
{
//hien thi cac sinh vien trong mang
printf("%d \t %s \t %s \t %0.2f \t %0.2f \t %0.2f \t %0.2f\n", sv[i].MaSV, sv[i].TenSV, sv[i].Lop, sv[i].Dtoan , sv[i].Dvan , sv[i].Danh, (sv[i].Dtoan + sv[i].Dvan + sv[i].Danh)/3);
}
}
void Sapxep(SinhVien sv[], int n)// ham sap xep
{
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(strcmp(sv[i].TenSV,sv[j].TenSV)>0)//so sanh hai ten sinh vien
{
SinhVien k=sv[i];
sv[i]=sv[j];
sv[j]=k;
}
}
}
}
int main()
{
SinhVien sv[100];// khai bao mang sinh vien co 100 o nho
int n;//khai bao so nguyen n la sinh vien
//Nhap du lieu cua n
do{
printf("Nhap so sinh vien:");
scanf("%d", &n);
if(n<1 || n>100)
{
printf("Nhap lai:");
}
}while(n<1 || n>100);//dieu kien neu n<1 hoac n>100 yeu cau nhap lai
Nhap(sv, n);//goi ham nhap mang
printf("\nDanh sach cac sinh vien la:\n");
Xuat(sv,n);// goi ham xuat mang
printf("\nDanh sau khi sap xep la:\n");
Sapxep(sv,n);// goi sap xep
Xuat(sv,n);
}
>>> Xem toàn bộ: Soạn Tin 11 Kết nối tri thức
-------------------------------------
Trên đây Toploigiai đã cùng các bạn Soạn Tin học 11 Kết nối tri thức Bài 20: Thực hành bài toán tìm kiếm trong bộ SGK Kết nối tri thức theo chương trình sách mới. Chúng tôi hi vọng các bạn đã có kiến thức hữu ích khi đọc bài viết này. Click vào trang chủ Toploigiai để tham khảo và chuẩn bị bài cho năm học mới nhé. Chúc các bạn học tốt!