Thuật toán trong C#, Tổng hơp các thuật toán bằng ví dụ
Kết quả của ví dụ sẽ được in đậm trong dấu này
QUOTE
Vidu
và code sẽ có ở đây
CODE
code
Bài mở đầu sẽ gồm các bài toán làm việc với các con số :
Phấn I : Làm việc với số
1.1>Chuyển đổi một số từ cơ số khác sang cơ số 10
QUOTE
base2 sang co so 10 la : 3
base8 sang co so 10 la : 15
base10 sang co so 10 la : 110
base16 sang co so 10 la : 4607
CODE
using System;
class TestNumber
{
public static void Main()
{
string base2="11";
string base8="17";
string base10="110";
string base16="11FF";
//Cac ham chuyen doi
Console.WriteLine("base2 sang co so 10 la : "+Convert.ToInt32(base2,2));
Console.WriteLine("base8 sang co so 10 la : "+Convert.ToInt32(base8,8));
Console.WriteLine("base10 sang co so 10 la :
"+Convert.ToInt32(base10,10));
Console.WriteLine("base16 sang co so 10 la :
"+Convert.ToInt32(base16,16));
//Dung man hinh
Console.ReadLine();
}
}
1.2 Xác định 1 chuỗi có số hợp lệ hay không ?
QUOTE
Nhap vao 1 chuoi bat ki:
2410
Chuoi la 1 so nguyen
QUOTE
Nhap vao 1 chuoi bat ki:
PhuongDiep2410
Chuoi khong phai la 1 so nguyen
CODE
using System;
class Numeric
{
//Phuong thuc xem thu co so khong la day
public static bool isNumberic(string str)
{
try
{
str = str.Trim();
int foo = int.Parse(str);
return(true);
}
catch(FormatException)
{
return(false);
}
}
}
class TestNumber
{
public static void Main()
{
Console.WriteLine("Nhap vao 1 chuoi bat ki: ");
string input;
input = Console.ReadLine();
//Su dung phuong thuc da viet
if(Numeric.isNumberic(input)==true)
{
Console.WriteLine("Chuoi la 1 so nguyen");
}
else
{
Console.WriteLine("Chuoi khong phai la 1 so nguyen");
}
Console.ReadLine();
}
}
Chú ý:
Nếu bạn muốn xem 1 chuỗi có số dấu chấm động không thì bạn có thể thế dòng code sau
CODE
int foo = int.Parse(str);
thành
CODE
int foo = float.Parse(str);
1.3 Tìm số lớn nhất trong các số nhập vào từ bàn phím
QUOTE
Nhap vao so luong cac so ma ban se so sanh :
6
Ban hay nhap vao so thu 1 :
11.1
Ban hay nhap vao so thu 2 :
22.2
Ban hay nhap vao so thu 3 :
33.3
Ban hay nhap vao so thu 4 :
99.9
Ban hay nhap vao so thu 5 :
55.5
Ban hay nhap vao so thu 6 :
66
So lon nhat trong cac so ma ban nhap vao la : 99.9
CODE
using System;
class TimSoLonNhat
{
public static void Main()
{
Console.WriteLine("Nhap vao so luong cac so ma ban se so sanh : ");
String soLuong;
soLuong = Console.ReadLine();
int intSoLuong = Int32.Parse(soLuong);
float []array = new float[intSoLuong];
for(int i=1;i<=intSoLuong;i++)
{
Console.WriteLine("Ban hay nhap vao so thu {0} : ",i);
String soNhapVao;
soNhapVao = Console.ReadLine();
array[i-1] = float.Parse(soNhapVao);
}
float soLonNhat = 0;
for(int i=1;i<intSoLuong;i++)
{
if(soLonNhat < array[i-1])
{
soLonNhat = array[i-1];
}
}
Console.WriteLine("So lon nhat trong cac so ma ban nhap vao la :
{0}",soLonNhat);
Console.ReadLine();
}
}
1.4 Tìm Số Lón nhất trong các số nhập vào từ bàn phím mà không dùng đến mảng
QUOTE
Nhap vao so luong cac so ma ban se so sanh :
5
Ban hay nhap vao so thu 1 :
-22.5
Ban hay nhap vao so thu 2 :
22
Ban hay nhap vao so thu 3 :
19
Ban hay nhap vao so thu 4 :
99
Ban hay nhap vao so thu 5 :
-100
So lon nhat la : 99
CODE
using System;
class TimSoLonNhat
{
public static void Main()
{
Console.WriteLine("Nhap vao so luong cac so ma ban se so sanh : ");
String soLuong;
soLuong = Console.ReadLine();
int intSoLuong = Int32.Parse(soLuong);
float max = float.MinValue;
//Console.WriteLine(max);
for(int i=1;i<=intSoLuong;i++)
{
Console.WriteLine("Ban hay nhap vao so thu {0} : ",i);
string soNhapVao;
soNhapVao = Console.ReadLine();
float floatSoNhapVao = float.Parse(soNhapVao);
if(max < floatSoNhapVao)
{
max = floatSoNhapVao;
}
}
Console.WriteLine("So lon nhat la : {0}",max);
Console.ReadLine();
}
}
1.5 Tìm 1 số trong 1 mảng
QUOTE
Enter a number (between 1 and 7) :
4
4 is the element of arrayToUse found at location 1
CODE
using System;
class Test
{
static void Main()
{
int []arrayToUse = {6,4,7,3,5,1,2};
Console.WriteLine("Enter a number (between 1 and 7) : ");
int noToSearch = Convert.ToInt16(Console.ReadLine());
int indexNo = Array.IndexOf(arrayToUse,noToSearch);
if(indexNo <=6)
{
Console.WriteLine("{0} is the element of arrayToUse found at
location {1} ",
noToSearch,indexNo);
}
else
{
Console.WriteLine("Not the element of arrayToUse");
}
Console.ReadLine();
}
}
Phần II: Chuỗi và kí tự
2.1 Tìm vị trí số lần xuất hiện của một chuỗi trong chuỗi khác :
QUOTE
Found item at position: 4
Found item at position: 12
System.Int32[]
CODE
using System;
using System.Collections;
class TestString
{
public static int[] FindAll(string matchStr, string searchedStr,int
startPos)
{
int foundPos = -1;
int count =0;
ArrayList foundItems = new ArrayList();
do
{
foundPos = searchedStr.IndexOf(matchStr,startPos);
if(foundPos>-1)
{
startPos=foundPos+1;
count++;
foundItems.Add(foundPos);
Console.WriteLine("Found item at position:
"+foundPos.ToString());
}
} while(foundPos >-1 && startPos<searchedStr.Length);
return((int[])foundItems.ToArray(typeof(int)));
}
}
class TestNumber
{
public static void Main()
{
int[] a = TestString.FindAll("Red","BlueRedGreenRed",0);
Console.WriteLine(a);
Console.ReadLine();
}
}
2.2 Trừ ngày tháng
QUOTE
Bai Nay Se tru ngay thang dau tien ma ban nhap cho ngay
thang nhap lan 2 cho nen nhap lan 1 nho hon ra so am rang chiu:
Ket qua :
Nhap ngay1:
16
Nhap thang1:
05
Nhap nam1:
1989
Nhap ngay2:
19
Nhap thang2:
12
Nhap nam2:
1988
16/05/1989 - 19/12/1988 = 147
CODE
using System;
namespace Test
{
class ChuyenDoi
{
public int NamNhuan(int ngay,int thang,int nam)
{
int tongSoNgay;
int n1=ngay;
int n2=0;
int n3;
int soNamNhuan;
soNamNhuan = nam/4;
n3 = (nam*365)+soNamNhuan;
switch(thang)
{
case 1:
n2=31;
break;
case 2:
n2=31+29;
break;
case 3:
n2=31+29+31;
break;
case 4:
n2=31+29+31+30;
break;
case 5:
n2=31+29+31+30+31;
break;
case 6:
n2=31+29+31+30+31+30;
break;
case 7:
n2=31+29+31+30+31+30+31;
break;
case 8:
n2=31+29+31+30+31+30+31+31;
break;
case 9:
n2=31+29+31+30+31+30+31+31+30;
break;
case 10:
n2=31+29+31+30+31+30+31+31+30+31;
break;
case 11:
n2=31+29+31+30+31+30+31+31+30+31+30;
break;
case 12:
n2=31+29+31+30+31+30+31+31+30+31+30+31;
break;
}
return tongSoNgay=n1+n2+n3;
/*Console.WriteLine(tongSoNgay);
Console.ReadLine();*/
}
public int NamThuong(int ngay,int thang,int nam)
{
int tongSoNgay;
int n1=ngay;
int n2=0;
int n3;
int soNamNhuan;
soNamNhuan = nam/4;
n3 = (nam*365)+soNamNhuan;
switch(thang)
{
case 1:
n2=31;
break;
case 2:
n2=31+28;
break;
case 3:
n2=31+28+31;
break;
case 4:
n2=31+28+31+30;
break;
case 5:
n2=31+28+31+30+31;
break;
case 6:
n2=31+28+31+30+31+30;
break;
case 7:
n2=31+28+31+30+31+30+31;
break;
case 8:
n2=31+28+31+30+31+30+31+31;
break;
case 9:
n2=31+28+31+30+31+30+31+31+30;
break;
case 10:
n2=31+28+31+30+31+30+31+31+30+31;
break;
case 11:
n2=31+28+31+30+31+30+31+31+30+31+30;
break;
case 12:
n2=31+28+31+30+31+30+31+31+30+31+30+31;
break;
}
return tongSoNgay=n1+n2+n3;
/*Console.WriteLine(tongSoNgay);
Console.ReadLine();*/
}
}
class Class1
{
static void Main(string[] args)
{
ChuyenDoi obj = new ChuyenDoi();
int s,s1,s2;
Console.WriteLine("Bai Nay Se tru ngay thang dau tien ma ban nhap
cho ngay ");
Console.WriteLine("thang nhap lan 2 cho nen nhap lan 1 nho hon ra so
am rang chiu:");
Console.WriteLine("Nhap ngay1: ");
string sngay1;
sngay1 = Console.ReadLine();
int ngay1 = Int32.Parse(sngay1);
Console.WriteLine("Nhap thang1: ");
string sthang1;
sthang1 = Console.ReadLine();
int thang1 = Int32.Parse(sthang1);
Console.WriteLine("Nhap nam1: ");
string snam1;
snam1 = Console.ReadLine();
int nam1 = Int32.Parse(snam1);
if(nam1%4==0)
{
s1 = obj.NamNhuan(ngay1,thang1,nam1);
}
else
{
s1 = obj.NamThuong(ngay1,thang1,nam1);
}
Console.WriteLine("Nhap ngay2: ");
string sngay2;
sngay2 = Console.ReadLine();
int ngay2 = Int32.Parse(sngay2);
Console.WriteLine("Nhap thang2: ");
string sthang2;
sthang2 = Console.ReadLine();
int thang2 = Int32.Parse(sthang2);
Console.WriteLine("Nhap nam2: ");
string snam2;
snam2 = Console.ReadLine();
int nam2 = Int32.Parse(snam2);
if(nam2%4==0)
{
s2 = obj.NamNhuan(ngay2,thang2,nam2);
}
else
{
s2 = obj.NamThuong(ngay2,thang2,nam2);
}
s=s1-s2;
Console.Write("{0}/{1}/{2} ",ngay1,thang1,nam1);
Console.Write("- {0}/{1}/{2}",ngay2,thang2,nam2);
Console.WriteLine(" = {0}",s);
Console.ReadLine();
}
}
}
1.3 Xử lí kí tự nhập vào từ bàn phím - Mô phỏng nguyên tắc của trụ đèn giao thông 1
cách đơn giản (Ngoài thực tế thì phức tạp hơn)
QUOTE
Nhap vao mot tin hieu: Diep
Tin hieu nhan duoc: Diep
bip bip bip
Nhap vao mot tin hieu: aaaaaa
Tin hieu nhan duoc: aaaaaa
bip bip bip
Nhap vao mot tin hieu: 0
Tin hieu nhan duoc: 0
Tat ca dieu tot!
Nhap vao mot tin hieu: T
Tin hieu nhan duoc: T
Ngung xu ly! Thoat
CODE
using System;
public class TrafficSignal
{
public static int Main()
{
string signal = "0"; // Kh i t o tín hi uở ạ ệ
// b t u chu trình x lý tín hi uắ đầ ử ệ
while ( signal != "X")
{
//nh p tín hi uậ ệ
Console.Write("Nhap vao mot tin hieu: ");
signal = Console.ReadLine();
// xu t tín hi u hi n th iấ ệ ệ ờ
Console.WriteLine("Tin hieu nhan duoc: {0}", signal);
// ph n x lý tín hi uầ ử ệ
if (signal == "T")
{
// Tín hi u thoát c g iệ đượ ở
// l u l i s ki n và thoátư ạ ự ệ
Console.WriteLine("Ngung xu ly! Thoat\n");
break;
}
if ( signal == "0")
{
// Tín hi u nh n c bình th ngệ ậ đượ ườ
// L u l i s ki n và ti pư ạ ự ệ ế
t cụ
Console.WriteLine("Tat ca dieu tot!\n");
continue;
}
// Th c hi n m t s hành ng nào óự ệ ộ ố độ đ
// và ti p t cế ụ
Console.WriteLine(" bip bip bip\n");
}
return 0;
}
}