Trang 1 trong tổng số 1

Mã nguồn khai báo các hàm thông dụng trong Pascal

Đã gửi: T6 11 Th11, 2022 15:47
bởi huynhbuutam
Đoạn chương trình dưới đây nhằm mục đích giúp học sinh tiếp cận nhanh với việc giải các bài toán bằng ngôn ngữ lập trình Pascal, do đó mã nguồn được viết ngắn gọn, đa dụng, nhưng chưa tối ưu về mặt bộ nhớ, tốc độ,...

Mã: Chọn tất cả

Uses Crt;

Function SNT(N : LongInt) : Boolean;
Var k : LongInt;
Begin
    If N <= 1 Then Exit(False);
    For k := 2 To N Div 2 Do
        If N Mod k = 0 Then Exit(False);
    Exit(True);
End;

Function BCNN(A, B : LongInt) : LongInt;
Var k : LongInt;
Begin
    For k := Abs(A) To Abs(A*B) Do
        If (k Mod A = 0) And (k Mod B = 0) Then Exit(k);
End;

Function UCLN(A, B : LongInt) : LongInt;
Var k : LongInt;
Begin
    For k := Abs(A) DownTo 1 Do
        If (A Mod k = 0) And (B Mod k = 0) Then Exit(k);
End;

Function LuyThua(A, B : LongInt) : LongInt;
Var k, KQ : LongInt;
Begin
    If B = 0 Then Exit(1);
    KQ := A;
    For k := 2 To B Do KQ := KQ * A;
    Exit(KQ);
End;

Function GiaiThua(N : LongInt) : LongInt;
Var k, KQ : LongInt;
Begin
    If N < 0 Then Exit(0);
    If N = 0 Then Exit(1);
    KQ := 1;
    For k := 2 To N Do KQ := KQ * k;
    Exit(KQ);
End;

Procedure DoiSo(Var A, B : LongInt);
Var Tam : LongInt;
Begin
    Tam := A;
    A := B;
    B := Tam;
End;

Procedure SapXepTang(Var Mang : Array Of LongInt; SL : LongInt);
Var k1, k2 : LongInt;
Begin
    For k1 := 0 To SL - 2 Do
        For k2 := k1 + 1 To SL - 1 Do
            If Mang[k1] > Mang[k2] Then DoiSo(Mang[k1], Mang[k2]);
End;

Function LonNhat(Mang : Array Of LongInt; SL : LongInt) : LongInt;
Var k, Max : LongInt;
Begin
    Max := Mang[0];
    For k := 1 To SL - 1 Do
        If Mang[k] > Max Then Max := Mang[k];
    Exit(Max);
End;

Var M : Array[1..10000] Of LongInt;
    i, N : LongInt;
    X, Y : LongInt;

Begin
    ClrScr;

    X := -3; Y := 9;
    WriteLn('X = ', X, ' | Y = ', Y);
    WriteLn('Kiem tra so nguyen to X: ', SNT(X), ' | ', SNT(11));
    WriteLn('Tim boi chung nho nhat cua X va Y: ', BCNN(X, Y), ' | ', BCNN(12, Y));
    WriteLn('Tim uoc chung lon nhat cua X va Y: ', UCLN(X, Y), ' | ', UCLN(-32, 18));
    WriteLn('Tinh luy thua X^Y: ', LuyThua(X, Y));
    WriteLn('Tinh giai thua Y!: ', GiaiThua(Y), ' | ', GiaiThua(-2));
    DoiSo(X, Y);
    WriteLn('Doi so: X = ', X, ' | Y = ', Y);

    { DU LIEU KIEU MANG }
    N := 3; M[1] := 10; M[2] := -5; M[3] := 8;
    Write('Day so ban dau: ');
    For i := 1 To N Do Write(M[i], ' ');
    WriteLn;
    SapXepTang(M, N);
    Write('Day so sau khi sap xep: ');
    For i := 1 To N Do Write(M[i], ' ');
    WriteLn;
    WriteLn('So lon nhat la: ', LonNhat(M, N));


    ReadLn;
End.


► Tài liệu Google Drive: Nhấn để xem nội dung