Bài 1: Lập hàm tính giá trị hàm số:
a] f[x] = ?
Code:Code:
b]f[x] = ?
program p1b1a;
var x:real;
function hamso1[var x:real] :real;
var f:real;
begin
if x> [-5] then f:=[sqr[x]+1]/sqrt[exp[5*ln[x]]+3]
else f:=[ln[abs[x+5]]/ln[3]];
hamso1:=f;
end;
begin
write['Nhap x= '];
readln[x];
write['gia tri ham so f=',hamso1[x]:10:5];
readln;
end.
Code:program p1b1b;
Bài 4: Nhập vào 2 số nguyên dương a,b, in ra màn hình UCLN, BCNN của chúng. Mở rộng: Nhập vào n số nguyên dương, in ra màn hình UCLN, BCNN của n số đó.
var x:real;
function hamso2[var x:real] :real;
var f: real;
begin
if x>1 then f:= ln[abs[x/[2+exp[x*ln[5]]]]]/ln[3]
else f:= [2*exp[7*ln[x]+sin[exp[ln[x-1]*1/3]]]]/cos[5*x];
hamso2:=f;
end;
begin
write['Nhap gia tri x='];
readln[x];
write['Gia tri ham so f=',hamso2[x]:10:5];
readln;
end.
Thuật toán:
***tìm ước chung lớn nhất của dãy***
B1: Nhập số n
B2: Khởi tạo i bằng 1.
B3: Nhập số thứ i
B4: nếu iB5: Gán biến min bằng giá trị a[1]
B6: Khởi tạo i bằng 1.
B7: Nếu min>a[i] thì gán min bằng giá trị của a[i]
B8: nếu iB9: Khởi tạo th gán bằng giá trị đúng
B10: Khởi tạo i bằng 1
B11: nếu phần dư của a[i] chia cho min khác 0 thì gán th bằng sai
B12: nếu iB13: nếu th là đúng thì ước chung lớn nhất là min và chuyển tới bước 18.
B14: khởi tạo giá trị của j là phần nguyên của min chia 2.
B15: khởi tạo tk là đúng, khởi tạo i bằng 1
B16: nếu phần nguyên của a[1] chia cho j khác 0 thì gán tk bằng sai, giảm j đi 1
B17: nếu tk là sai thì quay lại bước 15 nếu không thì ước chung lớn nhất nhận giá trị là j+1.
B18: In ra màn hình giá trị ước chung lớn nhất đó.
***tìm bội chung nhỏ nhất của dãy***
B1: Nhập số n
B2: Khởi tạo i bằng 1.
B3: Nhập số thứ i
B4: nếu iB5: Gán biến max bằng giá trị a[1]
B6: Khởi tạo i bằng 1.
B7: Nếu maxB8: nếu iB9: Khởi tạo th gán bằng giá trị đúng
B10: Khởi tạo i bằng 1
B11: nếu phần dư của max chia cho a[i] khác 0 thì gán th bằng sai
B12: nếu iB13: nếu th là đúng thì bội chung nhỏ nhất là max và chuyển tới bước 18.
B14: khởi tạo giá trị của j là max nhân với 2.
B15: khởi tạo tk là đúng, khởi tạo i bằng 1
B16: nếu phần nguyên của j chia cho a[i] khác 0 thì gán tk bằng sai, tăng j thêm 1
B17: nếu tk là sai thì quay lại bước 15 nếu không thì bội chung nhỏ nhất nhận giá trị là j.
B18: In ra màn hình giá trị bội chung nhỏ nhất đó.
Code:
Code:program p1b4;
type arra= array[1..1000] of integer;
var a: arra;
i,j,n, max,min :integer;
function ucln[var a:arra; var n, min :integer] :integer;
var th, tk : boolean;
f: integer;
begin
th:=true;
for i:=1 to n do begin
if a[i] mod min 0 then th:= false;
end;
if th= true then f:=min
else begin
j:=[min div 2];
repeat
tk:=true;
for i:=1 to n do
if [[a[i] mod j] 0] then tk:=false;
j:=j-1;
until tk= true;
f:=j+1;
end;
ucln:=f;
end;
function bcnn[var a:arra; var n, max:integer] :longint;
var th,tk : boolean;
f: integer;
begin
th:=true;
for i:=1 to n do if max mod a[i] 0 then th:=false;
if th= true then f:=max
else begin
max:=max*2;
repeat
tk:=true;
for i:=1 to n do if max mod a[i]0 then tk:=false;
max:=max+1;
until tk = true;
f:=max-1;
end;
bcnn:=f;
end;
begin
write['nhap so so nguyen n='];
readln[n];
writeln[' nhap day so nguyen'];
for i:=1 to n do begin
write['a[',i,']='];
read[a[i]];
end;
max:=a[1];
for i:=1 to n do if a[i]>max then max:=a[i];
min:=a[1];
for i:=1 to n do if a[i]