Các ví dụ minh hoạ

Một phần của tài liệu Bài Giảng Kỹ Thuật Lập Trình (Trang 115)

4. KIỂU CẤU TRÖC

4.4. Các ví dụ minh hoạ

Dưới đây chúng ta đưa ra một vài ví dụ minh hoạ cho việc sử dụng kiểu cấu trúc.

Ví dụ 1 : Cộng, trừ, nhân chia hai phân số được cho dưới dạng cấu trúc. #include <iostream.h> #include <conio.h> struct Phanso { int tu ; int mau ; } a, b, c ; void main() { clrscr();

cout << "Nhập phân số a:" << endl ; cout << "Tử:"; cin >> a.tu;

cout << "Mẫu:"; cin >> a.mau;

cout << "Nhập phân số b:" << endl ; cout << "Tử:"; cin >> b.tu;

c.tu = a.tu*b.mau + a.mau*b.tu; // tính và in a+b c.mau = a.mau*b.mau;

cout << "a + b = " << c.tu << "/" << c.mau; c.tu = a.tu*b.mau - a.mau*b.tu;

c.mau = a.mau*b.mau;

cout << "a - b = " << c.tu << "/" << c.mau; // tính và in a-b c.tu = a.tu*b.tu;

c.mau = a.mau*b.mau;

cout << "a * b = " << c.tu << "/" << c.mau; // tính và in axb c.tu = a.tu*b.mau;

c.mau = a.mau*b.tu;

cout << "a + b = " << c.tu << "/" << c.mau; // tính và in a/b getch();

}

Ví dụ 2 : Nhập mảng K41T. Tính tuổi trung bình của sinh viên nam, nữ. Hiện danh

sách của sinh viên có điểm thi cao nhất. #include <iostream.h> #include <conio.h> void main() { struct Ngaythang { int ng ; int th ; int nam ; }; struct Sinhvien { char hoten[25] ; Ngaythang ns; int gt;

float diem ; } x, K41T[60]; int i, n;

// nhập dữ liệu

cout << "Cho biết số sinh viên: "; cin >> n; for (i=0; i<n; i++)

{

cout << "Nhap sinh vien thu " << i); cout << "Ho ten: " ; cin.getline(x.hoten);

cout << "Ngày sinh: " ; cin >> x.ns.ng >> x.ns.th >>x.ns.nam ; cout << "Giới tính: " ; cin >> x.gt ;

cout << "Điểm: " ; cin >> x.diem ; cin.ignore();

K41T[i] = x ; }

}

// Tính điểm trung bình float tbnam = 0, tbnu = 0; int sonam = 0, sonu = 0 ; for (i=0; i<n; i++)

if (K41T[i].gt == 1) { sonam++ ; tbnam += K41T[1].diem ; } else { sonu++ ; tbnu += K41T[1].diem ; }

cout << "Điểm trung bình của sinh viên nam là " << tbnam/sonam ; cout << "Điểm trung bình của sinh viên nữ là " << tbnu/sonu ; float diemmax = 0;

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

if (diemmax < K41T[i].diem) diemmax = K41T[i].diem ; // In danh sách sinh viên có điểm cao nhất

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

if (K41T[i].diem < diemmax) continue ;// In danh sách x = K41T[i] ;

cout << x.hoten << '\t' ;

cout << x.ns.ng << "/" << x.ns.th << "/" << x.ns.nam << '\t' ; cout << (x.gt == 1) ? "Nam": "Nữ" << '\t' ;

cout << x.diem << endl; }

}

Ví dụ 3 : Nhập, hiển thị danh sách n sinh viên, n<100. Tìm kiếm sinh viên có điểm trung bình lớn nhất. Biết một sinh viên có các thông tin : họ tên, điểm môn 1, môn 2, môn 3, điểm trung bình.

#include<iostream.h> #include<string.h> #include<stdio.h> typedef struct{ char hten[30];

int m1, m2, m3;//diem mon 1, mon 2, mon 3 float dtb;

}Sinh_vien;

void nhap(Sinh_vien a[100], int &n) {

int i;

cout<<"Nhap so sv trong danh sach: "; cin>>n; for(i=0; i<n;i++) { cout<<"Nhap ho ten: "; fflush(stdin); gets(a[i].hten);

cin>>a[i].m1>>a[i].m2>>a[i].m3;

a[i].dtb=(float)(a[i].m1+a[i].m2+a[i].m3)/3; }

}

void hthi(Sinh_vien a[100], int n) {

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

cout<<"\nHo ten: "<<a[i].hten <<" Diem mon 1: "<<a[i].m1 <<" Diem mon 2: "<<a[i].m2 <<" Diem mon 3: "<<a[i].m3 <<" Diem TB: "<<a[i].dtb<<endl; }

}

int max(Sinh_vien a[100], int n) { int i; float m=a[0].dtb; int vt=0; for(i=1;i<n;i++) if(m<a[i].dtb) { m=a[i].dtb; vt=i; } return vt; } void main() {

Sinh_vien a[100]; int n;

nhap(a,n);

cout<<"\nDanh sach sv ban dau\n"; hthi(a,n);

cout<<"\nSinh vien co diem trung binh cao nhat la: "<<max(a,n); }

Một phần của tài liệu Bài Giảng Kỹ Thuật Lập Trình (Trang 115)