TIN TỨC CẬP NHẬT
Một số bài toán viết bằng ngôn ngữ pascal
Trang 1 trong tổng số 1 trang
Một số bài toán viết bằng ngôn ngữ pascal
First topic message reminder :
Bài 1: Lập hàm tính giá trị hàm số:
a) f(x) = ?
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 i B5: 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 i B9: 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 i B13: 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 i B5: 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 i B9: 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 i B13: 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:
Bài 1: Lập hàm tính giá trị hàm số:
a) f(x) = ?
- Code:
Code:
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;
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 i
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 i
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 i
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 i
B6: Khởi tạo i bằng 1.
B7: Nếu maxB8: nếu i
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 i
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]<min then min:=a[i];
writeln('ucln la: ',ucln(a,n,min));
writeln('bcnn la: ',bcnn(a,n,max));
readln;
end.
Được sửa bởi khac_tuy ngày 24/5/2010, 3:58 am; sửa lần 2.
Re: Một số bài toán viết bằng ngôn ngữ pascal
Bài 17: Cho một dãy số nguyên gồm n phần tử.
i- Nhập dãy số (n nhập từ bàn phím, 1<=n<=100).
j- In dãy vừa nhập ra màn hình.
k- Tính tổng các phẩn tử dương lẻ.
l- Sắp xếp dãy sao cho các số âm đứng ở đầu dãy, các só dương ở cuối dãy đồng thời các số âm giảm dần, các số dương tăng dần. ví dụ: dãy ban đầu {1, -3, -6, 4, 9, 12, -4, 7, 3, 23, -2} thì dãy sau khi sắp phải là dãy {-2, -3, -4, -6, 1, 3, 4, 7, 9, 12}
Thuật toán:
B1: nhập n
B2: khởi tạo i bằng 1
B3: nhập giá trị thứ i
B4: nếu i B5: khởi tạo I bằng 1
B6: in ra màn hình giá trị thứ i
B7: nếu I B8: gán tổng bằng 0 và khởi tạo I bằng 1
B9: nếu gán trị thứ I lớn hơn 0 và phần dư của nó chia cho 2 khác 0 thì gán tổng bẳng tổng cộng thêm giá trị thứ i
B10: nếu i B11: in ra màn hình giá trị tổng
B12: khởi tạo I bằng 1
B13: khởi tạo j bằng i+1
B14: nếu giá trị thứ i lớn hơn giá trị thứ j thì đổi chỗ 2 giá trị cho nhau
B15: nếu j B16: nếu i < n-1 thì tăng i thêm 1 và quay lại bước 13
B17: khởi tạo i bằng 1
B18: khởi tạo j bằng i+1
B19: nếu giá trị thứ i nhỏ hơn giá trị thứ j và nhỏ hơn 0 thì đổi chỗ 2 giá trị cho nhau
B20: nếu j< n thì tăng j thêm 1 và quay lại bước 19
B21: nếu i B22: khởi tạo i bằng 1
B23:in giá trị thứ I ra màn hình
B24:nếu i < n thì tăng I thêm 1 và quay lại bước 23.
a.Nhập dãy số (n nhập từ bàn phím, 1<=n<=100).
b.In dãy vừa nhập ra màn hình.
c.Nhập vào một số nguyên x, đếm trong dãy có bao nhiêu số bằng x?
d.Sắp dãy theo chiều giảm dần. Viết dãy sau khi sắp ra màn hình.
e.Nhập vào một số nguyên x, chèn x vào dãy đã sắp giảm dần sao cho dãy sau khi chèn x vào vẫn đảm bảo thứ tự giảm dần.
Thuật toán:
B1: nhập n
B2: khởi tạo i bằng 1
B3: nhập giá trị thứ i
B4: nếu i B5: khởi tạo I bằng 1
B6: in ra màn hình giá trị thứ i
B7: nếu I B8: nhập giá trị của x
B9:khởi tạo i bằng 1, đếm bằng 0
B10: nếu giá trị thứ i bằng x thì tăng biến đếm thêm 1
B11: nếu i B12: in ra màn hình kết quả của biến đếm
B13: khởi tạo I bằng 1
B14: khởi tạo j bằng i+1
B15: nếu giá trị thứ i nhỏ hơn giá trị thứ j thì đổi chỗ 2 giá trị cho nhau
B16: nếu j B17: nếu i < n-1 thì tăng i thêm 1 và quay lại bước 14
B18: khởi tạo I bằng 1
B19: in ra màn hình giá trị thứ i
B20: nếu i B21: khởi tạo i bằng n
B22: chừng nào giá trị thứ I nhỏ hơn x và I khác 0 thì gán giá trị thứ I vào giá trị i+1 và giảm I đi 1 đơn vị
B24: gán giá trị i+1 bằng x
B25: khởi tạo I bằng 1
B26: in ra màn hình giá trị thứ i
B27: nếu i Code:
i- Nhập dãy số (n nhập từ bàn phím, 1<=n<=100).
j- In dãy vừa nhập ra màn hình.
k- Tính tổng các phẩn tử dương lẻ.
l- Sắp xếp dãy sao cho các số âm đứng ở đầu dãy, các só dương ở cuối dãy đồng thời các số âm giảm dần, các số dương tăng dần. ví dụ: dãy ban đầu {1, -3, -6, 4, 9, 12, -4, 7, 3, 23, -2} thì dãy sau khi sắp phải là dãy {-2, -3, -4, -6, 1, 3, 4, 7, 9, 12}
Thuật toán:
B1: nhập n
B2: khởi tạo i bằng 1
B3: nhập giá trị thứ i
B4: nếu i
B6: in ra màn hình giá trị thứ i
B7: nếu I
B9: nếu gán trị thứ I lớn hơn 0 và phần dư của nó chia cho 2 khác 0 thì gán tổng bẳng tổng cộng thêm giá trị thứ i
B10: nếu i
B12: khởi tạo I bằng 1
B13: khởi tạo j bằng i+1
B14: nếu giá trị thứ i lớn hơn giá trị thứ j thì đổi chỗ 2 giá trị cho nhau
B15: nếu j
B17: khởi tạo i bằng 1
B18: khởi tạo j bằng i+1
B19: nếu giá trị thứ i nhỏ hơn giá trị thứ j và nhỏ hơn 0 thì đổi chỗ 2 giá trị cho nhau
B20: nếu j< n thì tăng j thêm 1 và quay lại bước 19
B21: nếu i
B23:in giá trị thứ I ra màn hình
B24:nếu i < n thì tăng I thêm 1 và quay lại bước 23.
- Code:
program p2b17;
var a:array[1..100] of integer ;
i,tg,j,n :integer;
s:real;
begin
write('nhap n=');
readln(n);
for i:=1 to n do begin
write('a[',i,']=');
readln(a[i]);
end;
writeln('in ra man hinh day vua nhap');
for i:=1 to n do writeln('a[',i,']=',a[i]);
s:=0;
for i:=1 to n do if ((a[i] > 0) and (a[i] mod 2<>0)) then s:=s+a[i];
writeln('tong cac phan tu duong le laf s=',s);
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then begin
tg:=a[i];
a[i]:=a[j];
a[j]:=tg;
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if ((a[i]<0) and (a[j]<0) and (a[i]<a[j])) then begin
tg:=a[i];
a[i]:=a[j];
a[j]:=tg;
end;
Writeln('in ra man hinh');
for i:=1 to n do writeln('a[',i,']=',a[i]);
readln;
end.
a.Nhập dãy số (n nhập từ bàn phím, 1<=n<=100).
b.In dãy vừa nhập ra màn hình.
c.Nhập vào một số nguyên x, đếm trong dãy có bao nhiêu số bằng x?
d.Sắp dãy theo chiều giảm dần. Viết dãy sau khi sắp ra màn hình.
e.Nhập vào một số nguyên x, chèn x vào dãy đã sắp giảm dần sao cho dãy sau khi chèn x vào vẫn đảm bảo thứ tự giảm dần.
Thuật toán:
B1: nhập n
B2: khởi tạo i bằng 1
B3: nhập giá trị thứ i
B4: nếu i
B6: in ra màn hình giá trị thứ i
B7: nếu I
B9:khởi tạo i bằng 1, đếm bằng 0
B10: nếu giá trị thứ i bằng x thì tăng biến đếm thêm 1
B11: nếu i
B13: khởi tạo I bằng 1
B14: khởi tạo j bằng i+1
B15: nếu giá trị thứ i nhỏ hơn giá trị thứ j thì đổi chỗ 2 giá trị cho nhau
B16: nếu j
B18: khởi tạo I bằng 1
B19: in ra màn hình giá trị thứ i
B20: nếu i
B22: chừng nào giá trị thứ I nhỏ hơn x và I khác 0 thì gán giá trị thứ I vào giá trị i+1 và giảm I đi 1 đơn vị
B24: gán giá trị i+1 bằng x
B25: khởi tạo I bằng 1
B26: in ra màn hình giá trị thứ i
B27: nếu i
- Code:
program p2b18;
var a: array[1..101] of integer;
x,i,n,j,tg,dem :integer;
begin
write('nhap n=');
readln(n);
for i:=1 to n do begin
write('a[',i,']=');
readln(a[i]);
end;
write('in day vua nhap ra man hinh');
for i:=1 to n do writeln('a[',i,']=',a[i]);
write('nhap x=');
readln(x);
dem:=0;
for i:=1 to n do if a[i]= x then dem :=dem+1;
writeln('trong day co so phan tu bang x la:',dem);
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]<a[j] then begin
tg:=a[i];
a[i]:=a[j];
a[j]:=tg;
end;
writeln(' xap xep day giam dan ');
for i:=1 to n do writeln('a[',i,']=',a[i]);
i:=n;
while
(a[i]<x ) and (i<>0)
do begin
a[i+1]:=a[i];
i:=i-1;
end;
a[i+1]:=x;
writeln('in ra man hinh');
for i:=1 to n+1 do writeln('a[',i,']=',a[i]);
readln;
end.
Được sửa bởi khac_tuy ngày 24/5/2010, 4:09 am; sửa lần 1.
Re: Một số bài toán viết bằng ngôn ngữ pascal
Bài 19: Cho một dãy số nguyên gồm n phần tử.
a.Nhập dãy số (n nhập từ bàn phím, 1<=n<=100).
b.In dãy vừa nhập ra màn hình.
c.Nhập vào hai số nguyên x và k (1<=k<=n), chèn số x vào vị trí k của dãy. viết dãy kết qu ra màn hình
Thuật toán:
B1: nhập n
B2: khởi tạo i bằng 1
B3: nhập giá trị thứ i
B4: nếu i B5: khởi tạo I bằng 1
B6: in ra màn hình giá trị thứ i
B7: nếu I B8: nhập x và nhập k
B9: khởi tạo I bằng n
B10: gán giá trị thứ I vào giá trị thứ i+1
B11:nếu i>k thì giảm I đi 1 và quay lại bước 10
B12:gán giá trị thứ k bằng x
B13: khởi tạo I bằng 1
B14: in ra màn hình giá trị thứ i
B15: nếu I
a.Nhập dãy số (n nhập từ bàn phím, 1<=n<=100).
b.In dãy vừa nhập ra màn hình.
c.Đếm xem trong dãy ban đầu có bao nhiêu giá trị khác nhau
d.Nhập vào một số nguyên k (1<=k<=n). xoá phần tử thứ k trong dãy. viết dãy kết quả ra màn hình.
.
Thuật toán:
B1: nhập n
B2: khởi tạo i bằng 1
B3: nhập giá trị thứ i
B4: nếu i B5: khởi tạo I bằng 1
B6: in ra màn hình giá trị thứ i
B7: nếu I B8:Khởi tạo I bằng 2 và đếm bằng 1
B9: gán th bằng đúng, khởi tạo j bằng 1
B10: nếu giá trị thứ I bằng giá trị thứ j thì th được gán bằng sai
B11: nếu j B12: nếu th là đúng thì tăng biến đếm thêm 1
B13: nếu i B14: in ra màn hình biến đếm
B15:nhập k
B16: khởi tạo I bằng k
B17: gán giá trị của i+1 cho giá trị thứ i
B18: nếu i B19: khởi tạo I bằng 1
B20: in ra màn hình giá trị thứ i
B21: nếu i
a.Nhập dãy số (n nhập từ bàn phím, 1<=n<=100).
b.In dãy vừa nhập ra màn hình.
c.Nhập vào hai số nguyên x và k (1<=k<=n), chèn số x vào vị trí k của dãy. viết dãy kết qu ra màn hình
Thuật toán:
B1: nhập n
B2: khởi tạo i bằng 1
B3: nhập giá trị thứ i
B4: nếu i
B6: in ra màn hình giá trị thứ i
B7: nếu I
B9: khởi tạo I bằng n
B10: gán giá trị thứ I vào giá trị thứ i+1
B11:nếu i>k thì giảm I đi 1 và quay lại bước 10
B12:gán giá trị thứ k bằng x
B13: khởi tạo I bằng 1
B14: in ra màn hình giá trị thứ i
B15: nếu I
- Code:
program p1b19;
var a:array[1..101] of integer;
x,k,n,i :integer;
begin
write('nhap n=');
readln(n);
for i:=1 to n do begin
write('a[',i,']=');
readln(a[i]);
end;
writeln(' in dayvua nhap ra man hinh');
for i:=1 to n do writeln('a[',i,']=',a[i]);
write(' nhap x=');
readln(x);
write('nhap k=');
readln(k);
for i:=n downto k do a[i+1]:=a[i];
a[k]:=x;
writeln('in day vuathem ra man hinh');
for i:=1 to n+1 do writeln('a[',i,']=',a[i]);
readln;
end.
a.Nhập dãy số (n nhập từ bàn phím, 1<=n<=100).
b.In dãy vừa nhập ra màn hình.
c.Đếm xem trong dãy ban đầu có bao nhiêu giá trị khác nhau
d.Nhập vào một số nguyên k (1<=k<=n). xoá phần tử thứ k trong dãy. viết dãy kết quả ra màn hình.
.
Thuật toán:
B1: nhập n
B2: khởi tạo i bằng 1
B3: nhập giá trị thứ i
B4: nếu i
B6: in ra màn hình giá trị thứ i
B7: nếu I
B9: gán th bằng đúng, khởi tạo j bằng 1
B10: nếu giá trị thứ I bằng giá trị thứ j thì th được gán bằng sai
B11: nếu j
B13: nếu i
B15:nhập k
B16: khởi tạo I bằng k
B17: gán giá trị của i+1 cho giá trị thứ i
B18: nếu i
B20: in ra màn hình giá trị thứ i
B21: nếu i
- Code:
program p2b20;
var a:array[1..100]of integer;
i,j,n,k,dem:integer;
th:boolean;
begin
write('nhap n=');
readln(n);
for i:=1 to n do begin
write('a[',i,']=');
readln(a[i]);
end;
writeln('in day vua nhap ta man hinh');
for i:=1 to n do writeln('a[',i,']=',a[i]);
dem:=1;
for i:=2 to n do begin
th:=true;
for j:=1 to i-1 do if a[j]=a[i] then th:=false;
if th=true then dem:=dem+1;
end;
writeln('so gia tri khac nhau la:',dem);
write('nhap k=');
readln(k);
for i:=k to n-1 do a[i]:=a[i+1];
writeln('in day vua xoa ra man hinh');
for i:=1 to n-1 do writeln('a[',i,']=',a[i]);
readln;
end.
Được sửa bởi khac_tuy ngày 24/5/2010, 4:10 am; sửa lần 1.
Re: Một số bài toán viết bằng ngôn ngữ pascal
Bài 21: Một dãy số Fibonacci được định nghĩa như sau: f1=f2=1, fn=fn-1+fn-2 với mọi n>=3.
a.Nhập vào một số nguyên dương n, in ra màn hình fn.
b.Nhập vào một số nguyên dương k, cho biết k có là một phẩn tử của dãy Fibonaci hay không?
c.Nhập vào một số nguyên dương k, phân tích k thành tổng ít nhất các số là các phần tử của dãy Fibonacci. Ví dụ; k=16 thì: 16=13+2+1
Thuật toán:
B1: nhập n
B2: nếu n=1 hoặc bằng 2 thì gán fn bằng 1 và chuyển tới bước 6
B3: gán f1 bằng 1, f2 bằng 1, khởi tạo I bằng 0
B4: tăng I lên 1, gán fn bằng f1 cộng f2, gán f1 bằng f2, f2 bằng fn
B5: nếu I khác n-2 thì quay lại bước 4
B6; in ra fn
B7: nhập k
B8: nếu k=1 thì chuyển tới bước 13
B9: gán f1 bằng 1, f2 bằng 1,
B10: fn gán bằng f1 cộng f2,f1 gán bằng f2, f2 gán bằng fn
B11:nếu fn < k thì quay lại bước 10
B12: nếu fn khác k thì in ra k không là phần tử của dãy
B13: k là phần tử của dãy
a.Nhập vào một số nguyên dương n, in ra màn hình fn.
b.Nhập vào một số nguyên dương k, cho biết k có là một phẩn tử của dãy Fibonaci hay không?
c.Nhập vào một số nguyên dương k, phân tích k thành tổng ít nhất các số là các phần tử của dãy Fibonacci. Ví dụ; k=16 thì: 16=13+2+1
Thuật toán:
B1: nhập n
B2: nếu n=1 hoặc bằng 2 thì gán fn bằng 1 và chuyển tới bước 6
B3: gán f1 bằng 1, f2 bằng 1, khởi tạo I bằng 0
B4: tăng I lên 1, gán fn bằng f1 cộng f2, gán f1 bằng f2, f2 bằng fn
B5: nếu I khác n-2 thì quay lại bước 4
B6; in ra fn
B7: nhập k
B8: nếu k=1 thì chuyển tới bước 13
B9: gán f1 bằng 1, f2 bằng 1,
B10: fn gán bằng f1 cộng f2,f1 gán bằng f2, f2 gán bằng fn
B11:nếu fn < k thì quay lại bước 10
B12: nếu fn khác k thì in ra k không là phần tử của dãy
B13: k là phần tử của dãy
- Code:
program p2b21;
var n,k,m:integer;
function fibonacci(var n:integer): integer;
var i, f1, f2, fn : integer;
begin
if(( n=1) or( n=2)) then fn:=1 else begin
f1:=1;
f2:=1;
i:=0;
repeat
i:=i+1;
fn:=f1 +f2;
f1:=f2;
f2:=fn;
until i = (n-2);
end;
fibonacci:=fn;
end;
procedure kiemtra( var k: integer);
var fn,f1,f2:integer;
begin
f1:=1;
f2:=1;
if k=1 then writeln('k la 1 phan tu cua day fibonacci');
repeat
fn:=f1+f2;
f1:=f2;
f2:=fn;
until fn >=k;
if k=fn then writeln('k la 1 phan tu cua day fibonacci')
else writeln('k khong la phan tu cua day fibonacci');
end;
procedure phantich( var m:integer);
var f1,f2,fn,phantich:integer;
begin
f1:=1;
f2:=1;
repeat
fn:=f1+f2;
f1:=f2;
f2:=fn;
until fn >=m;
if fn=n then writeln('m=',fn) else
begin
write('m=',f1);
phantich:=f1;
while
phantich < m
do begin
repeat
fn:=f1+f2;
f1:=f2;
f2:=fn;
until ((fn + phantich) <m) or ((f1 +phantich)>m);
phantich:=phantich+f1;
end;
write('+',f1);
end;
end;
begin
write('nhap n=');
readln(n);
writeln('f(n)=',fibonacci(n));
write('nhap so k=');
readln(k);
kiemtra(k);
write('nhap m=');
readln(m);
phantich(m);
readln;
end.
Được sửa bởi khac_tuy ngày 24/5/2010, 4:10 am; sửa lần 1.
Re: Một số bài toán viết bằng ngôn ngữ pascal
Bài 22: Cho một ma trận số nguyên gồm m dòng, n cột (mng 2 chiều)
a.Nhập ma trận số (m,n nhập từ bàn phím, 1<=m,n<=50).
b.In ma trận ra màn hình.
c.Tìm giá trị lớn nhất, nhỏ nhất.
Thuật toán:
B1: Nhập m,n
B2: khởi tạo I bằng 1
B3: khởi tạo j bằng 1
B4: nhập giá trị cho dòng I cột j
B5: nếu j B6: nếu i B7: khởi tạo I bằng 1
B8: khởi tạo j bằng 1
B9: in giá trị dòng I cột j
B10: nếu j B11: nếu i B12: khởi tạo I bằng 1, gán max bằng giá trị dòng 1 cột 1
B13: khởi tạo j bằng 1
B14: nếu max nhỏ hơn giá trị dòng I cột j thì gán max bằng giá trị của dòng I cột j
B15: nếu j B16: nếu i B17: khởi tạo I bằng 1, gán min bằng giá trị dòng 1 cột 1
B18: khởi tạo j bằng 1
B19: nếu min lớn hơn giá trị dòng I cột j thì gán min bằng giá trị của dòng I cột j
B20: nếu j B21: nếu i B22: in ra max, min
Code:
a.Nhập ma trận số (m,n nhập từ bàn phím, 1<=m,n<=50).
b.In ma trận ra màn hình.
cIn ma trận chuyển vị.
d.Tính định thức của ma trận.
Thuật toán:
B1: Nhập m,n
B2: khởi tạo I bằng 1
B3: khởi tạo j bằng 1
B4: nhập giá trị cho dòng I cột j
B5: nếu j B6: nếu i B7: khởi tạo I bằng 1
B8: khởi tạo j bằng 1
B9: in giá trị dòng I cột j
B10: nếu j B11: nếu i B12: khởi tạo I bằng 1
B13: khởi tạo j bằng 1
B14: in giá trị dòng I cột j
B15: nếu j B16: nếu i Code:
a.Nhập ma trận số (m,n nhập từ bàn phím, 1<=m,n<=50).
b.In ma trận ra màn hình.
c.Tìm giá trị lớn nhất, nhỏ nhất.
Thuật toán:
B1: Nhập m,n
B2: khởi tạo I bằng 1
B3: khởi tạo j bằng 1
B4: nhập giá trị cho dòng I cột j
B5: nếu j
B8: khởi tạo j bằng 1
B9: in giá trị dòng I cột j
B10: nếu j
B13: khởi tạo j bằng 1
B14: nếu max nhỏ hơn giá trị dòng I cột j thì gán max bằng giá trị của dòng I cột j
B15: nếu j
B18: khởi tạo j bằng 1
B19: nếu min lớn hơn giá trị dòng I cột j thì gán min bằng giá trị của dòng I cột j
B20: nếu j
Code:
- Code:
program p2b22;
var a:array[1..50,1..50] of integer ;
i,j,max,min,m,n:integer;
begin
write('nhap so dong m=');
readln(m);
write('nhap so cot n=');
readln(n);
for i:=1 to n do
for j:=1 to m do begin
write('a[',i,',',j,']=');
readln(a[i,j]);
end;
writeln('in ma tran ra man hinh');
for i:=1 to n do begin
for j:=1 to m do write(' ',a[i,j]:5);
writeln;
writeln;
end;
min:=a[1,1];
max:=a[1,1];
for i:=1 to n do
for j:=1 to m do begin
if max <a[i,j] then max:= a[i,j];
if min >a[i,j] then min:= a[i,j];
end;
writeln('max=',max);
writeln('min=',min);
readln;
end.
a.Nhập ma trận số (m,n nhập từ bàn phím, 1<=m,n<=50).
b.In ma trận ra màn hình.
cIn ma trận chuyển vị.
d.Tính định thức của ma trận.
Thuật toán:
B1: Nhập m,n
B2: khởi tạo I bằng 1
B3: khởi tạo j bằng 1
B4: nhập giá trị cho dòng I cột j
B5: nếu j
B8: khởi tạo j bằng 1
B9: in giá trị dòng I cột j
B10: nếu j
B13: khởi tạo j bằng 1
B14: in giá trị dòng I cột j
B15: nếu j
- Code:
program p1b23;
type arr=array[1..50,1..50]of integer;
var a:array[1..50,1..50] of integer;
b:array[1..50] of integer;
i,j,m,n:integer;
function dtc3(var a:arr ):integer;
var s:integer;
begin
s:=a[1,1]*a[2,2]*a[3,3]+a[1,3]*a[2,1]*a[3,2]+a[3,1]*a[1,2]*a[2,3];
s:=s-(a[1,3]*a[2,2]*a[3,1]+a[1,1]*a[3,2]*a[2,3]+a[3,3]*a[2,1]*a[1,2]);
dtc3:=s;
end;
begin
write('so dong la m=');
readln(n);
write('so cot la n=');
readln(m);
for i:=1 to m do
for j:=1 to n do begin
write('a[',i,',',j,']=');
readln(a[i,j]);
end;
writeln('in day vua nhap ra man hinh');
for i:=1 to m do begin
for j:=1 to n do write(' ',a[i,j]:5);
writeln;
writeln;
end;
writeln('in ma tran chuyen vi len man hinh');
for j:=1 to n do begin
for i:=1 to m do write(' ',a[i,j]:5);
writeln;
writeln;
end;
writeln('tinh dinh thuc');
readln;
end.
Được sửa bởi khac_tuy ngày 24/5/2010, 4:11 am; sửa lần 1.
Re: Một số bài toán viết bằng ngôn ngữ pascal
Bài 24: Cho một ma trận số nguyên gồm m dòng, n cột (mng 2 chiều)
a.Nhập ma trận số (m,n nhập từ bàn phím, 1<=m,n<=50).
b.In ma trận ra màn hình.
c.Nhập vào một số nguyên x, đưa ra toạ độ (dòng, cột) của những phần tử có giá trị bằng x. cho biết có bao nhiêu phần tử bằng x?
Thuật toán:
B1: Nhập m,n
B2: khởi tạo I bằng 1
B3: khởi tạo j bằng 1
B4: nhập giá trị cho dòng I cột j
B5: nếu j<n thì tằng j thêm 1 và quay lại bước 4
B6: nếu i<m thì tăng I thêm 1 và quay lại bước 3
B7: khởi tạo I bằng 1
B8: khởi tạo j bằng 1
B9: in giá trị dòng I cột j
B10: nếu j<n thì tằng j thêm 1 và quay lại bước 9
B11: nếu i<m thì tăng I thêm 1 và quay lại bước 10
B12: nhập x
B13: khởi tạo I bằng 1 và gán đếm bằng 0
B14: khởi tạo j bằng 1
B15: nếu x bằng giá trị phần tử dòng I cột j thì in ra I,j và tăng biến đếm lên 1
B16: nếu j<n thì tằng j thêm 1 và quay lại bước 15
B17: nếu i<m thì tăng I thêm 1 và quay lại bước 14
B18: in ra giá trị biến đếm
Code:
Bài 25: Cho 2 ma trận số nguyên A và B gồm m dòng, n cột (mng 2 chiều)
a.Nhập hai ma trận số (m,n nhập từ bàn phím, 1<=m,n<=50).
b.In từng ma trận ra màn hình.
c.In ma trận tổng C=A+B ra màn hình. Ma trận tổng C là ma trận mà mỗi phần tử Cij=Aij+ Bij
d.Với giả thiết m=n, in ma trận tích C=A*B ra màn hình. Mỗi phần tử (i,j) của ma trận C được tính theo công thức:
Thuật toán:
B1: Nhập m,n
B2: khởi tạo I bằng 1
B3: khởi tạo j bằng 1
B4: nhập giá trị cho dòng I cột j(nhập ma trận A)
B5: nếu j<n thì tằng j thêm 1 và quay lại bước 4
B6: nếu i<m thì tăng I thêm 1 và quay lại bước 3
B7: khởi tạo I bằng 1
B8: khởi tạo j bằng 1
B9: nhập giá trị cho dòng I cột j(nhập ma trận B)
B10: nếu j<n thì tằng j thêm 1 và quay lại bước 9
B11: nếu i<m thì tăng I thêm 1 và quay lại bước 8
B12: khởi tạo I bằng 1
B13: khởi tạo j bằng 1
B14: in giá trị dòng I cột j( in ma trận A)
B15: nếu j<n thì tằng j thêm 1 và quay lại bước 14
B16: nếu i<m thì tăng I thêm 1 và quay lại bước 13
B17: khởi tạo I bằng 1
B18: khởi tạo j bằng 1
B19: in giá trị dòng I cột j(in ma trận B)
B20: nếu j<n thì tằng j thêm 1 và quay lại bước 19
B21: nếu i<m thì tăng I thêm 1 và quay lại bước 18
B22: khởi tạo I bằng 1
B23: khởi tạo j bằng 1
B24: gán giá trị tương ướng của ma trận C bằng ma trận A cộng ma trận B
B25: nếu j<n thì tằng j thêm 1 và quay lại bước 24
B26: nếu i<m thì tăng I thêm 1 và quay lại bước 23
B27: khởi tạo I bằng 1
B28: khởi tạo j bằng 1
B29: in giá trị dòng I cột j(in ma trận C)
B30: nếu j<n thì tằng j thêm 1 và quay lại bước 29
B31: nếu i<m thì tăng I thêm 1 và quay lại bước 28
B32: khởi tạo I bằng 1
B33: khởi tạo j bằng 1
B34: gán giá trị D(I,j) bằng 0,khởi tạo k bằng 1
B35: gán giá trị D(I,j) bằng D(I,j) cộng với A(I,k) nhân B(k,j)
B36: nếu k<n thì tăng k thêm 1 và quay lại bước 35
B37: nếu j<n thì tằng j thêm 1 và quay lại bước 34
B38: nếu i<n thì tăng I thêm 1 và quay lại bước 33
B39: khởi tạo I bằng 1
B40: khởi tạo j bằng 1
B41: in giá trị dòng I cột j(in ma trận D)
B42: nếu j<n thì tằng j thêm 1 và quay lại bước 41
B43: nếu i<m thì tăng I thêm 1 và quay lại bước 40
a.Nhập ma trận số (m,n nhập từ bàn phím, 1<=m,n<=50).
b.In ma trận ra màn hình.
c.Nhập vào một số nguyên x, đưa ra toạ độ (dòng, cột) của những phần tử có giá trị bằng x. cho biết có bao nhiêu phần tử bằng x?
Thuật toán:
B1: Nhập m,n
B2: khởi tạo I bằng 1
B3: khởi tạo j bằng 1
B4: nhập giá trị cho dòng I cột j
B5: nếu j<n thì tằng j thêm 1 và quay lại bước 4
B6: nếu i<m thì tăng I thêm 1 và quay lại bước 3
B7: khởi tạo I bằng 1
B8: khởi tạo j bằng 1
B9: in giá trị dòng I cột j
B10: nếu j<n thì tằng j thêm 1 và quay lại bước 9
B11: nếu i<m thì tăng I thêm 1 và quay lại bước 10
B12: nhập x
B13: khởi tạo I bằng 1 và gán đếm bằng 0
B14: khởi tạo j bằng 1
B15: nếu x bằng giá trị phần tử dòng I cột j thì in ra I,j và tăng biến đếm lên 1
B16: nếu j<n thì tằng j thêm 1 và quay lại bước 15
B17: nếu i<m thì tăng I thêm 1 và quay lại bước 14
B18: in ra giá trị biến đếm
Code:
- Code:
program p2b24;
var a:array[1..50,1..50] of integer;
j,i,dem,n,m,x:integer;
begin
write('so dong m=');
readln(m);
write('so cot n=');
readln(n);
for i:=1 to m do
for j:=1 to n do begin
write('a[',i,',',j,']=');
readln(a[i,j]);
end;
writeln('in ma tran vua nhap ra man hinh');
for i:=1 to m do begin
for j:=1 to n do write(' ',a[i,j]:5);
writeln;
writeln;
end;
write('nhap x=');
readln(x);
dem:=0;
writeln('tao do cac phan tu trong mang bang` x la:');
for i:=1 to m do
for j:=1 to n do if a[i,j]=x then begin
write('(',i,',',j,')');
dem:=dem+1;
end;
writeln;
writeln('so phan tu bang x la:',dem);
readln;
end.
Bài 25: Cho 2 ma trận số nguyên A và B gồm m dòng, n cột (mng 2 chiều)
a.Nhập hai ma trận số (m,n nhập từ bàn phím, 1<=m,n<=50).
b.In từng ma trận ra màn hình.
c.In ma trận tổng C=A+B ra màn hình. Ma trận tổng C là ma trận mà mỗi phần tử Cij=Aij+ Bij
d.Với giả thiết m=n, in ma trận tích C=A*B ra màn hình. Mỗi phần tử (i,j) của ma trận C được tính theo công thức:
Thuật toán:
B1: Nhập m,n
B2: khởi tạo I bằng 1
B3: khởi tạo j bằng 1
B4: nhập giá trị cho dòng I cột j(nhập ma trận A)
B5: nếu j<n thì tằng j thêm 1 và quay lại bước 4
B6: nếu i<m thì tăng I thêm 1 và quay lại bước 3
B7: khởi tạo I bằng 1
B8: khởi tạo j bằng 1
B9: nhập giá trị cho dòng I cột j(nhập ma trận B)
B10: nếu j<n thì tằng j thêm 1 và quay lại bước 9
B11: nếu i<m thì tăng I thêm 1 và quay lại bước 8
B12: khởi tạo I bằng 1
B13: khởi tạo j bằng 1
B14: in giá trị dòng I cột j( in ma trận A)
B15: nếu j<n thì tằng j thêm 1 và quay lại bước 14
B16: nếu i<m thì tăng I thêm 1 và quay lại bước 13
B17: khởi tạo I bằng 1
B18: khởi tạo j bằng 1
B19: in giá trị dòng I cột j(in ma trận B)
B20: nếu j<n thì tằng j thêm 1 và quay lại bước 19
B21: nếu i<m thì tăng I thêm 1 và quay lại bước 18
B22: khởi tạo I bằng 1
B23: khởi tạo j bằng 1
B24: gán giá trị tương ướng của ma trận C bằng ma trận A cộng ma trận B
B25: nếu j<n thì tằng j thêm 1 và quay lại bước 24
B26: nếu i<m thì tăng I thêm 1 và quay lại bước 23
B27: khởi tạo I bằng 1
B28: khởi tạo j bằng 1
B29: in giá trị dòng I cột j(in ma trận C)
B30: nếu j<n thì tằng j thêm 1 và quay lại bước 29
B31: nếu i<m thì tăng I thêm 1 và quay lại bước 28
B32: khởi tạo I bằng 1
B33: khởi tạo j bằng 1
B34: gán giá trị D(I,j) bằng 0,khởi tạo k bằng 1
B35: gán giá trị D(I,j) bằng D(I,j) cộng với A(I,k) nhân B(k,j)
B36: nếu k<n thì tăng k thêm 1 và quay lại bước 35
B37: nếu j<n thì tằng j thêm 1 và quay lại bước 34
B38: nếu i<n thì tăng I thêm 1 và quay lại bước 33
B39: khởi tạo I bằng 1
B40: khởi tạo j bằng 1
B41: in giá trị dòng I cột j(in ma trận D)
B42: nếu j<n thì tằng j thêm 1 và quay lại bước 41
B43: nếu i<m thì tăng I thêm 1 và quay lại bước 40
- Code:
program p2b25;
var a,b,c,d:array[1..50,1..50] of integer;
j,i,k,dem,n,m,x:integer;
begin
write('so dong m=');
readln(m);
write('so cot n=');
readln(n);
for i:=1 to m do
for j:=1 to n do begin
write('a[',i,',',j,']=');
readln(a[i,j]);
end;
for i:=1 to m do
for j:=1 to n do begin
write('b[',i,',',j,']=');
readln(b[i,j]);
end;
writeln('in ma tran a vua nhap ra man hinh');
for i:=1 to m do begin
for j:=1 to n do write(' ',a[i,j]:5);
writeln;
writeln;
end;
writeln('in ma tran b vua nhap ra man hinh');
for i:=1 to m do begin
for j:=1 to n do write(' ',b[i,j]:5);
writeln;
writeln;
end;
writeln('ma tran c la ma tran tong cua ma tran a va ma tran b');
for i:=1 to m do
for j:=1 to n do c[i,j]:=a[i,j]+b[i,j];
writeln('in ma tran c vua nhap ra man hinh');
for i:=1 to m do begin
for j:=1 to n do write(' ',c[i,j]:5);
writeln;
writeln;
end;
writeln(' gia su m=n, ma tran d la tich cua ma tran a va ma tran b');
for i:=1 to n do
for j:=1 to n do
begin
d[i,j]:=0;
for k:=1 to n do
d[i,j]:=d[i,j]+a[i,k]*b[k,j];
end;
writeln('in ma tran d vua nhap ra man hinh');
for i:=1 to m do begin
for j:=1 to n do write(' ',d[i,j]:5);
writeln;
writeln;
end;
readln;
end.
Được sửa bởi khac_tuy ngày 24/5/2010, 4:11 am; sửa lần 1.
Re: Một số bài toán viết bằng ngôn ngữ pascal
Bài 30: Nhập vào một xâu ký tự (gi thiết xâu nhập vào chỉ chứa các chữ cái, chữ số hoặc dấu cách), đếm xem trong xâu có bao nhiêu từ. Một từ là một dy ký tự không chứa dấu cách (hai từ cách nhau bởi ít nhất một dấu cách).
Thuật toán:
B1: Nhập xâu x
B2: nếu kí tự đầu tiên của xâu là dấu cách thì gán đếm bằng 0 chuyển tới bước 4
B3: đếm được gán bằng 1
B4: khởi tạo I bằng 1
B5: nếu kí tự thứ I là dấu cách và kí tự thứ i+1 khác dấu cách thì dêm được gán bằng đếm +1
B6: in ra biến đếm
Code:
Bài 31: Nhập vào một xâu ký tự, đếm xem trong xâu có bao nhiêu ký tự khác nhau (không phân biệt chữ thường, chữ hoa). In ra màn hình số ký tự khác nhau tìm được và mỗi loại ký tự xuất hiện bao nhiêu lần trong xâu?
Thuật toán:
B1: Nhập xâu x
B2: nếu kí tự đầu tiên của xâu là dấu cách thì gán đếm bằng 0 chuyển tới bước 4
B3: đếm được gán bằng 1
B4: khởi tạo I bằng 1
B5: nếu kí tự thứ I là dấu cách và kí tự thứ i+1 khác dấu cách thì dêm được gán bằng đếm +1
B6: in ra biến đếm
Code:
- Code:
program p3b30;
var x:string;
i, dem:integer;
begin
write('nhap xau ki tu x:');
readln(x);
if x[1] =' ' then dem :=0 else dem:=1;
for i:=1 to length(x)-1 do
if (x[i]=' ') and (x[i+1]<>' ') then dem:=dem+1;
write('xau co so tu la:',dem);
readln;
end.
Bài 31: Nhập vào một xâu ký tự, đếm xem trong xâu có bao nhiêu ký tự khác nhau (không phân biệt chữ thường, chữ hoa). In ra màn hình số ký tự khác nhau tìm được và mỗi loại ký tự xuất hiện bao nhiêu lần trong xâu?
- Code:
program p3b31;
var x,a,b:string;
i,j,dem:integer;
th:boolean;
function bienxau(var x: string):string;
begin
for i:=1 to length(x) do
if (ord(x[i]) >96) and (ord(x[i])<123) then x[i]:=upcase(x[i]);
bienxau:=x;
end;
begin
write('nhap xau x:');
readln(x);
dem:=0;
a:=x;
writeln(bienxau(x));
x:=bienxau(x);
for i:=1 to length(x) do begin
th:=true;
for j:=1 to i-1 do
if x[j] = x[i] then th:=false;
if th=true then dem:=dem+1;
end;
writeln('so ki tu khac nhau khong phan biet hoa thuong la:',dem);
x:=a;
for i:=1 to length(a) do
for j:=i+1 to length(a) do if a[j]=a[i] then delete(a,j,1);
writeln(a);
for i:=1 to length(a) do begin
dem:=0;
for j:=1 to length(x) do
if x[j] = a[i] then dem:=dem+1;
writeln('ki tu "',a[i],'" xuat hien ',dem,' lan');
end;
readln;
end.
Được sửa bởi khac_tuy ngày 24/5/2010, 4:03 am; sửa lần 1.
Re: Một số bài toán viết bằng ngôn ngữ pascal
Bài 32: Nhập vào một xâu ký tự, đếm xem trong xâu có bao nhiêu ký tự khác nhau (cần phân biệt chữ thường, chữ hoa). In ra màn hình số ký tự khác nhau tìm được và mỗi loại ký tự xuất hiện bao nhiêu lần trong xâu?
Bài 34: thông tin mỗi học sinh gồm:
-họ tên
-ngày, tháng, năm sinh
-điểm trung bình học tập
a.hãy nhập các thông tin của một lớp gồm n học sinh (1<=n<=60)
b.In danh sách học sinh gồm những thông tin vừa nhập ra màn hình theo dạng cột (thông y=tin mỗi học sinh trên một dòng).
c.Cho biết thông tin của học sinh có điểm trung bình cao nhất.
- Code:
program p3b32;
var x,a,b:string;
i,j,dem:integer;
th:boolean;
begin
write('nhap xau x:');
readln(x);
dem:=0;
a:=x;
for i:=1 to length(x) do begin
th:=true;
for j:=1 to i-1 do
if x[j] = x[i] then th:=false;
if th=true then dem:=dem+1;
end;
writeln('so ki tu khac nhau co phan biet hoa thuong la:',dem);
x:=a;
for i:=1 to length(a) do
for j:=i+1 to length(a) do if a[j]=a[i] then delete(a,j,1);
writeln(a);
for i:=1 to length(a) do begin
dem:=0;
for j:=1 to length(x) do
if x[j] = a[i] then dem:=dem+1;
writeln('ki tu "',a[i],'" xuat hien ',dem,' lan');
end;
readln;
end.
Bài 34: thông tin mỗi học sinh gồm:
-họ tên
-ngày, tháng, năm sinh
-điểm trung bình học tập
a.hãy nhập các thông tin của một lớp gồm n học sinh (1<=n<=60)
b.In danh sách học sinh gồm những thông tin vừa nhập ra màn hình theo dạng cột (thông y=tin mỗi học sinh trên một dòng).
c.Cho biết thông tin của học sinh có điểm trung bình cao nhất.
- Code:
program p4b34;
type
hoc_sinh=record
hoten:string[20];
ngaysinh:string[10] ;
diem_tb:real;
end;
var a: array[1..60] of hoc_sinh;
n,i:integer;
hs_diemtb_max:hoc_sinh;
begin
write('nhap so hoc sinh n=');
readln(n);
for i:=1 to n do
begin
writeln('nhap hoc sinh thu:',i);
Write('nhap ho ten:');
readln(a[i].hoten);
write('nhap ngay sinh:');
readln(a[i].ngaysinh);
write('nhap diem trung binh:');
readln(a[i].diem_tb);
end;
writeln('danh sach hoc sinh vua nhap la:');
for i:=1 to n do
writeln('Ho ten:',a[i].hoten:20,' Ngay sinh:',a[i].ngaysinh:10,' Diem tb:',a[i].diem_tb:2:1);
hs_diemtb_max:=a[1];
for i:=1 to n do
if hs_diemtb_max.diem_tb < a[i].diem_tb then hs_diemtb_max:=a[i];
writeln('hoc sinh co diem trung binh cao nhat la:');
writeln('Ho ten:',hs_diemtb_max.hoten:20,' Ngay sinh:',hs_diemtb_max.ngaysinh:10,' Diem tb:',hs_diemtb_max.diem_tb:2:1);
readln;
end.
Được sửa bởi khac_tuy ngày 24/5/2010, 4:04 am; sửa lần 1.
Re: Một số bài toán viết bằng ngôn ngữ pascal
Bài 35: Thông tin mỗi loại sách trong một thư viện gồm:
-Tên sách
-Tên tác giả
-Giá mua
-Số lượng sách
a.Hãy nhập các thông tin sách của một thư viện. Quá trình nhập sẽ kết thúc khi tên sách nhập là một xâu rỗng (hoặc chỉ chứa các dấu cách).
b.Đưa danh sách các cuốn sách trong thư viện ra màn hình theo dạng cột.
c.Nhập vào tên một cuốn sách, đưa ra màn hình thông tin về cuốn sách đó theo dạng cột gồm: tên sách, tên tác giả, số lượng sách đó và giá một cuốn. Nếu không có cuốn sách nào có tên như vừa nhập thì cần đưa ra thông báo “ Không có”.
-Tên sách
-Tên tác giả
-Giá mua
-Số lượng sách
a.Hãy nhập các thông tin sách của một thư viện. Quá trình nhập sẽ kết thúc khi tên sách nhập là một xâu rỗng (hoặc chỉ chứa các dấu cách).
b.Đưa danh sách các cuốn sách trong thư viện ra màn hình theo dạng cột.
c.Nhập vào tên một cuốn sách, đưa ra màn hình thông tin về cuốn sách đó theo dạng cột gồm: tên sách, tên tác giả, số lượng sách đó và giá một cuốn. Nếu không có cuốn sách nào có tên như vừa nhập thì cần đưa ra thông báo “ Không có”.
- Code:
program p4b35;
type
sach=record
ten:string[20];
tacgia:string[20] ;
gia:integer;
soluong:integer;
end;
var a: array[1..1000] of sach;
x:string;
n,i,j,k:integer;
th: boolean;
function kiemtra( x:string):string;
begin
kiemtra:='true';
for k:=1 to length(x) do
if x[i]<>' ' then kiemtra:='false';
end;
begin
writeln('nhap thong tin sach:');
i:=0;
repeat
i:=i+1;
writeln('nhap sach thu:',i);
Write('nhap ten sach:');
readln(a[i].ten);
write('nhap ten tac gia:');
readln(a[i].tacgia);
write('nhap gia:');
readln(a[i].gia);
write('nhap so luong:');
readln(a[i].soluong);
until (a[i].ten='') or( kiemtra(a[i].ten) ='true');
writeln('danh sach vua nhap la:');
for j:=1 to i-1 do
writeln('Tensach:',a[j].ten:10,' Tacgia:',a[j].tacgia:10,' Giamua:',a[j].gia:6,' dong soluong:',a[j].soluong:4);
write('nhap ten sach:');
readln(x);
writeln('thong tin ve sach:');
th:=false;
for j:=1 to i-1 do
if x=a[j].ten then begin
writeln('Tensach:',a[j].ten:10,' Tacgia:',a[j].tacgia:10,' Giamua:',a[j].gia:6,' dong soluong:',a[j].soluong:4);
th:=true;
end;
if th=false then writeln(' khong co trong thu vien');
readln;
end.
Được sửa bởi khac_tuy ngày 24/5/2010, 4:04 am; sửa lần 1.
Re: Một số bài toán viết bằng ngôn ngữ pascal
Bài 36: Thông tin mỗi học sinh gồm:
-Họ và tên
-Điểm trung bình các môn học: PASCAL, VB, CSDL, FOXPRO, PTTKHT
a.Hãy nhập các thông tin trên của một lớp gồm n học sinh (1<=n<=60), n nhập từ bàn phím.
b.In danh sách học sinh gồm những thông tin vừa nhập ra màn hình theo dạng cột
c.Nhập vào họ tên của một học sinh, cho biết trong danh sách có bao nhiêu học sinh có tên như vậy?
dNhập vào họ tên của một học sinh, hãy xóa nhưng học sinh có tên như thế khỏi danh sách ban đầu. In danh sách còn lại ra màn hình theo dạng cột.
-Họ và tên
-Điểm trung bình các môn học: PASCAL, VB, CSDL, FOXPRO, PTTKHT
a.Hãy nhập các thông tin trên của một lớp gồm n học sinh (1<=n<=60), n nhập từ bàn phím.
b.In danh sách học sinh gồm những thông tin vừa nhập ra màn hình theo dạng cột
c.Nhập vào họ tên của một học sinh, cho biết trong danh sách có bao nhiêu học sinh có tên như vậy?
dNhập vào họ tên của một học sinh, hãy xóa nhưng học sinh có tên như thế khỏi danh sách ban đầu. In danh sách còn lại ra màn hình theo dạng cột.
- Code:
program p4b36;
type
dtb=record
pascal:real;
vb:real;
csdl:real;
foxpro:real;
pttkht:real;
end;
hoc_sinh=record
hoten:string[20];
diem_tb:dtb;
end;
var a: array[1..60] of hoc_sinh;
n,dem,i:integer;
x,y:string;
begin
write('nhap so hoc sinh n=');
readln(n);
for i:=1 to n do
begin
writeln('nhap hoc sinh thu:',i);
Write('nhap ho ten:');
readln(a[i].hoten);
write('diem pascal:');
readln(a[i].diem_tb.pascal);
write('diem vb:');
readln(a[i].diem_tb.vb);
write('diem csld:');
readln(a[i].diem_tb.csdl);
write('diem foxpro:');
readln(a[i].diem_tb.foxpro);
write('diem pttkht:');
readln(a[i].diem_tb.pttkht);
end;
writeln('danh sach hoc sinh vua nhap la:');
write(' Ho ten diem_pascal diem_vb diem_csdl diem_foxpro diem_pttkht');
for i:=1 to n do begin
write(a[i].hoten:23,a[i].diem_tb.pascal:9:2,a[i].diem_tb.vb:9:2,a[i].diem_tb.csdl:11:2);
writeln(a[i].diem_tb.foxpro:13:1,a[i].diem_tb.pttkht:15:1);
end;
write('nhap ho ten 1 hoc sinh:');
readln(x);
dem:=0;
for i:=1 to n do
if a[i].hoten =x then dem:=dem+1;
writeln('so hoc sinh co ten nhu tren la:',dem);
write('nhap ho ten 1 hoc sinh:');
readln(y);
for i:=1 to n do
if a[i].hoten=y then a[i]:=a[i+1];
writeln('danh sach hoc sinh vua nhap la:');
write(' Ho ten diem_pascal diem_vb diem_csdl diem_foxpro diem_pttkht');
for i:=1 to n do begin
write(a[i].hoten:23,a[i].diem_tb.pascal:9:2,a[i].diem_tb.vb:9:2,a[i].diem_tb.csdl:11:2);
writeln(a[i].diem_tb.foxpro:13:1,a[i].diem_tb.pttkht:15:1);
end;
readln;
end.
Similar topics
» Sự liên hệ giữa bài toán LCA và bài toán RMQ
» PM lập trình Pascal
» Sửa lỗi chia zero 200 của pascal 7.0
» Phần bổ sung chữa lỗi zero của pascal
» he toan phim dom a.vo day download toan phim HAY ne.
» PM lập trình Pascal
» Sửa lỗi chia zero 200 của pascal 7.0
» Phần bổ sung chữa lỗi zero của pascal
» he toan phim dom a.vo day download toan phim HAY ne.
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết