logo

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)

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


1. Chỉnh sửa lại chương trình của Nhiệm vụ 3 để cho phép chương trình có thể tìm kiếm điểm số trên danh sách điểm số được sắp xếp theo thứ tự giảm dần. 

* 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;
}


2. Viết chương trình tra cứu tên theo điểm thi của học sinh trong lớp. Chương trình cho phép người dùng nhập vào khoảng điểm số cần tìm kiếm (ví dụ từ 6 đến 8). Chương trình kiềm tra và thông báo tên của học sinh có điểm số nằm trong khoảng tương ứng. Giải bải toán trong hai trường hợp: điểm được sắp xếp theo thứ tự ngẫu nhiên như trong Nhiệm vụ 1 hoặc điểm được sắp xếp theo thứ tự tăng dần như sau:

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!

icon-date
Xuất bản : 24/02/2023 - Cập nhật : 19/07/2023

Tham khảo các bài học khác