Vớ dụ 3: Xõy dựng chương trỡnh tớnh tổng của hai số nguyờn bất kỳ

Một phần của tài liệu Bài giảng môn kỹ thuật lập trình C# potx (Trang 97 - 105)

- Sơ đồ cỳ phỏp

Vớ dụ 3: Xõy dựng chương trỡnh tớnh tổng của hai số nguyờn bất kỳ

Vớ dụ 3: Xõy dựng chương trỡnh tớnh tổng của hai số nguyờn bất kỳ

---using System; using System;

using System.Text;

class BaiXau {

static void chuanHoaSo(ref string so1, ref string so2) {

StringBuilder s1=new StringBuilder(so1); StringBuilder s2=new StringBuilder(so2);

if(s1.Length>s2.Length) while(s2.Length<s1.Length) s2.Insert(0,"0"); else if(s2.Length>s1.Length) while(s1.Length<s2.Length) s1.Insert(0,"0"); so1=s1.ToString(); so2=s2.ToString(); }

static string tinhTong(string so1, string so2) {

string s;

int t,a,b,nho=0; int n;

chuanHoaSo(ref so1,ref so2);

StringBuilder kq=new StringBuilder(""); n=so1.Length-1; while(n>=0) { a= so1[n]-48; b= so2[n]-48; t=a+b+nho;

s=t.ToString(); if(s.Length==1) s="0"+s; nho=s[0]-48; kq.Insert(0,s[1]); n=n-1; } if(nho==1) kq.Insert(0,"1"); return kq.ToString(); }

static void Main() {

string so1,so2;

StringBuilder x=new StringBuilder(""); StringBuilder y=new StringBuilder(""); StringBuilder s=new StringBuilder("");

Console.WriteLine("\t\t BAN HAY NHAP VAO HAI SO NGUYEN"); Console.Write(" ");so1=Console.ReadLine(); Console.WriteLine("+"); Console.Write(" ");so2=Console.ReadLine(); x.Append('-',so1.Length>so2.Length?so1.Length:so2.Length); y.Append(' ',Math.Abs(so1.Length-so2.Length));

s.AppendFormat("\t\t{0}\n\n","BAN HAY NHAP VAO HAI SO NGUYEN"); if(so1.Length<so2.Length) s.AppendFormat(" {0}{1}\n",y.ToString(),so1); else s.AppendFormat(" {0}\n",so1); s.AppendFormat("{0}\n","+"); if(so2.Length<so1.Length) s.AppendFormat(" {0}{1}\n",y.ToString(),so2); else s.AppendFormat(" {0}\n",so2);

s.AppendFormat(" {0}\n",x.ToString()); s.AppendFormat(" {0}",tinhTong(so1,so2)); Console.Clear(); Console.WriteLine(s); Console.ReadKey(); } } --- 5.4 Kiểu cấu trỳc

Trong thực tế lập trỡnh, chỳng ta cú thể sẽ cần đến những kiểu dữ liệu phức tạp hơn được tạo thành từ những kiểu dữ liệu đơn giản mà chỳng ta đó biết. Những kiểu dữ liệu này cho ta một khả năng kết hợp một nhúm cỏc biến cựng thể hiện một đối tượng chung. Chẳng hạn để lưu giữ những thụng tin liờn quan đến một đối tượng nhõn viờn, ta cú thể cần thiết đến một biến nào đú cú khả năng lưu trữ được cả tờn, địa chỉ, ngày sinh, lẫn mó số nhõn viờn, lương v.v..Để cú thể xử lý biến này như một phần tử thống nhất, thể hiện thụng tin của một nhõn viờn cụ thể. Ngụn ngữ lập trỡnh C# cho phộp chỳng ta tự xõy dựng những kiểu dữ liệu phức hợp như vậy và sử dụng những kiểu dữ liệu này để khai bỏo cho cỏc biến sử dụng sau đú. Chỳng ta gọi những kiệu dữ liệu như vậy là cỏc cấu trỳc. Trong C# cấu trỳc là kiểu dữ liệu đơn giản do người dựng định nghĩa, kớch thước nhỏ dựng để thay thế cho lớp. Nhưng giữa lớp và cấu trỳc cú những điểm khỏc nhau mà chỳng ta sẽ được nghiờn cứu sau. Điểm khỏc biệt chủ yếu ở đõy là cấu trỳc là một kiểu dữ liệu giỏ trị.

 Khai bỏo cấu trỳc:

struct <TờnCấuTrỳc> { //Cỏc thành phần của cấu trỳc } Vớ dụ: struct HocSinh {

public string hoTen;

public double dt,dl,dh,dtong; }

 Khai bỏo biến cấu trỳc

Vớ dụ:

HocSinh t=new HocSinh(); // Khai bỏo biến cấu trỳc t HocSinh []ds=new HocSinh[10]; // Khai bỏo mảng cấu trỳc ds  Truy nhập cỏc thành phần của cấu trỳc: tờnBiếnCấuTrỳc.tờnThànhphần Vớ dụ:

t.hoTen // Truy nhập vào thành phần hoTen của cấu trỳc t  Vớ dụ ỏp dụng:

Viết chương trỡnh bằng ngụn ngữ C# để giỳp trung tập ngoại ngữ quản lý kỳ thi cuối khoỏ của một phũng thi sử dụng một cấu trỳc tương ứng. Thụng tin thớ sinh cú cấu trỳc như sau:

- Tờn sinh viờn( Tờn sinh viờnlà một xõu ký tự cú độ dài bằng 25) - Điểm viết(Điểm viết của sinh viờn là một số nguyờn >=0 và <=10) - Điểm núi (Điểm núi của sinh viờn là một số nguyờn >=0 và <=10)

Yờu cầu: (adsbygoogle = window.adsbygoogle || []).push({});

a) Nhập thụng tin về họ tờn và điểm của sinh viờn với định dạng sau

Tờn sinh viờn: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Điểm viết :xx

Điểm núi :xx

Chỳ ý: Chương trỡnh phải kiểm tra sự hợp lệ của điểm thi b) In ra bảng điểm của mỗi phũng thi như sau:

Stt Tờn Điểm viết Điểm núi Tổng điểm xx xxxxxxxxxxxxxxx xx xx xx

c)In ra danh sỏch cỏc sinh viờn thi qua( điều kiện để cỏc sinh viờn thi qua là cỏc

mụn thi phỏi >=5)

Stt Tờn Điểm viết Điểm núi Tổng điểm xx xxxxxxxxxxxxxx xx xx xx

d) In ra sinh viờn cú tổng điểm cao nhất. Nếu nhiều thớ sinh cú cựng điểm cao

nhất thỡ in ra tất cả

Stt Tờn Tổng điểm xx xxxxxxxxxxxxxxxxxx xx

e) Sắp xếp cỏc sinh viờn theo thứ tự giảm dần của điểm viết và in ra danh sỏch

mới theo định dạng thứ hai.

---using System; using System;

struct KieuSV

{

public string HoTen; public int Viet,Doc;

}

class CauTruc {

static KieuSV []DSSV; static int SoLuong; static void NhapDSSV() {

Console.Write("So TS can nhap :");

SoLuong=int.Parse(Console.ReadLine()); DSSV=new KieuSV[SoLuong];

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

{

Console.Write("Ho ten thi sinh : "); DSSV[i].HoTen=Console.ReadLine();

do {

Console.Write("Diem viet : ");

DSSV[i].Viet=int.Parse(Console.ReadLine()); } while (DSSV[i].Viet < 1 || DSSV[i].Viet > 10);

do {

Console.Write("Diem doc : "); (adsbygoogle = window.adsbygoogle || []).push({});

DSSV[i].Doc=int.Parse(Console.ReadLine()); } while (DSSV[i].Doc < 1 || DSSV[i].Doc > 10);

} }

static void DSDiem() {

int i;

Console.Write("STT Ho va Ten Viet Noi Tong diem \n");

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

Console.Write("{0}\t{1}\t{2}\t{3}\t{4}", i+1,

DSSV[i].HoTen, DSSV[i].Viet, DSSV[i].Doc, DSSV[i].Viet + DSSV[i].Doc); Console.Write("\n");

} }

/* In danh sach nhung sinh vien co diem dat ( deu >= 5) */ static void DSSVDat()

{

int i;

Console.Write("STT Ho va Ten Viet Noi Tong diem \n");

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

{

if (DSSV[i].Viet >= 5 && DSSV[i].Doc >= 5)

{

Console.Write("{0}\t{1}\t{2}\t{3}\t{4}", i+1,

DSSV[i].HoTen, DSSV[i].Viet, DSSV[i].Doc, DSSV[i].Viet + DSSV[i].Doc); Console.Write("\n");

} }

}

static void TongDiemCaoNhat() {

int MAX, i;

/* Tinh tong diem cao nhat */

MAX = DSSV[0].Viet + DSSV[0].Doc;

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

{

if (DSSV[i].Viet + DSSV[i].Doc > MAX)

MAX = DSSV[i].Viet + DSSV[i].Doc; }

/* In ra danh sach cac ts co diem 2 mon cao nhat (= MAX) */ Console.Write("Ten Viet Noi Tong diem \n"); (adsbygoogle = window.adsbygoogle || []).push({});

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

{

{

Console.Write("{0}\t{1}\t{2}\t{3}", DSSV[i].HoTen, DSSV[i].Viet, DSSV[i].Doc, DSSV[i].Viet + DSSV[i].Doc);

Console.Write("\n"); }

} }

static void SapXep() {

int i, j;

KieuSV TG=new KieuSV();

for (i=0; i < SoLuong - 1; i++) for (j=i+1; j < SoLuong; j++)

if (DSSV[j].Viet > DSSV[i].Viet) { TG = DSSV[i]; DSSV[i] = DSSV[j]; DSSV[j] = TG; } }

static int ChonMenu() {

Console.Write("\n\n\n\t\t\t1. Nhap danh sach sinh vien"); Console.Write("\n\t\t\t2. Hien thi danh sach sinh vien"); Console.Write("\n\t\t\t3. Danh sach sinh vien dat ");

Console.Write("\n\t\t\t4. Cac thi sinh co tong diem cao nhat"); Console.Write("\n\t\t\t5. Sap xep danh sach sinh vien");

Console.Write("\n\t\t\t6. Thoat khoi chuong trinh"); Console.Write("\n\t\t\tBan hay chon mot muc (1->6) : ");

int Tam;

Tam=int.Parse(Console.ReadLine()); return Tam;

}

static void Main() {

do

{

switch (ChonMenu())

{

case 1: NhapDSSV(); break;

case 2: DSDiem(); Console.ReadKey();break; case 3: DSSVDat();Console.ReadKey();break;

case 4: TongDiemCaoNhat(); Console.ReadKey();break; case 5: SapXep(); Console.Write("Da sap xong !");

Console.ReadKey();break;

case 6: Environment.Exit(0);break;

/* Thoat khoi chuong trinh */ } Console.Clear(); } while(true); } } --- 5.5 Tập hợp và danh sỏch liờn kết(phần này thảo luận và tỡm đọc tài liệu)

 Cỏc chủ đề về tập hợp cần thảo luận - ArrayList - Hashtable - Queue - Stack - SorteList - List ... (adsbygoogle = window.adsbygoogle || []).push({});

 Cỏc chủ đề cần thảo luận về danh sỏch liờn kết - Lớp(class)

- Lớp tự trỏ

- Danh sỏch liờn kết đơn, kộp,...

- Cỏc danh sỏch đặc biệt: Stack, Queue,... ...

Chơng 6: Tệp, th mục và I/O

Một phần của tài liệu Bài giảng môn kỹ thuật lập trình C# potx (Trang 97 - 105)