	 Viết  chương trình nhập vào  1 mảng a gồm n phần tử , sắp xếp mảng thành mảng tăng dần.
Uses crt;
Var a:array[1..1000] of integer;
i,j,n,t:integer;
procedure nhap;
begin
Write(‘Nhap n : ‘);
Readln(n);
For i:=1 to n do
    Begin
        Write(‘a[‘,i,’]: ‘);
        Readln(a[i]);
    End;
End;
Procedure sapxep;
Begin
    For j:=1 to n-1 do
        For i:=1 to n-1 do
                 If a[i]>a[i+1] then
                           Begin
                              T:=a[i];
                              A[i]:=a[i+1];
                             A[i+1]:=t;
                            End;
End;
Procedure Inra;
Begin
    For i:=1 to n do
          Write(a[i]:3);
 End;
{bat dau chuong trinh chinh }
Begin
    Nhap;
    Sapxep;
    Inra;
Readln;
End;
	Viết chương trình nhập vào một mảng a gồm n phần tử , tính tổng các phần tử trong mảng.
Uses crt;
Var a:array[1..1000] of integer;
i,j,n,t,s:integer;
procedure nhap;
begin
Write(‘Nhap n : ‘);
Readln(n);
For i:=1 to n do
    Begin
        Write(‘a[‘,i,’]: ‘);
        Readln(a[i]);
    End;
End;
Procedure tinhtong;
    Begin
        S:=0;
          For i:=1 to n do
             S:=s+a[i];
     End;
Procedure Inra;
Begin
    Write(‘Tong la : ‘,s);
 End;
{bat dau chuong trinh chinh }
Begin
    Nhap;
    tinhtong;
    Inra;
Readln;
End;
	Viết chương trình tính tổng các phần tử lẻ trong mảng.
Sửa lại phần procedure tinhtong;  bài 2 thành
Procedure tinhtong;
Begin
   S:=0;
For i:=1 to n do
              If a[i] mod 2 <>0 then
                           S:=s+a[i];
End;
	Viết chương trình tính trung bình cộng của một mảng a gồm n phần tử .
-Sửa lại phần Procedure tinhtong ; bài 2 thành
Function  TBC:real;
Begin
    S:=0;
    For i:=1 to n do
              S:=s+a[i];
   TBC:=s/n;
End;
-Sửa phần procedure Inra ; thành
Procedure Inra;
Begin
    Write(‘TBC la : ‘,TBC:2:4);
 End;
5.  Viết chương trình nhập vào 1 xâu, sau đó đếm xem số lần xuất hiện mỗi ký tự trong xâu 
VD: THPT Quynh Luu 4
KQ: T:2 H:2 P:1 Q:1 U:3 Y:1 N:1 4:1 
Giải  (#32 là dấu cách )
In hoa toàn bộ xâu .
Xét ký tự đầu s[1];
Đếm xem có bao nhiêu ký tự giống s1 trong xâu. 
Mỗi lần có s[i] =s[1] thì xóa đi s[i] để tránh lặp
Đếm hết thì ghi ra s[1] và đếm
Xóa s[1] chuyển đếm về 1.
Quay lại xét tiếp s[1];
CODE: 
VAR s:STRING;
i,d,j:INTEGER;  
PROCEDURE xuli;{ xu ly bai toan }
BEGIN          
IF s[1] <>#32 THEN 
BEGIN 
d:=1; j:=2;   
WHILE j<=length(s) DO  
IF s[j] = s[1] THEN 
BEGIN inc(d) ; delete(s,j,1); END 
ELSE inc(j);  
Write(s[1],' :  ');
writeln(d);
delete(s,1,1);
END ELSE delete(s,1,1);
END;
BEGIN
Write('Nhap xau : ');
Readln(S);
FOR i:=1 TO length(s) DO
s[i]:=upcase(s[i]);
WHILE s<>'' DO
xuli;
Readln;
END.
	Tính tổng sau 
S= 1/i! với i chạy từ 0 đến n
S=∑_(i=0)^n▒1/i!

Giải :
Ta viết hàm tính giai thừa 
sau đó tính tổng.
Hàm giai thừa là
f(x)= x*(x-1)*(x-2)*...*1

VAR s:REAL;
n,i:INTEGER;
FUNCTION Giaithua(n:INTEGER):LONGINT;
VAR s,i:LONGINT;

BEGIN               
    s:=1;
FOR i:=n DOWNTO 1 DO
s:=s*i;
Giaithua:=s;
END;
BEGIN
    Write('Nhap n : ');
    Readln(n);      
    s:=0;
    FOR i:=0 TO n DO
    s:=s+1/giaithua(i);
    Write('S= ',s:4:4);
    Readln;
END.



6.
Tính tổng
S= x^i với i từ 0 đến n
S=∑_(i=0)^n▒x^i 

Tương tự bài tính giai thừa
nhưng hàm Lũy thừa
F(x,i)= x*x*x*x...*x
(i thừa số); 
VAR s:LONGINT;
i,x,n:LONGINT;
FUNCTION Luythua(x,i:LONGINT):LONGINT;
VAR s,j:LONGINT;
BEGIN
s:=1;
FOR j:=1 TO i DO
s:=s*x;  
Luythua:=s;
END;    
BEGIN
Writeln('Nhap n : ');
readln(n);   
Write('Nhap x : ');
Readln(x);
s:=0;
FOR i:=0 TO n DO
s:=s+Luythua(x,i); 
Write('S= ',s);
readln;
END.
	Viết chương trình đếm số từ trong một xâu .
Giải: Thay vì đếm từ, ta sẽ đếm số dấu cách (#32) trong câu. Sau đó cộng thêm 1 ( vì từ đầu tiên k có dấu cách đứng trước).
Var s:string;
Dem,i: integer;
Procedure Nhap;
Begin
Write(‘Nhap xau : ‘ );
Readln(s);
End;
Procedure Demtu;
Begin
Dem:=0;
For i:=1 to length(s) do
If s[i]=#32 then inc(dem);
End;
Procedure Inra;
Begin
Write(‘So tu la : ‘,dem+1);
End;
{ chuong trinh chinh}
Begin
Nhap;
Demtu;
Inra;
Readln;
End.
	Viết chương trình nhập vào một xâu toàn bộ là chữ thường, sau đó in hoa những ký tự đứng đầu một từ.
VD   : hoc sinh  Hoc Sinh
Giải
Ta thấy chữ cái đầu (s[1] luôn phải in hoa ).
Sau đó mỗi chữ cái sau dấu cách (#32) phải in hoa.
Var s:string;
i: integer;
Procedure Nhap;
Begin
Write(‘Nhap xau : ‘ );
Readln(s);
End;
Procedure Xuli;
Begin
S[1]:=upcase(s[1]);
For i:=2 to length(s) do
If s[i]=#32 then s[i+1]:=upcase(s[i+1]);
End;
Procedure Inra;
Begin
Write(‘Xau moi : ‘,s);
End;
{ chuong trinh chinh}
Begin
Nhap;
Xuli;
Inra;
Readln;
End.

	 Viết chương trình
Tính tổng x+y
Giải pt bậc 2 một ẩn
Giai thừa của n
CODE: 
PROGRAM Baitap;
USES crt;
VAR a,b,c:REAL;
n,x,y:INTEGER;
FUNCTION Tinhtong(x,y:INTEGER):INTEGER;
BEGIN
Tinhtong:=x+y;
END;
PROCEDURE GiaiPT(a,b,c:REAL);
VAR D,x1,x2:REAL;
BEGIN
D:= b*b - 4*a*c;
IF D<0 THEN Write('Phuong trinh vo nghiem ! ') ELSE
BEGIN
  BEGIN x1:= (-b-sqrt(d)) /(2*a) ;x2:=(-b+sqrt(D))/(2*a); END;
Writeln('x1=  ',x1:2:2);
Writeln('x2=  ',x2:2:2);
END;
END;
FUNCTION TinhGT(n:BYTE):LONGINT;
VAR gt,i:LONGINT;
BEGIN
gt:=1;
FOR i:=1 TO n DO
gt:=gt*i;
TinhGT:=gt;
END;
BEGIN
    Clrscr;
Write('Nhap x va y : ');
Readln(x,y);
Write('Tong la : ',Tinhtong(x,y));
Readln;
Write('Nhap he so a,b,c cua phuong trinh : ');
Readln(a,b,c);
GiaiPT(a,b,c);
Readln;
Write('Nhap n : ');
Readln(n);
Write(n,'!= ',TinhGT(n));
Readln;
END.
9. Kiểm tra một số có phải là nguyên tố hay không
VAR x:LONGINT;
FUNCTION Ngto(x:INTEGER):BOOLEAN;
VAR j: INTEGER;
BEGIN
Ngto:=TRUE;
IF x <=1 THEN Ngto:=FALSE ELSE
  FOR j:=2 TO Trunc(Sqrt(x)) DO
          IF x MOD j = 0 THEN BEGIN
                                         Ngto:=FALSE; exit; END;
END;
BEGIN 
Readln(x);
IF ngto(x) THEN Write(' La so nguyen to') ELSE write(' KHong phai nguyen to ') ; readln;
END.









