Bài Tập Pascal |
Viết chương trình nhập vào dãy số nguyên có n phần tử (1≤n≤30), đưa ra màn hình dãy số vừa nhập:
Var A:array[1..30] of integer;
i,n: integer;
Begin
Writeln(‘nhap
n:’);
Readln(n);
Writeln(‘nhap
vao day so gom ‘,n,’ phan tu:’);
For i:=1 to
n do
Begin
Write(‘A[‘,i,’]=’);
Readln(A[i]);
End;
Writeln(‘day so vua nhap la: ’);
For i:=1 to n do write(A[i],’ ‘);
readln
End.
Lưu ý:
-
Chương trình này chỉ đúng khi nhập 1≤n≤30 thôi nhé, nếu
các bạn nhập n nhỏ hơn 1 hay vượt quá 30 thì chương trình sẽ báo lỗi.
-
Đây chỉ là bài
toán cụ thể mình đưa ra, nếu đề bài cho dãy số khác với mình thì các bạn nhớ
khai báo khác nhé. Chẳng hạn, nếu đề bài cho viết chương trình nhập vào dãy số
thực có n phần tử 1≤n≤100 thì các bạn khai báo như sau:
Var
A:array[1..100] of real;
-
i và n lúc nào cũng là kiểu số nguyên.
Nếu bài trên kết hợp với câu tính trung bình cộng các số dương trong dãy số ta làm như sau:
Var A:array[1..30] of integer;
i,n,d: integer;
S:real;
Begin
Writeln(‘nhap
n:’);
Readln(n);
For i:=1 to
n do
Begin
Write(‘A[‘,i,’]=’);
Readln(A[i]);
End;
Writeln(‘day so vua nhap la: ’);
For i:=1 to n do write(A[i],’ ‘);
S:=0;
d:=0;
for i:=1 to n do
if A[i]>0 then
begin
S:=S+A[i];
d:=d+1;
end;
if d=0 then writeln(‘khong co so
duong nao trong day so’)
else writeln(‘TBC=’,S/d);
readln;
End.
Một số bài toán: (sau đây mình chỉ ghi phần tính toán
trong chương trình, còn việc khai báo với nhập n các bạn tự làm nhé, nhớ là tùy
thuộc vào đề bài mà khai báo biến cho chính xác nha)
MỘT SỐ DẠNG BÀI TẬP PASCAL 11 |
Giải:
1) S:=0;
For i:=1 to n do S:=S+i;
Writeln(‘S=’,S);
2) H:=0;
d:= -1;
For i:=1 to n do
Begin
H:=H+d*i;
d:=-d;
end;
writeln(‘H=’,H);
3) T:=0;
For i:=1 to n do T:=T+sqrt(i);
Writeln(‘T=’,T);
4) K:=0;
S:=0;
For i:=1 to n do
Begin
S:=S+i;
K:=
K+sqrt(S);
End;
Writeln(‘K=’,K);
5) M:=0;
For i:=1 to n do M:=M+i/(i+1);
Writeln(‘M=’,M);
6) N:=0;
d:=1;
for i:=1 to n do
begin
N:=N+d*i/(i+1);
d:=-d;
end;
writeln(‘N=’,N);
7) P:=0;
mau:=1;
For i:=1 to n do
Begin
mau:=mau*i;
P:=P+1/mau;
End;
Writeln(‘’P=’,P);
Lưu
ý: khi gặp các bài đan dấu như bài 2 và bài 6 thì các bạn hãy quan sát
số hạng đầu tiên, nếu số hạng đầu tiên dương thì gán d:=1; nếu số hạng đầu tiên
âm thì gán d:= -1;
Sau đây là những
bài kiểm tra tính chất của dãy số vừa nhập. Các bạn tự nhập dãy số vào nhé,
mình chỉ trình bày cách kiểm tra thôi.
1)
Kiểm tra
tính đối xứng của dãy số
d:= n div 2;
i:=1;
while (i<=d)
and (A[i]=A[n-i+1]) do i:=i+1;
if i>d then
writeln(‘day doi xung’) else writeln(‘day khong doi xung’);
2)
Kiểm tra
dãy số có tăng dần hay không
i:=1;
while (i<n)
and (A[i]<=A[i+1]) do i:=i+1;
if i=n then
writeln(‘day so tang’) else writeln(‘day so khong tang’);
3)
Kiểm tra
dãy số có giảm dần hay không
i:=1;
while (i<n)
and (A[i]>=A[i+1]) do i:=i+1;
if i=n then
writeln(‘day so giam’) else writeln(‘day so khong giam’);
Tiếp theo là sắp
xếp dãy số, các bạn cũng tự nhập dãy vào nhé!
1)
Sắp xếp
dãy số theo thứ tự giảm dần
For i:=1 to n-1 do
For k:=1 to n do
If A[i]<A[k] then
Begin
Tam:=A[k];
A[k]:=A[i];
A[i]:=tam;
End;
Writeln(‘mang
A vua sap xep: ‘);
For i:=1 to n do
write(A[i],’ ‘);
2)
Sắp xếp
dãy số theo tứ tự tăng dần
For i:=1 to n-1 do
For k:=1 to n do
If A[i]>A[k] then
Begin
Tam:=A[i];
A[i]:=A[k];
A[k]:=tam;
End;
Writeln(‘mang
A vua sap xep: ‘);
For i:=1 to n do
write(A[i],’ ‘);
3)
Chèn h vào
dãy số và sắp xếp theo thứ tự tăng/giảm dần: để làm bài này thì trước tiên các
bạn cần sắp xếp dãy số ban đầu theo yêu cầu đề bài (tăng dần hay giảm dần) rồi
mới bắt đầu chèn như sau:
● Đối với dãy
giảm dần:
Writeln(‘nhap
h: ‘);
Readln(h);
i:=1;
While (i<=n)
and (A[i]>h) do i:=i+1;
For j:=n+1 downto i do A[j]:=A[j-1];
A[i]:=h;
Writeln(‘mang A:
’);
For i:=1 to n+1 do
write(A[i],’ ‘);
● Đối với dãy tăng dần:
Writeln(‘nhap
h: ‘);
Readln(h);
i:=1;
While (i<=n)
and (A[i]<h) do i:=i+1;
For j:=n+1 downto i do A[j]:=A[j-1];
A[i]:=h;
Writeln(‘mang A:
’);
For i:=1 to n+1 do
write(A[i],’ ‘);
Sau đây là 1 bài
mẫu gồm các câu đã có ở trên, mình chỉ viết lại thành bài hoàn chỉnh thôi nhé
^^!
Viết chương trình nhập
vào n nguyên dương (1≤n≤20)
a)
Tính S=-1+2-3+…+(-1)n.n
b)
Nhập vào mảng
A gồm các số nguyên có n phần tử. In mảng vừa nhập.
c)
Kiểm tra dãy
số có đối xứng hay không
d)
Sắp xếp các
số trong mảng A vừa nhập theo thứ tự giảm dần.
e)
Chèn số h vào
mảng A và sắp xếp theo thứ tự giảm dần.
Giải:
MỘT SỐ DẠNG BÀI TẬP PASCAL 11 |
MỘT SỐ DẠNG BÀI TẬP PASCAL |
BÀI TẬP PASCAL |
Kết quả như sau:
BÀI TẬP PASCAL 11 |
Mỗi bài đều có nhiều cách làm khác nhau, các bạn có thể làm
theo cách khác mình và hay hơn mình, nên có điều gì sai sót trong bài viết trên
mong các bạn góp ý, hay có điều chi thắc mắc thì hãy để lại bình luận nhé! Cảm
ơn vì đã quan tâm đến bài của mình ^^!
Chúc các bạn may mắn! <3
gút
Trả lờiXóaHay lắm bạn, bạn chỉ mình bài này được không :
Trả lờiXóa''kiểm tra dãy tăng hay giảm'' và ''kiểm tra các phần tử của dãy có bằng nhau không''.Cảm ơn bạn trước