[ C++ ] Lớp (class) và đối tượng (object) trong C++

* Lớp (class) và đối tượng (object) trong C++

+ Lớp trong C++ gồm 2 thành phần
- Các thuộc tính - attribute (tương tự như các biến trong hàm)
- Các phương thức - method (tương tự như các hàm)

Khai báo lớp:

class  myClass   // tên lớp
   {
        public:
                (danh sách các thành viên [bao gồm cả thuộc tính và phương thức]  có đặc tính công cộng)
        private:
                (danh sách các thành viên [bao gồm cả thuộc tính và phương thức] có đặc tính riêng tư)
        protected:
                (danh sách các thành viên [bao gồm cả thuộc tính và phương thức] có đặc tính bảo tồn)
   };  // dấu chấm phẩy chấm dứt câu lệnh

+ Việc sử dụng lớp trong một chương trình C++ có hai phần chính là phần định nghĩa lớp và phần khai báo và truy cập các thành viên của một đối tượng có kiểu là một lớp cho trước.

Ví dụ: Xây dựng lớp A để tính tổng hai số.


#include<iostream.h>
#include<conio.h>

// class tinh tong
class A{
 public:
  int x,y;
 public:
 // phuong thuc khoi tao
 A(int a, int b){
  x=a; y=b;
 }
 // phuong thuc Nhap()
  void Nhap(){
cout<<"\n a="; cin>>x;
cout<<"\n b=";cin>>y;
  }
 // phuong thuc tinh Tong()
  int Tong(int x, int y);
}; 
int A::Tong(int x, int y){
 return (x+y);
}

// ham chinh (không thể thiếu trong mỗi chương trình)
void main(){
clrscr();
cout<<"\n Vi du ve xay dung class";
A t=A(3,4);
//t.Nhap();
cout<<"\n Ket qua: "<<t.Tong(t.x,t.y);
getch();
}
// Code được viết trên môi trường TC3.0 hoặc TC4.5

[Tải Code Chương trình tại đây (Lưu ý: Sau 5s, click Bỏ qua quảng cáo - Skin Ad)]

[ C# ] Ví dụ về Kế thừa và Đa hình trong C#

[ C# ] Ví dụ về Kế thừa và Đa hình trong C#

/*
Ví dụ về kế thừa và đa hình trong C#
- Xây dựng lớp SV
  + thuộc tính: họ tên, năm sinh
  + phương thức: Khởi tạo, nhập thông tin
- Xây dựng lớp SVCD kế thừa lớp SV
  Bổ sung:
  + thuộc tính: điểm năm 1, điểm năm 2, điểm năm 3
  + phương thức: tính điểm tổng kết, in thông tin
- Xây dựng lớp SVDH kế thừa lớp SVCD
  Bổ sung:
  + thuộc tính: điểm năm 4

Yêu cầu:
- Khởi tạo mỗi lớp 1 đối tượng, thực hiện nhập thông tin, in thông tin (bao gồm cả điểm tổng kết và điểm chữ - điểm chữ tính theo quy chế đào tạo tín chỉ).

*/

// CODE C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Kethu_SV210313
{
    // class SV
    public class SV
    {
        public string ht;
        public int ns;
        // khoi tao
        public SV(string ht, int ns)
        {
            this.ht = ht;
            this.ns = ns;
        }
        // nhap
        public void Nhap()
        {
            // nhap ho ten
            Console.Write("\n Ho ten: ");
            ht = Console.ReadLine().ToString();
            Console.Write("\n Nam sinh: ");
            ns =Int32.Parse( Console.ReadLine());

        }
    }
    // class SVCD
    public class SVCD : SV
    {
        public float d1, d2, d3;
        //khoi tao
        public SVCD(string ht,int ns,float d1,float d2,float d3):base(ht,ns)
        {
            this.d1 = d1;
            this.d2 = d2;
            this.d3 = d3;
        }
        // Nhap 
        public void Nhap()
        {
            base.Nhap();
            // nhap diem
            do
            {
                Console.Write("\n Diem nam thu 1: ");
                d1 = float.Parse(Console.ReadLine());
                if (d1 < 0 || d1 > 10)
                    Console.Write("\n Nhap lai diem !");
            } while (d1 < 0 || d1 > 10);

            do
            {
                Console.Write("\n Diem nam thu 2: ");
                d2 = float.Parse(Console.ReadLine());
                if (d2 < 0 || d2 > 10)
                    Console.Write("\n Nhap lai diem !");
            } while (d2 < 0 || d2 > 10);

            do
            {
                Console.Write("\n Diem nam thu 3: ");
                d3 = float.Parse(Console.ReadLine());
                if (d3 < 0 || d3 > 10)
                    Console.Write("\n Nhap lai diem !");
            } while (d3 < 0 || d3 > 10);
        }
        // Tinh diem
        public float TinhDiem()
        {
            return (d1 + d2 + d3) / 3;
        }
        // In thong tin
        public void InTT()
        {
            char diemChu;
            float dtk = TinhDiem();
            if (dtk < 4.0) diemChu = 'F';
            else if (dtk < 5.5) diemChu = 'D';
            else if (dtk < 7.0) diemChu = 'C';
            else if (dtk < 8.5) diemChu = 'B';
            else diemChu = 'A';
            Console.Write("\n - Ho ten : {0} \n - Tuoi: {1} \n - Diem tong ket: {2} \n - Diem chu: {3}",ht,ns,dtk,diemChu);
        }

    }
    // clas SVDH

    public class SVDH: SVCD
    {
        public float d4;
        //khoi tao
        public SVDH(string ht, int ns, float d1, float d2, float d3, float d4)
            : base(ht, ns,d1,d2,d3)
        {           
            this.d4 = d4;
        }
        // Nhap 
        public void Nhap()
        {
            base.Nhap();
            // nhap diem
            do
            {
                Console.Write("\n Diem nam thu 4: ");
                d4 = float.Parse(Console.ReadLine());
                if (d4 < 0 || d4 > 10)
                    Console.Write("\n Nhap lai diem !");
            } while (d4 < 0 || d4 > 10);

        }
        // Tinh diem
        public float TinhDiem()
        {
            return (d1 + d2 + d3+d4) / 4;
        }
        // In thong tin
        public void InTT()
        {
            base.InTT();
        }

    }

    class Program
    {
        static void Main(string[] args)
        {
            // khai bao doi tuong sinh vien CD
            Console.Write("\n SINH VIEN CAO DANG \n");
            SVCD t = new SVCD("", 0, 0.0f, 0.0f,0.0f);
            t.Nhap();
            t.InTT();

            // khai bao doi tuong sinh vien DH
            Console.Write("\n \n SINH VIEN DAI HOC \n");
            SVDH t1 = new SVDH("", 0, 0.0f, 0.0f, 0.0f,0.0f);
            t1.Nhap();
            t1.InTT();

            // 
            Console.ReadLine();
        }
    }
}

// ---------------------------------

[C\C++] Ví dụ cấu trúc lặp trong C\C++

[C\C++] Ví dụ cấu trúc lặp trong C\C++


/* 
Ví dụ1: 
 In ra man hinh tat ca so nguyen co 3 chu so sao cho tong cua chung bang 10 
*/

#include<iostream.h>
#include<conio.h>

void main(){
 cout<<"\n In ket qua: \n ";
 for (int i=100;i<=999;i++)
  if(i%10+(i/10)%10+(i/100)%10==10)
cout<<i<<"; ";

getch();
}

//--------------------------------

/* 
Ví dụ 2: 
Tính tổng
s=x+2x^2 +3x^3 +... + nx^n
(x, n nhap vao tu ban phim, thoa man
1<=x<=3; 1<=n<=10)
*/

#include<iostream.h>
#include<math.h>
#include<conio.h>

void main(){
 int n;
 float x;
 // nhap n
 do{
cout<<"\n n=";
cin>>n;
if(n<1||n>10)
cout<<"\n Nhap lai n!";
 }while(n<1||n>10);

 // nhap x
 do{
cout<<"\n x=";
cin>>x;
if(x<1||x>3)
cout<<"\n Nhap lai x!";
 }while(x<1||x>3);
 // tinh s
 float s=0;
 int i=1;
 while(i<=n)
 {
  s=s+i*(float)pow(x,i); // x^i
  i++;
 }

 cout<<"\n S= "<<s;
getch();
}

[ C# ] Một số ví dụ khai báo class và object trong C#

[ C# ] Một số ví dụ khai báo class và object trong C#

Một số ví dụ khai báo class và object trong C#

/*
Bài 1:  Xây dựng lớp
- nhập vào thông tin sinh viên
 + Họ tên
 + Năm sinh
 + Địa chỉ
 + Điểm kỳ 1, kỳ 2, kỳ 3
- Tính điểm tổng kết 
- In thông tin sinh viên

*/
// Code C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace classSV
{
    // clas SV
    class SV
    {
        // thuoc tinh
        string ht,dc;
        int namSinh;
        float dk1, dk2, dk3;
        const float soTinChiKy1 = 26, soTinChiKy2 = 27, soTinChiKy3 = 30; // khai bao hang
        // Phuong thuc khoi tao
        public SV(string ht, string dc, int namSinh, float dk1, float dk2, float dk3)
        {
            this.ht = ht;
            this.dc = dc;
            this.namSinh = namSinh;
            this.dk1 = dk1;
            this.dk2 = dk2;
            this.dk3 = dk3;
        }
        // Nhap thong tin sv
        public void NhapTT()
        {
            Console.Write("\n Ho ten: ");
            ht = Console.ReadLine();
            Console.Write("\n Dia chi: ");
            dc = Console.ReadLine();
            Console.Write("\n Nam sinh: ");
            namSinh = Int32.Parse(Console.ReadLine());
            do
            {
                Console.Write("\n Diem hoc ky 1: ");
                dk1 = float.Parse(Console.ReadLine());
                if (dk1 < 0 || dk1 > 10)
                    Console.Write("\n Nhap lai diem hoc ky 1: ");
            } while (dk1 < 0 || dk1 > 10);
            do
            {
                Console.Write("\n Diem hoc ky 2: ");
                dk2 = float.Parse(Console.ReadLine());
                if (dk2 < 0 || dk2 > 10)
                    Console.Write("\n Nhap lai diem hoc ky 2: ");
            } while (dk2 < 0 || dk2 > 10);
            do
            {
                Console.Write("\n Diem hoc ky 3: ");
                dk3 = float.Parse(Console.ReadLine());
                if (dk3 < 0 || dk3 > 10)
                    Console.Write("\n Nhap lai diem hoc ky 3: ");
            } while (dk3 < 0 || dk3 > 10);
        }
        // Tinh diem
        public float TinhDiem()
        {
            return (dk1*soTinChiKy1+dk2*soTinChiKy2+dk3*soTinChiKy3)/(soTinChiKy1+soTinChiKy2+soTinChiKy3);
        }
        // In thong tin sinh vien
        public void InTT()
        {
            // tim diem chu
            char diemChu;
            float dtk=TinhDiem();
            if (dtk < 4) diemChu = 'F';
            else if (dtk < 5.5) diemChu = 'D';
            else if (dtk < 6.5) diemChu = 'C';
            else if (dtk < 8.5) diemChu = 'B';
            else diemChu = 'A';
            // in thong tin
            Console.Write("\n THONG TIN CUA SINH VIEN:");
            Console.Write("\n - Ho ten:{0}\n - Nam sinh: {1}\n - Dia chi: {2}\n - Diem tong ket: {3}\n - Diem chu: {4}",ht,namSinh,dc,dtk,diemChu);
        }
    }

// class program
 class Program
    {
        static void Main(string[] args)
        {
            SV t = new SV("", "",0, 0, 0, 0);
            t.NhapTT();
            t.InTT();
            Console.ReadLine();
        }
    }
}



//------------------------------------------------------------------------------------------------

/*
Bài 2:  Xây dựng lớp giải phương trình bậc 2 một ẩn (ax^2 + bx + c = 0)

*/
// code C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PTB2
{
    // clas PhuongTrinh
    class PhuongTrinh
    {
        // thuoc tinh a,b,c
        float a, b, c;
        //phuong thuc khoi tao
        public PhuongTrinh(float a,float b,float c)
        {
            this.a = a;
            this.b = b;
            this.c = c;
        }
        // phuong thuc nhap
        public void Nhap()
        {
            Console.Write(" a= ");
            a = float.Parse(Console.ReadLine());
            Console.Write(" b= ");
            b = float.Parse(Console.ReadLine());
            Console.Write(" c= ");
            c = float.Parse(Console.ReadLine());
        }
        // Phuong thuc bien luan
        public void BienLuan()
        {
            if (a == 0)
                if (b == 0)
                    if (c == 0)
                        Console.Write("\n Phuong trinh vo so nghiem");
                    else
                        Console.Write("\n Phuong trinh vo nghiem");
                else
                    Console.Write("\n Phuong trinh co nghiem x={0}", -c / b);
            else
            {
                float d = b * b - 4 * a * c;
                if(d<0)
                    Console.Write("\n Phuong trinh vo nghiem");
                if (d==0)
                    Console.Write("\n Phuong trinh co nghiem kep x1=x2= {0}",-b/(2*a));
                if(d>0)
                    Console.Write("\n Phuong trinh co 2 nghiem x1= {0}; x2= {1}", (-b - Math.Sqrt(d)) / (2 * a), (-b + Math.Sqrt(d)) / (2 * a));
            }
        }
    }

// class program
class Program
    {
        static void Main(string[] args)
        {
            // khai bao va khoi tao doi tuong t
            PhuongTrinh t = new PhuongTrinh(0, 0, 0);
            t.Nhap();
            t.BienLuan();
            Console.ReadLine();
        }
    }
}

//---------------------------------------------------------------------------------------

Chú ý: Để chạy chương trình, bạn tạo Project C# (console Application), đặt tên là trùng với tên namespace sau đó copy code paste vào program.cs.

Chúc thành công!

[ C# ] Làm việc với lớp String trong lập trình C#

[ C# ] Làm việc với lớp String trong lập trình C#
Lớp String là 2 lớp cơ bản trong .NET giúp người dùng thao tác với chuỗi 1 cách nhanh hơn, hầu như trong .NET, bạn sẽ không phải “gồng mình” với những thao tác xử lý chuỗi phức tạp vì C# đã cung cấp cho bạn những phương thức để xử lý chúng. 

Hiểu sơ qua về lớp String:
- Một thể hiện của lớp String thì không thay đổi, nghĩa là mỗi khi một thể hiện được tạo, nó không bị chỉnh sửa được. Nó có những phương thức mà trả về 1 chuỗi mới, 1 chuỗi con từ 1 chuỗi cha.
- Chỉ mục trong String được tính từ số 0 (zero based). Nghĩa là ký tự đầu tiên trong chuỗi bất kỳ sẽ có chỉ mục là 0.
- Mặc định, String sẽ trả về 1 chuỗi rỗng (“”), bởi thế bạn không cần phải khởi tạo nó như bạn đã từng làm trong C++ hoặc các ngôn ngữ khác. Lưu ý: một chuỗi rỗng thì lớn hơn một chuỗi null.

Những thành viên trong lớp String:
Lớp String cung cấp 2 thuộc tính – Chars và Length. Thuộc tính Chars trả về 1 ký tự tại 1 vị trí xác định trong chuỗi. Còn thuộc tính Length trả về số lượng ký tự có trong chuỗi.
Lớp String cung cấp 2 loại phương thức – static và instance. Phương thức Static chỉ có thể được sử dụng với lớp String (khỏi phải tạo 1 thể hiện của lớp String nè), còn phương thức Instance chỉ sử dụng được thông qua thể hiện của lớp String.

So sánh 2 chuỗi:
Phương thức Compare so sánh 2 chuỗi và trả về 1 giá trị kiểu int. Giá trị này có thể lớn hơn, nhỏ hơn hoặc bằng 0
+ Nhỏ hơn 0: chuỗi 1 nhỏ hơn chuỗi 2
+ Bằng 0: 2 chuỗi bằng nhau
+ Lớn hơn 0: chuỗi 1 lớn hơn chuỗi 2

Visual C# Code:
// So sanh 2 chuoi bat ky

//====================================
string str1 = "ppp";
string str2 = "ccc";
int res = String.Compare(str1, str2);
Console.WriteLine("First result:" +res.ToString());
str2 = "ttt"; 
res = String.Compare(str1, str2);
Console.WriteLine("Second result:" +res.ToString());
str1 = "ttt"; 
res = String.Compare(str1, str2);
Console.WriteLine("Third result:" +res.ToString)); 
//====================================
Bạn có thể so sánh chuỗi như sau:

Visual C# Code:
string str = "kkk";

Console.WriteLine( str.CompareTo(str1) );

Sao chép và nối chuỗi:
Phương thức Concat nối nhều chuỗi và trả về 1 chuỗi mới. Sử dụng Concat, bạn có thể nối 2 chuỗi bất kỳ như sau:

Visual C# Code:
string chuoi01 = "ppp";

string chuoi02 = "ccc";
string chuoiketqua = String.Concat(chuoi01, chuoi02);
Console.WriteLine(chuoiketqua);
Đoạn code sau minh họa việc nối 1 chuỗi với 1 đối tượng:
Visual C# Code:Lựa chọn code | Ẩn/Hiện code
object obj = (object)12;
chuoiketqua = String.Concat(chuoi01, obj);
Console.WriteLine(chuoiketqua);

Phương thức Copy sao chép nội dung 1 chuỗi đến 1 chuỗi khác. Code minh họa như sau:

Visual C# Code:


string chuoi01 = "ppp";
string chuoi02 = "ccc";
string chuoiketqua = String.Copy(chuoi01);
Console.WriteLine("Copy result :" + chuoiketqua);

Phương thức Clone trả về 1 bản sao chép của 1 chuỗi từ 1 đối tượng. Đoạn code sau đây minh họa việc tạo 1 bản sao chép của chuoi01:

Visual C# Code:
string chuoi01 = "ppp";

object objClone = str1.Clone();
Console.WriteLine("Clone :"+objClone.ToString());

Phương thức Join hữu ích khi bạn cần chèn 1 saparator (khó dịch quá, tạm dịch là "chuỗi nhận dạng") vào giữa những phần tử trong chuỗi. Nói thế khó hiểu quá, mình cho ví dụ sau để dễ hiểu:

Visual C# Code:
string str1 = "ppp";

string str2 = "ccc";
string str3 = "kkk";
string[] allStr = new String[]{str1, str2, str3};
string strRes = String.Join(", ", allStr);
Console.WriteLine("Join Results: "+ strRes);

Kết quả:

Join Results: ppp, ccc, kkk

Thêm, xóa và thay thế chuỗi:
Phương thức Insert chèn 1 chuỗi bất kỳ vào 1 chỉ mục của 1 thể hiện String. Ví dụ:

Visual C# Code:
string chuoi01 = "ppp";

string chuoiketqua = chuoi01.Insert(2, "bbb");
Console.WriteLine(strRes.ToString());

Kết quả:

ppbbbp
Phương thức Remove xóa 1 số ký tự bất kỳ từ 1 vị trí bất kỳ trong 1 chuỗi. Phương thức này trả về 1 kết quả là 1 chuỗi. Ví dụ, đoạn code sau xóa 3 ký tự từ chỉ mục thứ 3
Visual C# Code:


string s = "123abc000";
Console.WriteLine(s.Remove(3, 3));
Kết quả:

123000

Phương thức Replace thay thế những ký tự bất kỳ trong chuỗi thành những ký tự do bạn chỉ định. Sau đây là đoạn code minh họa:
Visual C# Code:
string chuoi01 = "ppp";

string chuoiketqua = str1.Replace('p', 'l');
Console.WriteLine("Replaced string:"+ chuoiketqua.ToString() );
Output Code:Lựa chọn code | Ẩn/Hiện code
Replaced string:lll
UperCase và LowerCase một chuỗi:
Visual C# Code:Lựa chọn code | Ẩn/Hiện code
string aStr = "adgas";
string bStr = "ABNMDWER";
string strRes = aStr.ToUpper();
Console.WriteLine("Uppercase:"+ strRes.ToString());
strRes = bStr.ToLower();
Console.WriteLine("Lowercase:"+ strRes.ToString());

Kêta quả:


Uppercase:ADGAS
Lowercase:abnmdwer
Chúc các bạn thành công!
(nguồn: http://diendan.congdongcviet.com)

[ C\C++ ]: Cấu trúc lựa chọn (switch)

[ C\C++ ]: Cấu trúc lựa chọn (switch)
Cấu trúc lựa chọn trong C\C++

Cú pháp: 
  switch (biểu thức) {
case <giá trị1> : 
             câu lệnh-1; [ break;]
case <giá trị2> : 
             câu lệnh-2; [break;]
case <giá trị3> : 
            câu lệnh-3; [break;]


case <giá trịn> : 
             câu lệnh-n; [break;]
        [default: 
     câu lệnh – n+1; ]
 }

Hoạt động: Biểu thức cho giá trị nào thì câu lệnh tương ứng với giá trị đó được thực hiện; nếu giá trị của biểu thức không trùng với bất cứ giá trị nào thì câu lệnh default được thực hiện. 
Chú ý: những câu lệnh trong cặp ngoặc [ ] có thể có hoặc không.

Mốt số ví dụ

Ví dụ1: Nhập vào 1 số nguyên bất kỳ x, in ra dòng chữ thông báo số đó bằng tiếng Anh.

#include<iostream.h>
#include<conio.h>

void main(){
 int x;
cout<<”\n x=”; cin>>x;
// cau truc switch
switch (x) {
case 1:
  cout << "x is 1";
  break;
case 2:
  cout << "x is 2";
  break;
case 3:
  cout << "x is 3";
  break;
default:
  cout << "value of x unknown";
 }

getch();
}
//----------------------------------------------------------------------------------------------- Ví dụ2: Nhập vào tháng, năm in ra màn hình số ngày trong tháng đó

#include<iostream.h>
#include<conio.h>

void main(){
 int thang ,nam;
cout<<”\n Thang=”; cin>>thang;
cout<<”\n Nam=”; cin>>nam;

switch (thang) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
  cout << "\n Thang co 31 ngay";
  break;
case 4:
case 6:
case 9:
case 11:
  cout << "\n Thang co 30 ngay";
  break;
case 2:
 if(nam%4==0) // nam nhuan
  cout << "\n Thang co 29 ngay";
else
  cout << "\n Thang co 28 ngay";
  break;
default:
  cout << "\n Ban nhap thang khong hop le";
}
getch();
}

// Các bạn tự chuyển cấu trúc switch sang if nhé.

[ C\C++ ] Cấu trúc lặp

[ C\C++ ] Cấu trúc lặp

Cấu trúc lặp trong C\C++

Dang1: for
for (biểu thức1; biểu thức 2; biểu thức 3)
{
Câu lệnh;
}
Trong đó:
  Biểu thức 1: khởi tạo giá trị ban đầu
  Biểu thức 2: điều kiện lặp
  Biểu thức 3: thay đổi giá trị

Dạng 2: while
  while (biểu thức điều kiện){
Câu lệnh;
}

  Trong khi (biểu thức điều kiện) còn đúng câu lệnh còn thực hiện

Dạng 3: do\while
do{
Câu lệnh;
  } while(biểu thức điều kiên);

   Tương tự như while chỉ khác câu lệnh thực hiện trước điều kiện kiểm tra sau => câu lệnh sẽ được thực hiện ít nhất 1 lần.

Một số Ví dụ

Ví dụ1. In ra màn hình tất cả số nguyên có 3 chữ số sao cho tổng các chữ số bằng 10.

// In ra man hinh tat ca cac so gom 3 chu so, sao cho tong cua cac chu so bang 10

// Cách1: dùng for ------------------------------------------------------------------

#include<iostream.h>
#include<conio.h>

void main(){
 cout<<"\n In day so can tim: ";
 for(int a=100;a<=999;a++)
{
if(a%10+(a/10)%10+(a/100)%10==10)
 cout<<a<<" ; ";
}
 getch();

}

// Cách2: dùng while ---------------------------------------------------------------

#include<iostream.h>
#include<conio.h>

void main(){
 cout<<"\n In day so can tim: ";
int a=100;
 while(a<=999){
     if(a%10+(a/10)%10+(a/100)%10==10)
 cout<<a<<" ; ";
     a++;
  }
 getch();
}

// Cách3: dùng do\while -----------------------------------------------------------

#include<iostream.h>
#include<conio.h>

void main(){
 cout<<"\n In day so can tim: ";
int a=100;
do{
if(a%10+(a/10)%10+(a/100)%10==10)
 cout<<a<<" ; ";
a++;
  } while(a<=999);
 getch();
}
//-----------------------------------------------------------------------------------------------

Ví dụ2. Tính s=1+3+5+..+n (n nhập từ bàn phím thỏa mãn 2<=n<=23).

// Tinh tong s=1+3+5+7+...+n (voi n nhap tu ban phim thoa man 2<=n<=23)
#include<iostream.h>
#include<conio.h>

void main(){
 int n;
 // nhap n
 do{
cout<<"\n n=";
cin>>n;
if(2>n||23<n)
cout<<"\n Nhap lai n!";
 }while(2>n||23<n);
 // tinh tong
 int s=0;
 int i=1;
 while(i<=n){
if (i%2!=0)
s=s+i;
i++;
  }
 cout<<"\n Ket qua: "<<s;
 getch();
}

// Các bạn có thể đổi while => for; do\while => for ???
//-------------------------------------------------------------------------------------------------

Ví dụ3. Giải bài toán Gà-Chó

// Giai bai toan Ga-Cho

//Cách 1: dùn for lồng nhau -------------------------------------------------------------

#include<iostream.h>
#include<conio.h>

void main(){
 int g,c;
 for(g=0;g<=36;g++)
  for(c=0;c<=36;c++)
if(g+c==36&&g*2+c*4==100)
cout<<"\n Ket qua: Ga = "<<g<<"; Cho= "<<c ;
 getch();

}

//Cách 2: dùng while (tối ưu hơn) ------------------------------------------------------

#include<iostream.h>
#include<conio.h>

void main(){
 int g=0;
while(g<=36){
if(g*2+(36-c)*4==100)
cout<<"\n Ket qua: Ga = "<<g<<"; Cho= "<<36-g ;
g++;
 getch();
}

[ C\C++ ] Cấu trúc rẽ nhánh - if

[ C\C++ ] Cấu trúc rẽ nhánh - if
Cấu trúc rẽ nhánh
* Dạng1: 
if (điều kiện)  
 
    câu lệnh; 
}
 * Dạng 2:  
if (điều kiện) 
 {  
    câu lệnh1 ;
 }
else
{
   Câu lệnh 2;
}

* Dạng3: if lồng nhau


if (điều kiện) 
 {  
               câu lệnh1; // có thể là if
            }
         else
           { 
           Câu lệnh 2; // có thể là if
           }

Một số ví dụ

Ví dụ1. Viết chương trình nhập vào 3 sô, in ra màn hình số lớn nhất, nhỏ nhất.
#include<iostream.h>#include<conio.h>
void main(){ 
float a,b,c; // nhap a,b,c
 cout<<"\n Nhap a,b,c:"; 
cin>>a>>b>>c; 
// tim max 
int max=a; 
if(max<b) max=b; 
if(max<c) max=c; 
// tim min 
int min=a; 
if(min>b) min=b; 
if(min>c) min=c;
 cout<<"\n Max: "<<max<<"\n Min: "<<min; 
getch();
}

Ví dụ2. Viết chương trình giải ax+b=0


#include<iostream.h>
#include<conio.h>
void main(){
 float a,b;
 // nhap a,b
 cout<<"\n Nhap a,b:"; 
cin>>a>>b; 
// bien luan 
if (a==0)
   if(b==0)
      cout<<"\n Phuong trinh vo so nghiem";
  else
      cout<<"\n Phuong trinh vo nghiem";
 else
cout<<"\n Phuong trinh co nghiem: x= "<<-b/a;
 getch();
}

Ví dụ3. Viế chương trình giải phương trình ax^2 +bx+c=0


#include<iostream.h>
#include<conio.h>
#include<math.h>

void main(){
 float a,b,c; 
// nhap a,b,c
 cout<<"\n Nhap a,b,c:"; 
cin>>a>>b>>c; 
// bien luan 
if (a==0)
// suy bien thanh bac 1
   if(b==0)
 if (c==0)
             cout<<"\n Phuong trinh vo so nghiem";
          else
            cout<<"\n Phuong trinh vo nghiem"; 
     else
          cout<<"\n Phuong trinh co nghiem: x= "<<-c/b;
else
// phuong trinh bac 2
{
 float d=b*b-4*a*c; 
    if (d<0)
       cout<<"\n Phuong trinh vo nghiem"; 
   if (d==0)
       cout<<"\n Phuong trinh co nghiem kep x1=x2="<<-b/(2*a); 
if (d>0)
     cout<<"\n Phuong trinh co 2 nghiem x1="<<(-b-sqrt(d))/(2*a)<<" ; x2="<<(-b-sqrt(d))/(2*a);

 }
 getch();
}

Danh mục bài viết