SlideShare a Scribd company logo
1 of 41
Download to read offline
0
TP.HCM - Năm 2018
GV: PHẠM THỊ BÍCH TƯỜNG
EMAIL:bichtuong2312@gmail.com
KIỂU DỮ LIỆU CÓ CẤU TRÚC TRONG PASCAL
BÀI TẬP MẢNG
CƠ BẢN & NÂNG CAO
1
MỤC LỤC
BÀI TẬP CƠ BẢN................................................................................................................. 3
Bài tập 1: Viết chương trình tìm giá trị lớn nhất của một mảng chứa các số nguyên gồm
N phần tử. ................................................................................................................................. 3
Bài tập 2: Viết chương trình tính tổng bình phương của các số âm trong một mảng gồm
N phần tử. ................................................................................................................................. 3
Bài tập 3: Viết chương trình nhập vào một mảng gồm N số nguyên. Sắp xếp lại mảng theo
thứ tự tăng dần và in kết quả ra màn hình............................................................................. 4
Bài tập 4: Viết chương trình nhập vào một mảng A gồm N số nguyên và nhập thêm vào
một số nguyên X. Hãy kiểm tra xem phần tử X có trong mảng A hay không?..................... 4
Bài 5: Nhập vào mảng A có N phần tử. Tìm phần tử xuất hiện nhiều nhất trong mảng.... 5
Bài 6: Viết chương trình nhập vào một mảng số nguyên có N phần tử theo thứ tự giảm
dần và số M. Chèn số M vào mảng sao cho mảng vẫn có thứ tự giảm dần. In mảng sau
khi chèn..................................................................................................................................... 7
Bài7: Nhập vào mảng 1 chiều gồm 1 dãy số nguyên N phần tử. Hãy xóa các phần tử trùng
nhau trong mảng và in kết quả ra màn hình.......................................................................... 7
Bài 8: Viết chương trình Kiểm tra số chính phương trong mảng một chiều........................ 9
Bài 10: Viết chương trình nhập vào số nguyên dương N và dãy A gồm N số nguyên A1,
A2,... AN. Hãy sắp xếp dãy số trên sao cho các số chẵn chia hết cho 3 lên đầu.................11
dãy, các số lẻ chia hết cho 3 xuống cuối dãy, các số còn lại ở giữa dãy vẫn giữ được ......11
thứ tự trước khi nhập vào. In ra màn hình dãy trước và sau khi sắp xếp mỗi phần tử.....11
cách nhau một khoảng trắng.................................................................................................11
BÀI 11: Nhập vào một số n (5<=n<=10) và n phần tử của dãy a, 1<ai<100 (có kiểm tra dữ
liệu khi nhập...........................................................................................................................12
a) In ra các phần tử là số nguyên tố của dãy............................................................12
b) Tính ước chung lớn nhất của tất cả các phần tử của dãy. ..................................12
c) Tính biểu thức sau: ...............................................................................................12
d) Sắp xếp dãy tăng dần và in ra dãy sau sắp xếp.....................................................12
BÀI 12: Cho 1 dãy số gồm n phần tử n<=15. Giá trị từng phần tử là số thực. Thực hiện
các chương trình sau: ............................................................................................................16
a) Nhập từ bàn phím số phần tử và giá trị từng phần tử...................................................16
b) Tính tổng các phần tử âm của dãy .................................................................................16
c) Tính tổng và trung bình cộng của các phần tử chẵn của dãy ......................................16
d) Tìm phần tử có giá trị lớn nhất của dãy.........................................................................16
e) Tìm phần tử có giá trị nhỏ nhất......................................................................................16
2
f) Sắp xếp dãy theo chiều giảm dần về giá trị của từng phần tử......................................16
g) In các kết quả trên ra màn hình .....................................................................................16
Bài 14: Viết chương trình mảng một chiều gồm n phần tử n<=100 kiểu nguyên..............23
Bài 15: Nhập họ tên và năm sinh của người và cho biết người này thuộc lứa tuổi nào: sơ
sinh, nhi đồng, thiếu niên, thanh niên, trung niên, người lớn tuổi. Biết rằng:..................29
BÀI TẬP NÂNG CAO.........................................................................................................30
Bài tập 1: DHLOCO spoj ......................................................................................................30
Bài tập 2: Cho trước một dãy số dương có N phần tử. Bạn biết trước tổng của bất kì 2
phần tử nào trong dãy số, hãy tìm dãy số ban đầu. ..............................................................33
Bài tập 3: Một đoạn số có tổng bằng nhau trong một dãy số là một nhóm các số theo đúng
thứ tự ban đầu trong dãy mà nếu nhóm với nhau thì sẽ cho ra cùng một giá trị tổng. .....35
Bài tập 4: BONUS Spoj..........................................................................................................38
3
BÀI TẬP CƠ BẢN
Bài tập 1: Viết chương trình tìm giá trị lớn nhất của một mảng chứa các số nguyên
gồm N phần tử.
Uses Crt;
Type Mang = ARRAY[1..50] Of Integer;
Var A:Mang;
N,i,Max:Integer;
Begin
{Nhập mảng}
Write(‘Nhap N=’); Readln(N);
For i:=1 To N Do
Begin
Write(‘A[‘,i,’]=’); Readln(A[i]);
End;
{Tìm phần tử lớn nhất}
Max:=A[1];
For i:=2 To N Do
If Max<A[i] Then Max:=A[i];
{In kết quả ra màn hình}
Writeln(‘Phan tu lon nhat cua mang: ’, Max);
Readln;
End.
Bài tập 2: Viết chương trình tính tổng bình phương của các số âm trong một mảng gồm
N phần tử.
Uses Crt;
Type Mang = ARRAY[1..50] Of Integer;
Var A:Mang;
N,i,S:Integer;
Begin
Write(‘Nhap N=’); Readln(N);
For i:=1 To N Do
Begin
4
Write(‘A[‘,i,’]=’); Readln(A[i]);
End;
S:=0;
For i:=1 To N Do
If A[i]<0 Then S:=S+A[i]*A[i];
{In kết quả ra màn hình}
Writeln(‘S= ’, S);
Readln;
End.
Bài tập 3: Viết chương trình nhập vào một mảng gồm N số nguyên. Sắp xếp lại mảng
theo thứ tự tăng dần và in kết quả ra màn hình.
Uses Crt;
Type Mang = ARRAY[1..50] Of Integer;
Var A:Mang;
N,i,j,Tam:Integer;
Begin
Write(‘Nhap N=’); Readln(N);
For i:=1 To N Do
Begin
Write(‘A[‘,i,’]=’); Readln(A[i]);
End;
For i:=1 To N-1 Do
For j:=i+1 To N Do
If A[i]>A[j] Then
Begin
Tam:=A[i]; A[i]:=A[j]; A[j]:=Tam;
End;
Writeln(‘Ket qua sau khi sap xep:’);
For i:=1 To N Do Write(A[i]:5);
Readln;
End.
Bài tập 4: Viết chương trình nhập vào một mảng A gồm N số nguyên và nhập thêm vào
một số nguyên X. Hãy kiểm tra xem phần tử X có trong mảng A hay không?
5
Uses Crt;
Type Mang = ARRAY[1..50] Of Integer;
Var A:Mang;
N,i,x:Integer;
Begin
I:=1;
While (I <= N) and (X<>A[I]) do I:=I+1;
If I <= N Then Timkiem:=I Else Timkiem:=0;
End;
Begin
Write(‘Nhap N=’); Readln(N);
For i:=1 To N Do
Begin
Write(‘A[‘,i,’]=’); Readln(A[i]);
End;
Write(‘Nhap X=’); Readln(x);
If TimKiem(X,N,A)<>0 Then
Writeln(‘Vi tri cua X trong mang la:’, TimKiem(X,N,A))
Else Writeln(‘X khong co trong mang.’);
Readln;
End.
Bài 5: Nhập vào mảng A có N phần tử. Tìm phần tử xuất hiện nhiều nhất trong mảng.
Uses crt;
var a,b:array[1..100] of integer;
n,i,j,d,max,k:integer;
begin
write('N=');readln(n);
for i:=1 to n do
6
begin
write('a[',i,']=');readln(a[i]);
end;
for i:=1 to n do
begin
d:=0;
for j:=i to n do
if a[i]=a[j] then inc(d);
if d>max then
begin
max:=d;
b[1]:=a[i];
k:=1;
end
else
if d=max then
begin
inc(k);
b[k]:=a[i];
end;
end;
for i:=1 to k do write(b[i],' ');
readln;
end.
7
Bài 6: Viết chương trình nhập vào một mảng số nguyên có N phần tử theo thứ tự giảm
dần và số M. Chèn số M vào mảng sao cho mảng vẫn có thứ tự giảm dần. In mảng sau
khi chèn.
var a:array[1..100] of integer;
n,m,i,j:integer;
begin
write('N=');readln(n);
for i:=1 to n do
begin
write('a[',i,']=');readln(a[i]);
end;
write('M=');readln(m);
write('Mang sau khi chen: ');
for i:=1 to n do
begin
if (m>=a[i]) and (j=0) then
begin
write(m,' ');
j:=1;
end;
write(a[i],' ');
end;
if j=0 then write(m);
readln;
end.
Bài7: Nhập vào mảng 1 chiều gồm 1 dãy số nguyên N phần tử. Hãy xóa các phần tử trùng
nhau trong mảng và in kết quả ra màn hình.
8
Program Bo_so_trung;
Const
Max=100;
Var
a:Array[1..Max] Of Integer;
i,j,k,n:Integer;
Begin
Writeln('XOA BO CAC SO TRUNG NHAU');
Readln(n);
For i:=1 To N Do
Begin
Write('-Phan tu A[',i,']= ');
Readln(a[i]);
End;
i:=2;
While i <= N Do
Begin
j:=1;
While a[j] <> a[i] Do
j:=j+1;
If j < i Then
Begin
For k:=i to n-1 Do
9
a[k]:= a[k+1];
n:=n-1;
End
Else
i:=i+1;
End;
For i:=1 to n Do
Write(a[i]:8);
Writeln(' Bam phim <Enter> de ket thuc ');
Readln
End.
Bài 8: Viết chương trình Kiểm tra số chính phương trong mảng một chiều.
uses crt;
type ArrInt = array[1..250] of integer;
Var n,i,x : integer;
a: ArrInt;
BEGIN
clrscr;
write('Nhap so phan tu: ');
readln(n);
for i:=1 to n do
begin
write('Phan tu thu ',i,'= ');
readln(a[i]);
end;
writeln('Cac so chinh phuong co trong mang:');
for i:=1 to n do
begin
x:=trunc(sqrt(a[i]));
if sqr(x)=a[i] then
write(a[i]:4);
end;
readln;
END.
10
Bài 9: Viết chương trình nhập số nguyên N (0 < N ≤ 10 000) và mảng a gồm N số
nguyên. Tính và in ra trung bình cộng của các số âm, số dương trong a. Không tính số
0.
Ví dụ : a[] = {1, -6, 0, 3, -1}. Trung bình cộng là -0.75
PROGRAM tbc_am_duong_mang;
USES crt;
VAR a:ARRAY[1..100] OF REAL;
i,n,x,y:INTEGER;
tongam,tongduong,tba,tbd:REAL;
BEGIN
clrscr;
write('So phan tu cua day n= ');readln(n);
FOR i:=1 TO n DO
BEGIN
write('Nhap phan tu a[',i,']: ');
readln(a[i]);
END;
tongam:=0; x:=0;
FOR i:=1 TO n DO
IF a[i]<0 THEN
BEGIN tongam:=tongam+a[i];
x:=x+1;
END;
tba:=tongam/x;
write('TB cong cac so am la: ',tba:5:1);
writeln;
tongduong:=0; y:=0;
FOR i:=1 TO n DO
IF a[i]>0 THEN
BEGIN tongduong:=tongduong+a[i];
y:=y+1;
END;
tbd:=tongduong/y;
write('TB cong cac so duong la: ',tbd:5:1);
readln;
END.
11
Bài 10: Viết chương trình nhập vào số nguyên dương N và dãy A gồm N số nguyên A1,
A2,... AN. Hãy sắp xếp dãy số trên sao cho các số chẵn chia hết cho 3 lên đầu
dãy, các số lẻ chia hết cho 3 xuống cuối dãy, các số còn lại ở giữa dãy vẫn giữ được
thứ tự trước khi nhập vào. In ra màn hình dãy trước và sau khi sắp xếp mỗi phần tử
cách nhau một khoảng trắng
Output: Dãy trước khi sắp xếp: 1 6 5 9 12 3 4 15 7
Dãy sau khi sắp xếp: 6 12 1 5 4 7 9 3 15
Program bai1;
Uses crt;
Var A: array[1..250] of integer;
i, N: integer;
Begin
Clrscr;
Write(‘nhap so luong phan tu N= ‘); readln(N);
For i:= 1 to N do
Begin
Write(‘A[‘,I,‘] = ‘);readln(A[i]);
End;
Writeln(‘Day truoc khi sap xep‘);
For i:= 1 to N do write(A[i], ‘ ‘);
Writeln;
Writeln(‘Day sao khi sap xep‘);
For i:=1 to N do
If (A[i] mod 2=0) and (A[i] mod 3=0) write(A[i], ‘ ‘);
For i:=1 to N do
If ((A[i] mod 2=0) and (A[i] mod 3<>0)) or ((A[i] mod 2<>0) and
(A[i] mod 3<>0)) write(A[i], ‘ ‘);
For i:=1 to N do
If (A[i] mod 2<>0) and (A[i] mod 3=0) write(A[i], ‘ ‘);
12
BÀI 11: Nhập vào một số n (5<=n<=10) và n phần tử của dãy a, 1<ai<100
(có kiểm tra dữ liệu khi nhập.
a) In ra các phần tử là số nguyên tố của dãy.
b) Tính ước chung lớn nhất của tất cả các phần tử của dãy.
c) Tính biểu thức sau:
d) Sắp xếp dãy tăng dần và in ra dãy sau sắp xếp.
HƯỚNG DẪN
Ta nên chia chương trình thành các chương trình con, mỗi chương trình thực hiện một yêu
cầu. Ngoài ra ta cũng viết thêm các hàm kiểm tra nguyên tố, hàm mũ, hàm UCLN để thực hiện
các yêu cầu đó.
Chương trình như sau:
Khai báo dữ liệu:
uses crt;
var n : integer;
a : array[1..10] of integer; {n<=10 nên mảng có tối đa 10 phần tử}
Thủ tục nhập dữ liệu, có kiểm tra khi nhập.
procedure nhap;
var i : integer;
begin
clrscr;
write('NHAP VAO SO PHAN TU N = ');
repeat
readln(n);
if (5<=n) and (n<=10) then break; {nếu thoã mãn thì dừng vòng lặp}
writeln('Khong hop le (5<=n<=10). Nhap lai!!!'); {ngược lại thì báo lỗi}
until false;
writeln('NHAP VAO N PHAN TU (1<ai<100)');
13
for i := 1 to n do begin
write('a',i,'=');
repeat
readln(a[i]);
if (1<a[i]) and (a[i]<100) then break;
writeln('Khong hop le. Nhap lai!!!');
until false;
end;
end;
function ngto(n : integer): boolean; {hàm kiểm tra nguyên tố, xem giải thích ở phần trên}
var i : integer;
begin
ngto := false;
if n < 2 then exit;
for i := 2 to round(sqrt(n)) do
if n mod i = 0 then exit;
ngto := true;
end;
Thủ tục in các số nguyên tố của một mảng
procedure inngto;
var i :integer;
begin
writeln('CAC PHAN TU NGUYEN TO TRONG DAY:');
for i := 1 to n do {duyệt qua mọi phần tử từ 1 đến n}
14
if ngto(a[i]) then writeln(a[i]); {nếu ai là nguyên tố thì in ra}
end;
function UCLN(a,b: integer): integer;
var r : integer;
begin
while b<>0 do begin
r := a mod b;
a := b;
b := r;
end;
UCLN := a;
end;
Thủ tục tính UCLN của các phần tử của một mảng
procedure TinhUC;
var i,u : integer;
begin
u := a[1]; {u là UCLN của các phần tử từ 1 đến i}
for i := 2 to n do u := UCLN(u,a[i]); {là UCLN của các phần tử từ 1 đến i-1 và
ai}
writeln('UCLN cua ca day la:',u);
end;
function hammu(a : real; n : integer): real; {hàm mũ tính an}
var s : real; i : integer;
begin
15
s := 1;
for i := 1 to n do s := s * a;
hammu := s;
end;
Thủ tục tính tổng các phần tử có lấy mũ:
procedure tong;
var s : real; i : integer; {s phải khai báo là số thực để tránh tràn số}
begin
s := 0;
for i := 1 to n do s := s + hammu(a[i],i); {s := s + (ai)i}
writeln('Tong can tinh:',s:10:0);
end;
Thủ tục sắp xếp tăng dần các phần tử của một mảng:
procedure sxep;
var i,j,tg : integer;
begin
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('DAY SAU KHI SAP XEP TANG DAN:');
for i := 1 to n do writeln(a[i]);
end;
16
Chương trình chính: lần lượt gọi từng thủ tục
BEGIN
nhap;
inngto;
tinhuc;
tong;
sxep;
END.
BÀI 12: Cho 1 dãy số gồm n phần tử n<=15. Giá trị từng phần tử là số thực. Thực hiện
các chương trình sau:
a) Nhập từ bàn phím số phần tử và giá trị từng phần tử
b) Tính tổng các phần tử âm của dãy
c) Tính tổng và trung bình cộng của các phần tử chẵn của dãy
d) Tìm phần tử có giá trị lớn nhất của dãy
e) Tìm phần tử có giá trị nhỏ nhất
f) Sắp xếp dãy theo chiều giảm dần về giá trị của từng phần tử
g) In các kết quả trên ra màn hình
program vd1;
var i,n :Byte;
ta, tb, b, c, d :real;
a: array[1..15] of real ;
begin
write(' nhập số lượng phần tử n ='); readln(n);
Writeln('Nhap mang a: ');
for i:=1 to n do
begin
write('a[',i,']= ');
readln(a[i])
end;
ta:=0;
17
for i:=1 to n do if a[i] <0 then ta= ta + a[i] ; { tính tổng âm}
tc:= 0; t:=1;
for i:=1 to n do if i mod 2 =0 then begin
t= t+1 ;
tc= tc + a[i] ; {tính tổng phần tư chẵn}
end;
ttc = tc/t ; { trung bình phần tử chẵn}
max:= a[1];
for i=2 to n do if max < a[i] then max =a[i] ; { tìm phần tử lớn nhất}
min:= a[1];
for i=2 to n do if min > a[i] then min =a[i] ; { tìm phần tử nhỏ nhất}
for i=2 to n do
for j=n down to i do
if (a[j]> a[j-1])
then begin
b:= a[j-1] ;
a[j-1]:=a[j];
a[j]:=b;
end; {sắp xếp các phần tử giảm dần về giá trị}
for i=1 to n then begin
write( a[i]);
writeln;
end; {in ra theo chiều dọc mảng}
end. hết
nếu muốn in theo chiều ngang
for i=1 to n then begin
write( a[i]);
write(' '); { dấu cách giữa 2 giấu ' }
end;
có gì sai sót thì bạn sửa nhe như khai báo các biến ấy có thể thiếu. cái này học hồi 11 nên
không nhớ rõ lắm
- Yêu cầu: Chạy lại chương trình với dãy A như sau: 12 4 6 9
Nhập số cần tìm là: 7
 Xem kết quả
e. Tính tích các số chắn trong dãy
vd: Dãy A gồm 7 phần tử: 5 13 4 7 2 10
 Tich cac so chan la: 80
BÀI GIẢI:
USES CRT;
VAR A: ARRAY[1..100] OF INTEGER;
I,N: INTEGER;
18
TICH: LONGINT;
BEGIN
WRITELN('NHAP SL PHAN TU: ');
READLN(N);
FOR I:=1 TO N DO
BEGIN
WRITELN('NHAP SO THU: ',I,' ');
READLN(A[I]);
END;
TICH:=1;
FOR I:=1 TO N DO
IF A[I] MOD 2 =0 THEN TICH:=TICH*A[I];
WRITELN('TICH CAC SO CHAN LA: ',TICH);
READLN
END.
Tính Trung Bình Cộng
Uses CRT;
Var i,n : Integer;
s : Real;
a : Array[1.. 100] of Real;
Begin
ClrScr;
Write( ‘ Ban muon nhap bao nhieu PT cho mang : ‘ );
Readln(n);
For i := 1 to n do
Begin
Write( ‘ PT A[ ‘ , i , ‘ ]= ’ );
Readln(a[i]); End;
s := 0;
For i := 1 to n do s := s + a[i];
Write( ‘ Trung binh cong cua day so = ‘ , s / n : 0 : 4 );
Readln; End.
Nếu cần tìm phần tử lớn nhất / nhỏ nhất hoặc sắp xếp 1 dòng (1 cột) của mảng 2 chiều thì ta cũng
coi dòng (cột) đó như 1 mảng 1 chiều. Chẳng hạn tất cả các phần tử trên dòng k đều có dạng chỉ số
là a[k,i] với i chạy từ 1 đến n (n là số cột).
Ví dụ 2. Tìm phần tử lớn nhất của dòng k và đổi chỗ nó về phần tử đầu dòng.
procedure timmax(k : integer);
var i, vt, tg : integer;
begin
19
vt := 1; {vt là vị trí của phần tử min dòng k}
for i := 1 to n do
if a[k,i] > a[k,vt] then vt := i; {các phần tử dòng k có dạng a[k,i]}
tg := a[k,1]; a[k,1] := a[k,vt]; a[k,vt] := tg;
end;
Ví dụ 3. Sắp xếp giảm dần cột thứ k.
procedure sapxep(k: integer);
var i,j,tg : integer;
begin
for i := 1 to m-1 do {mỗi cột có m phần tử, vì bảng có m dòng}
for j := i+1 to m do
if a[i,k] > a[j,k] then begin {các phần tử cột k có dạng a[i,k]}
tg := a[i,k]; a[i,k] := a[j,k]; a[j,k] := tg;
end;
end;
Đưa ra các số âm
1. Nhập vào 1 dãy số nguyên gồm N phần tử
(N <= 100)
a. Đưa ra các số âm có trong dãy và vị trí của chúng
Dãy A gồm 5 phần tử: 2 15 -7 4 -20
 Cac so am la:
-7 vi tri la: 3
-20 vi tri la: 5
20
BÀI GIẢI:
USES CRT;
VAR A: ARRAY[1..100] OF INTEGER;
I,N: INTEGER;
BEGIN
WRITELN('NHAP SL PHAN TU: ');
READLN(N);
FOR I:=1 TO N DO
BEGIN
WRITELN('NHAP SO THU: ',I,' ');
READLN(A[I]);
END;
WRITELN('CAC SO AM LA: ');
FOR I:=1 TO N DO
IF A[I] < 0 THEN
BEGIN
WRITE(A[I]:4);
WRITELN(' VI TRI LA: ',I);
END;
READLN
END.
Đếm và tính tổng các số lẻ có trong dãy
Dãy A gồm 6 phần tử: 2 5 8 7 12 3
 Co 3 so le
Tong la: 15
BÀI GIẢI:
USES CRT;
VAR A: ARRAY[1..100] OF INTEGER;
I,N,DEM,S: INTEGER;
BEGIN
WRITELN('NHAP SL PHAN TU: ');
READLN(N);
FOR I:=1 TO N DO
BEGIN
WRITELN('NHAP SO THU: ',I,' ');
READLN(A[I]);
END;
FOR I:=1 TO N DO
IF A[I] MOD 2 <> 0 THEN
21
BEGIN
DEM:=DEM+1;
S:=S+A[I];
END;
WRITELN('CO ',DEM,' SO LE');
WRITELN('TONG LA: ',S);
READLN
END.
Tính TB cộng các bội số của 3 và đưa ra các bội số đó
c. Tính TB cộng các bội số của 3 và đưa ra các bội số đó
vd: Dãy gồm 5 phần tử: 10 6 4 3 13
 Cac boi so cua 3 la:
6 3
TB Cong la: 4.5
BÀI GIẢI:
USES CRT;
VAR A: ARRAY[1..100] OF INTEGER;
I,N,DEM,S: INTEGER;
TBC: REAL;
BEGIN
WRITELN('NHAP SL PHAN TU: ');
READLN(N);
FOR I:=1 TO N DO
BEGIN
WRITELN('NHAP SO THU: ',I,' ');
READLN(A[I]);
END;
WRITELN('CAC BOI SO CUA 3 LA: ');
FOR I:=1 TO N DO
IF A[I] MOD 3 = 0 THEN
BEGIN
WRITE(A[I]:4);
DEM:=DEM+1;
S:=S+A[I];
END;
WRITELN; {XUONG DONG}
TBC:= S/DEM;
WRITELN('TB CONG LA: ',TBC:6:1);
READLN
END.
d) Nhập vào số nguyên K, tìm xem K có trong dãy không?
22
Nhập vào số nguyên K, tìm xem K có trong dãy không? Nếu có thì đưa ra các vị trí của
nó trong dãy. Nếu không thì thông báo “Không tìm thấy”.
Vd: Dãy A gồm 5 phần tử: 1 5 6 12 5
Nhap so can tim: 5
 Cac vi tri cua 5 la: 2 5
BÀI GIẢI:
USES CRT;
VAR A: ARRAY[1..100] OF INTEGER;
I,N,DEM,K: INTEGER;
BEGIN
WRITELN('NHAP SL PHAN TU: ');
READLN(N);
FOR I:=1 TO N DO
BEGIN
WRITELN('NHAP SO THU: ',I,' ');
READLN(A[I]);
END;
WRITE('NHAP SO CAN TIM: ');
READLN(K);
WRITELN('CAC VI TRI CUA ',K,' LA: ');
FOR I:=1 TO N DO
IF A[I] = K THEN
BEGIN
WRITE(I:4);
DEM:=DEM+1;
END;
WRITELN; {XUONG DONG}
IF DEM = 0 THEN WRITELN('KHONG TIM THAY VI TRI NAO');
READLN
END.
23
Bài 14: Viết chương trình mảng một chiều gồm n phần tử n<=100 kiểu nguyên
24
25
26
27
28
29
Bài 15: Nhập họ tên và năm sinh của người và cho biết người này thuộc lứa
tuổi nào: sơ sinh, nhi đồng, thiếu niên, thanh niên, trung niên, người lớn
tuổi. Biết rằng:
+ Sơ sinh tuổi từ 0->0
+ Nhi đồng tuổi từ 2->9
+ Thiếu niên tuổi từ 10->15
+ Thanh niên tuổi 16->32
+ Trung niên tuổi từ 33 -> 50
+ Người già tuổi từ 50 trở lên
30
uses crt;var
a:array[1..100] of longint;
i,n:longint;
begin
clrscr;
write('nhap so nguoi:');
readln(n);
for i:=1 to n do
begin
write('nhap tuoi cua nguoi thu ',i,':');
readln(a[i]);
end;
for i:=1 to n do
begin
write('nguoi thu',i,':');
case a[i] of
0:writeln('tre so sinh');
2..9:writeln('nhi dong');
10..5:writeln('thieu nien');
16..32:writeln('thanh nien');
33..50:writeln('trung nien');
Else writeln('nguoi gia');
end;
end;
readln;
end.
BÀI TẬP NÂNG CAO
Bài tập 1: DHLOCO spoj
Carnaval Hạ Long 2015 với chủ đề “Hội tụ tinh hoa – Lan tỏa nụ cười”, điểm
mới của lễ hội là sự song hành giữa biểu diễn nghệ thuật “Nơi tinh hoa hội tụ” và
diễu hành đường phố “Nụ cười Hạ Long” với sự góp mặt của hơn 2000 diễn viên
quần chúng. Có rất nhiều chương trình vui chơi được tổ chức, một trong những
trò chơi thu hút được nhiều du khách tham gia đó là trò chơi nhảy lò cò, cụ thể:
31
người chơi cần vượt qua một đoạn đường dài n mét, mỗi bước, người chơi có ba
cách nhảy với độ dài bước nhảy tương ứng là 1 mét, 2 mét, 3 mét. Một cách đi
chuyển đúng là dãy các bước nhảy có tổng đúng bằng n.
Yêu cầu: Cho n và M, gọi K là số cách đi chuyển đúng khác nhau để đi hết đoạn
đường n mét, hãy tính phần dư của K chia M.
Input
gồm một dòng chứa hai số nguyên dương n, M (M ≤ 2015);
Output
một số nguyên là phần dư của K chia M.
Example
Input:
5 100
Output
13
Ghi chú:
Có 20% số test ứng với 20% số điểm có n ≤ 20;
Có 40% số test ứng với 40% số điểm có n ≤ 106;
Có 40% số test còn lại ứng với 40% số điểm có n ≤ 1015.:
2. Gợi ý DHLOCO spoj Trò chơi lò cò
-Các bạn sử dụng thuật toán nhân ma trận là dễ nhất
ype matrix=array[1..3,1..3] of int64;
const fi='';
fo='';
var f:text;
a,b:matrix;
n:int64;
m:int64;
procedure input;
begin
32
assign(f,fi);
reset(f);
readln(f,n,m);
close(f);
end;
function nhan(a,b:matrix):matrix;
var c:matrix;
k,u,v:longint;
begin
for u:=1 to 3 do
for v:=1 to 3 do
begin
c[u,v]:=0;
for k:=1 to 3 do
c[u,v]:=(c[u,v]+a[u,k]*b[k,v])mod m;
end;
exit(c);
end;
function luythua(a:matrix;k:int64):matrix;
var b:matrix;
begin
if k=1 then exit(a)
else
begin
b:=luythua(a,k div 2);
b:=nhan(b,b);
if k mod 2 =1 then b:=nhan(b,a);
end;
exit(b);
end;
procedure solve;
begin
a[1,1]:=0; a[1,2]:=1; a[1,3]:=0;
a[2,1]:=0; a[2,2]:=0; a[2,3]:=1;
a[3,1]:=1; a[3,2]:=1; a[3,3]:=1;
b:=luythua(a,n-1);
end;
33
procedure output;
begin
assign(f,fo);
rewrite(f);
case n of
1: writeln(f,1);
2: writeln(f,2 mod m);
3: writeln(f,4 mod m);
else
begin
solve;
writeln(f,(b[1,1]+b[1,2]*2+b[1,3]*4)mod m);
end;
end;
close(f);
end;
BEGIN
input;
output;
END.
Bài tập 2: Cho trước một dãy số dương có N phần tử. Bạn biết trước tổng
của bất kì 2 phần tử nào trong dãy số, hãy tìm dãy số ban đầu.
Input
Dòng đầu tiên là N, số phần tử của dãy số. (2 <= N <= 1000)
N dòng sau, mỗi dòng gồm N số (mỗi số <= 100 000) mô tả ma trận biểu diễn
tổng của 2 phần tử trong dãy.
* S(i,j) = 0 nếu i = j.
* S(i,j) = A[i] + A[j] với i ≠ j, là tổng của phần tử thứ i và thứ j trong dãy số.
Output
In ra trên 1 dòng dãy số cần tìm. Input luôn đảm bảo có 1 đáp số duy nhất.
34
Example
Input1:
2
0 2
2 0
Ouput1:
1 1
Input2:
4
0 3 6 7
3 0 5 6
6 5 0 9
7 6 9 0
Ouput2:
2 1 4 5
const fi='';
nmax=1000;
type
data=longint;
var
f:text;
A:array[1..nmax,1..nmax] of data;
B:array[1..nmax] of data;
N:data;
procedure docfile;
var i,j:data;
begin
assign(f,fi); reset(f);
readln(f,n);
for i:=1 to n do
for j:=1 to n do
35
read(f,a[i,j]);
close(f);
end;
procedure xuli;
var i,j:data;
begin
B[1]:=(A[1,2]+a[1,3]-a[2,3]) div 2;
B[2]:=(a[1,2]-a[1,3]+a[2,3]) div 2;
write(b[1],' ',b[2],' ');
for i:=3 to n do
write((A[1,2]-A[1,i]-a[2,i]) div (-2),' ');
end;
begin
docfile;
xuli;
end.
Bài tập 3: Một đoạn số có tổng bằng nhau trong một dãy số là một nhóm các
số theo đúng thứ tự ban đầu trong dãy mà nếu nhóm với nhau thì sẽ cho ra
cùng một giá trị tổng.
Ví dụ với dãy: 2 5 1 3 3 7 thì ta có thể nhóm thành: (2 5) (1 3 3) (7) cùng cho giá
trị tổng là 7.
Chú ý: đoạn đặc biệt chứa tất cả các phần tử của dãy cũng được coi là một đoạn
có tổng bằng nhau với chính giá trị tổng các số của dãy đó.
Yêu cầu: viết chương trình nhận vào các dãy số nguyên dương và trả về giá
trị tổng nhỏ nhất có thể của một đoạn tổng bằng nhau trong dãy.
Dữ liệu vào
Dòng đầu tiên chứa một số nguyên 1 ≤ t ≤ 1000 là số lượng bộ test. Mỗi bộ test
bao gồm:
 Dòng đầu tiên chứa thứ tự bộ test và số M (1≤ M ≤ 10000) là số phần tử
của dãy.
 Các dòng tiếp theo mỗi dòng ghi 10 số của dãy phân cách bởi 1 dấu cách.
Dòng cuối cùng có thể có ít hơn 10 số. (Các số trong dãy đều nhỏ hơn
20000).
36
Dữ liệu ra
Với mỗi bộ test, in ra trên một dòng gồm số thứ tự bộ test và tổng nhỏ nhất có
thể đạt được của các đoạn số có tổng bằng nhau.
Example
INPUT OUTPUT
31 6
2 5 1 3 3 7
2 6
1 2 3 4 5 6
3 20
1 1 2 1 1 2 1 1 2 1
1 2 1 1 2 1 1 2 1 1
1 72 21
3 2
onst fi='';
nmax=10000;
type data=longint;
var
f:text;
A:array[0..nmax+1] of data;
n,test:data;
function tknp(dau,cuoi,x:data):data;
var giua:data;
begin
while dau<=cuoi do
begin
giua:=(dau+cuoi) div 2;
if a[giua]=x then
exit(giua)
else
if a[giua]>x then
cuoi:=giua-1
else
dau:=giua+1;
end;
exit(0);
37
end;
function check(X,sl:data):boolean;
var i,j,id,vt:data;
begin
id:=0;
for i:=1 to sl do
begin
vt:=tknp(id,n,a[id]+x);
if vt=0 then exit(false);
id:=vt;
end;
exit(true);
end;
procedure xuli;
var i,j:data;
begin
i:=a[n];
if a[n] mod i = 0 then
if check(a[n] div i, i) then
begin
writeln(test,' ',a[n] div i);
exit;
end;
i:=a[n] div 2;
if a[n] mod i = 0 then
if check(a[n] div i, i) then
begin
writeln(test,' ',a[n] div i);
exit;
end;
for i:=trunc(sqrt(a[n])) downto 2 do
if a[n] mod i = 0 then
if check(a[n] div i, i) then
begin
writeln(test,' ',a[n] div i);
38
exit;
end;
writeln(test,' ',a[n]);
end;
procedure docfile;
var i,j,sl:data;
begin
assign(f,fi); reset(f);
read(f,sl);
a[0]:=0;
for i:=1 to sl do
begin
read(f,test,n);
for j:=1 to n do
begin
read(f,a[j]);
a[j]:=a[j-1]+a[j];
end;
xuli;
end;
close(f);
end;
begin
docfile;
end.
Bài tập 4: BONUS Spoj
Tuấn là người chiến thắng trong một cuộc thi “tìm hiểu kiến thức vũ trụ” và
được nhận các phần thưởng do công ty XYZ tài trợ. Các phần thưởng được bố trí
trên một bảng hình vuông nxn có dạng một lưới ô vuông kích thước đơn vị. Các
dòng của bảng được đánh số từ 1 đến n, từ trên xuống dưới và các cột của bảng
được đánh số từ 1 đến n, từ trái qua phải. Ô nằm trên giao của dòng i và cột j
được gọi là ô (i,j) và trên ô đó chứa một món quà có giá trị là a[i,j] (1 <= i, j
<= n)
39
Đề nhận phần thưởng, Tuấn được phép chọn một hình vuông kích thước k x k
chiếm trọn trong một số ô của bảng và nhận tất cả các phần quà có trong các ô
nằm trong hình vuông đó.
Yêu cầu: Hãy xác định tổng giá trị lớn nhất của món quà mà Tuấn có thể nhận
được.
Dữ liệu:
 Dòng thứ nhất chứa hai sô nguyên dương n, k (n <= 1000, n/3 <= k <= n).
 Dòng thứ i trong số n dòng tiếp theo chứa n số nguyên dương, số thứ j là
a[i,j] (a[i,j] <= 1000)
Kết quả:
 Ghi ra một số nguyên duy nhất là tổng giá trị lớn nhất của các món quà mà
Tuấn có thể nhận được.
Ví dụ:
INPUT OUTPUT
Code tham khảo
const fi='';
nmax=1000;
type data=longint;
var
f:text;
A:array[0..nmax+1,0..nmax+1] of longint;
n,k:data;
procedure xuli;
var i,j:data;
4 3
1 9 1 1
9 9 9 9
1 9 9 9
1 9 9 14
86
40
res:data;
begin
assign(f,fi); reset(f);
readln(f,n,k);
for i:=0 to n do
begin
a[i,0]:=0;
a[0,i]:=0;
end;
res:=low(data);
for i:=1 to n do
for j:=1 to n do
begin
read(f,a[i,j]);
A[i,j]:=a[i,j]+a[i-1,j]+a[i,j-1]-a[i-1,j-1];
end;
for i:=k to n do
for j:=k to n do
if res<A[i,j]-A[i-k,j]-A[i,j-k]+a[i-k,j-k] then
res:=A[i,j]-A[i-k,j]-A[i,j-k]+a[i-k,j-k];
writeln(res);
close(f);
end;
begin
xuli;
end.

More Related Content

What's hot

Phương pháp tham lam giải bài toán lập lịch công việc
Phương pháp tham lam giải bài toán lập lịch công việcPhương pháp tham lam giải bài toán lập lịch công việc
Phương pháp tham lam giải bài toán lập lịch công việcNguyễn Danh Thanh
 
Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2Minh Ngoc Tran
 
Phương pháp nhánh cận
Phương pháp nhánh cậnPhương pháp nhánh cận
Phương pháp nhánh cậnDiên Vĩ
 
Cac ham va thu tuc trong pascal
Cac ham va thu tuc trong pascalCac ham va thu tuc trong pascal
Cac ham va thu tuc trong pascalVõ Tâm Long
 
Bài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giảiBài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giảiTrung Thanh Nguyen
 
Bai13-Cau truc du lieu va giai thuat - Cay (Tree)
Bai13-Cau truc du lieu va giai thuat - Cay (Tree)Bai13-Cau truc du lieu va giai thuat - Cay (Tree)
Bai13-Cau truc du lieu va giai thuat - Cay (Tree)iwanttoit
 
Đề Cương ôn tập kiến trúc máy tính và thiết bị ngoại vi
Đề Cương ôn tập kiến trúc máy tính và thiết bị ngoại viĐề Cương ôn tập kiến trúc máy tính và thiết bị ngoại vi
Đề Cương ôn tập kiến trúc máy tính và thiết bị ngoại viĐỗ Đức Hùng
 
Cac ham va thu tuc trong pascal
Cac ham va thu tuc trong pascalCac ham va thu tuc trong pascal
Cac ham va thu tuc trong pascaldalat
 
Toán rời rạc-Dành cho sinh viên,người thi cao học
Toán rời rạc-Dành cho sinh viên,người thi cao họcToán rời rạc-Dành cho sinh viên,người thi cao học
Toán rời rạc-Dành cho sinh viên,người thi cao họcducmanhkthd
 
Bài toán liên quan về Phân số tối giản trong Toán lớp 6
Bài toán liên quan về Phân số tối giản trong Toán lớp 6Bài toán liên quan về Phân số tối giản trong Toán lớp 6
Bài toán liên quan về Phân số tối giản trong Toán lớp 6Bồi dưỡng Toán lớp 6
 
Xây dựng biểu đồ use case
Xây dựng biểu đồ use caseXây dựng biểu đồ use case
Xây dựng biểu đồ use caseTrung Chinh Hà
 
Bai18 bai tap voi tep - tin 11
Bai18  bai tap voi tep - tin 11Bai18  bai tap voi tep - tin 11
Bai18 bai tap voi tep - tin 11Bich Tuyen
 
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...Thanh Giảng Lê
 
Bài giảng kiến trúc máy tính
Bài giảng kiến trúc máy tínhBài giảng kiến trúc máy tính
Bài giảng kiến trúc máy tínhCao Toa
 
Các cấu trúc lệnh trong C
Các cấu trúc lệnh trong CCác cấu trúc lệnh trong C
Các cấu trúc lệnh trong Cpnanhvn
 
Bo de toan roi rac (on thi cao hoc khmt)
Bo de toan roi rac (on thi cao hoc khmt)Bo de toan roi rac (on thi cao hoc khmt)
Bo de toan roi rac (on thi cao hoc khmt)lieu_lamlam
 
Giáo trình Phân tích và thiết kế giải thuật - CHAP 6
Giáo trình Phân tích và thiết kế giải thuật - CHAP 6Giáo trình Phân tích và thiết kế giải thuật - CHAP 6
Giáo trình Phân tích và thiết kế giải thuật - CHAP 6Nguyễn Công Hoàng
 

What's hot (20)

Phương pháp tham lam giải bài toán lập lịch công việc
Phương pháp tham lam giải bài toán lập lịch công việcPhương pháp tham lam giải bài toán lập lịch công việc
Phương pháp tham lam giải bài toán lập lịch công việc
 
Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2
 
Phương pháp nhánh cận
Phương pháp nhánh cậnPhương pháp nhánh cận
Phương pháp nhánh cận
 
Bài tập pascal
Bài tập pascalBài tập pascal
Bài tập pascal
 
Cac ham va thu tuc trong pascal
Cac ham va thu tuc trong pascalCac ham va thu tuc trong pascal
Cac ham va thu tuc trong pascal
 
Bài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giảiBài tập mẫu C và C++ có giải
Bài tập mẫu C và C++ có giải
 
Bai13-Cau truc du lieu va giai thuat - Cay (Tree)
Bai13-Cau truc du lieu va giai thuat - Cay (Tree)Bai13-Cau truc du lieu va giai thuat - Cay (Tree)
Bai13-Cau truc du lieu va giai thuat - Cay (Tree)
 
Đề Cương ôn tập kiến trúc máy tính và thiết bị ngoại vi
Đề Cương ôn tập kiến trúc máy tính và thiết bị ngoại viĐề Cương ôn tập kiến trúc máy tính và thiết bị ngoại vi
Đề Cương ôn tập kiến trúc máy tính và thiết bị ngoại vi
 
Cac ham va thu tuc trong pascal
Cac ham va thu tuc trong pascalCac ham va thu tuc trong pascal
Cac ham va thu tuc trong pascal
 
Toán rời rạc-Dành cho sinh viên,người thi cao học
Toán rời rạc-Dành cho sinh viên,người thi cao họcToán rời rạc-Dành cho sinh viên,người thi cao học
Toán rời rạc-Dành cho sinh viên,người thi cao học
 
Bài toán liên quan về Phân số tối giản trong Toán lớp 6
Bài toán liên quan về Phân số tối giản trong Toán lớp 6Bài toán liên quan về Phân số tối giản trong Toán lớp 6
Bài toán liên quan về Phân số tối giản trong Toán lớp 6
 
Xây dựng biểu đồ use case
Xây dựng biểu đồ use caseXây dựng biểu đồ use case
Xây dựng biểu đồ use case
 
Đệ Quy, Quay Lui, Nhánh Cận
Đệ Quy, Quay Lui, Nhánh CậnĐệ Quy, Quay Lui, Nhánh Cận
Đệ Quy, Quay Lui, Nhánh Cận
 
Bai18 bai tap voi tep - tin 11
Bai18  bai tap voi tep - tin 11Bai18  bai tap voi tep - tin 11
Bai18 bai tap voi tep - tin 11
 
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
 
Bài giảng kiến trúc máy tính
Bài giảng kiến trúc máy tínhBài giảng kiến trúc máy tính
Bài giảng kiến trúc máy tính
 
Các cấu trúc lệnh trong C
Các cấu trúc lệnh trong CCác cấu trúc lệnh trong C
Các cấu trúc lệnh trong C
 
Bo de toan roi rac (on thi cao hoc khmt)
Bo de toan roi rac (on thi cao hoc khmt)Bo de toan roi rac (on thi cao hoc khmt)
Bo de toan roi rac (on thi cao hoc khmt)
 
Giáo trình Phân tích và thiết kế giải thuật - CHAP 6
Giáo trình Phân tích và thiết kế giải thuật - CHAP 6Giáo trình Phân tích và thiết kế giải thuật - CHAP 6
Giáo trình Phân tích và thiết kế giải thuật - CHAP 6
 
Đề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đ
Đề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đĐề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đ
Đề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đ
 

Similar to Bài tập cơ bản-nâng cao mảng

Cac bai tap hay ve mang 1 chieu
Cac bai tap hay ve mang 1 chieuCac bai tap hay ve mang 1 chieu
Cac bai tap hay ve mang 1 chieuThanh Pham
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trìnhLong Kingnam
 
Tuyen chon-bai-tap-pascal-lop
Tuyen chon-bai-tap-pascal-lopTuyen chon-bai-tap-pascal-lop
Tuyen chon-bai-tap-pascal-lopphuocpg
 
Homework - C programming language
Homework - C programming languageHomework - C programming language
Homework - C programming languageLinh Lê
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trìnhHuy Rùa
 
Cac van de co so kh may tinh
Cac van de co so kh may tinhCac van de co so kh may tinh
Cac van de co so kh may tinhTunAnh346
 
ChuyenDeSoHocVMF.pdf
ChuyenDeSoHocVMF.pdfChuyenDeSoHocVMF.pdf
ChuyenDeSoHocVMF.pdfHngAnhV13
 
Giaotrinhbaitapkythuatlaptrinh
GiaotrinhbaitapkythuatlaptrinhGiaotrinhbaitapkythuatlaptrinh
GiaotrinhbaitapkythuatlaptrinhHồ Lợi
 
Bai tap thuc hanh nhap mon tin hoc
Bai tap thuc hanh nhap mon tin hocBai tap thuc hanh nhap mon tin hoc
Bai tap thuc hanh nhap mon tin hocHồ Lợi
 
Chuyen de so hoc nang cao VN
Chuyen de so hoc nang cao VNChuyen de so hoc nang cao VN
Chuyen de so hoc nang cao VNvothimyhanh
 

Similar to Bài tập cơ bản-nâng cao mảng (20)

Cac bai tap hay ve mang 1 chieu
Cac bai tap hay ve mang 1 chieuCac bai tap hay ve mang 1 chieu
Cac bai tap hay ve mang 1 chieu
 
Olympiad help
Olympiad helpOlympiad help
Olympiad help
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trình
 
Ontap ltc
Ontap ltcOntap ltc
Ontap ltc
 
Tuyen chon-bai-tap-pascal-lop
Tuyen chon-bai-tap-pascal-lopTuyen chon-bai-tap-pascal-lop
Tuyen chon-bai-tap-pascal-lop
 
Homework - C programming language
Homework - C programming languageHomework - C programming language
Homework - C programming language
 
Khao sat
Khao satKhao sat
Khao sat
 
Khao sat
Khao satKhao sat
Khao sat
 
Tin học lớp 8
Tin học lớp 8Tin học lớp 8
Tin học lớp 8
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trình
 
Bai tap mau pascal
Bai tap mau pascalBai tap mau pascal
Bai tap mau pascal
 
Cac van de co so kh may tinh
Cac van de co so kh may tinhCac van de co so kh may tinh
Cac van de co so kh may tinh
 
Đề tài: Thiết kế và phân tích thuật toán, HAY
Đề tài: Thiết kế và phân tích thuật toán, HAYĐề tài: Thiết kế và phân tích thuật toán, HAY
Đề tài: Thiết kế và phân tích thuật toán, HAY
 
Ctdl ifi 1996
Ctdl   ifi 1996Ctdl   ifi 1996
Ctdl ifi 1996
 
CHƯƠNG 2.pdf
CHƯƠNG 2.pdfCHƯƠNG 2.pdf
CHƯƠNG 2.pdf
 
ChuyenDeSoHocVMF.pdf
ChuyenDeSoHocVMF.pdfChuyenDeSoHocVMF.pdf
ChuyenDeSoHocVMF.pdf
 
Giaotrinhbaitapkythuatlaptrinh
GiaotrinhbaitapkythuatlaptrinhGiaotrinhbaitapkythuatlaptrinh
Giaotrinhbaitapkythuatlaptrinh
 
Bai tap thuc hanh nhap mon tin hoc
Bai tap thuc hanh nhap mon tin hocBai tap thuc hanh nhap mon tin hoc
Bai tap thuc hanh nhap mon tin hoc
 
Chuyen desohocvmf
Chuyen desohocvmfChuyen desohocvmf
Chuyen desohocvmf
 
Chuyen de so hoc nang cao VN
Chuyen de so hoc nang cao VNChuyen de so hoc nang cao VN
Chuyen de so hoc nang cao VN
 

More from Tường Tường (15)

Một Số Phương Pháp Hỗ Trợ dạy Học
Một Số Phương Pháp Hỗ Trợ dạy HọcMột Số Phương Pháp Hỗ Trợ dạy Học
Một Số Phương Pháp Hỗ Trợ dạy Học
 
Gthieu
GthieuGthieu
Gthieu
 
Bài 12: Kiểu Xâu (Tiết 3)
Bài 12: Kiểu Xâu (Tiết 3)Bài 12: Kiểu Xâu (Tiết 3)
Bài 12: Kiểu Xâu (Tiết 3)
 
Bai12 kieuxau3
Bai12 kieuxau3Bai12 kieuxau3
Bai12 kieuxau3
 
Bai12 kieuxau 2
Bai12 kieuxau 2Bai12 kieuxau 2
Bai12 kieuxau 2
 
Bai12 kieuxau3
Bai12 kieuxau3Bai12 kieuxau3
Bai12 kieuxau3
 
Bai12 kieuxau 2
Bai12 kieuxau 2Bai12 kieuxau 2
Bai12 kieuxau 2
 
Bai12 kieuxaut1
Bai12 kieuxaut1Bai12 kieuxaut1
Bai12 kieuxaut1
 
Bai12 kieuxau
Bai12 kieuxauBai12 kieuxau
Bai12 kieuxau
 
Kieumang
KieumangKieumang
Kieumang
 
Ho sotrinhchieu intel
Ho sotrinhchieu intelHo sotrinhchieu intel
Ho sotrinhchieu intel
 
Ho sotrinhchieu intel (1)
Ho sotrinhchieu intel (1)Ho sotrinhchieu intel (1)
Ho sotrinhchieu intel (1)
 
Ho sotrinhchieu intel
Ho sotrinhchieu intelHo sotrinhchieu intel
Ho sotrinhchieu intel
 
Ho sotrinhchieu intel (1)
Ho sotrinhchieu intel (1)Ho sotrinhchieu intel (1)
Ho sotrinhchieu intel (1)
 
Kịch bản dạy học bài 16 tin học lớp 10
Kịch bản dạy học bài 16 tin học lớp 10Kịch bản dạy học bài 16 tin học lớp 10
Kịch bản dạy học bài 16 tin học lớp 10
 

Recently uploaded

Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfhoangtuansinh1
 
Sơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdfSơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdftohoanggiabao81
 
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...Nguyen Thanh Tu Collection
 
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptx
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptxChàm - Bệnh án (da liễu - bvdlct ctump) .pptx
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptxendkay31
 
Trích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docxTrích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docxnhungdt08102004
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...hoangtuansinh1
 
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Nguyen Thanh Tu Collection
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...ThunTrn734461
 
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...Nguyen Thanh Tu Collection
 
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhvanhathvc
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...Nguyen Thanh Tu Collection
 
NQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdf
NQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdfNQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdf
NQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdfNguyễn Đăng Quang
 
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líKiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líDr K-OGN
 
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...Nguyen Thanh Tu Collection
 
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Nguyen Thanh Tu Collection
 
bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa
bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoabài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa
bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa2353020138
 

Recently uploaded (19)

Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
 
Sơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdfSơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdf
 
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
 
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptx
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptxChàm - Bệnh án (da liễu - bvdlct ctump) .pptx
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptx
 
Trích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docxTrích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docx
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
 
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
 
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
 
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
 
NQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdf
NQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdfNQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdf
NQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdf
 
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líKiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
 
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
 
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
 
bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa
bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoabài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa
bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa
 

Bài tập cơ bản-nâng cao mảng

  • 1. 0 TP.HCM - Năm 2018 GV: PHẠM THỊ BÍCH TƯỜNG EMAIL:bichtuong2312@gmail.com KIỂU DỮ LIỆU CÓ CẤU TRÚC TRONG PASCAL BÀI TẬP MẢNG CƠ BẢN & NÂNG CAO
  • 2. 1 MỤC LỤC BÀI TẬP CƠ BẢN................................................................................................................. 3 Bài tập 1: Viết chương trình tìm giá trị lớn nhất của một mảng chứa các số nguyên gồm N phần tử. ................................................................................................................................. 3 Bài tập 2: Viết chương trình tính tổng bình phương của các số âm trong một mảng gồm N phần tử. ................................................................................................................................. 3 Bài tập 3: Viết chương trình nhập vào một mảng gồm N số nguyên. Sắp xếp lại mảng theo thứ tự tăng dần và in kết quả ra màn hình............................................................................. 4 Bài tập 4: Viết chương trình nhập vào một mảng A gồm N số nguyên và nhập thêm vào một số nguyên X. Hãy kiểm tra xem phần tử X có trong mảng A hay không?..................... 4 Bài 5: Nhập vào mảng A có N phần tử. Tìm phần tử xuất hiện nhiều nhất trong mảng.... 5 Bài 6: Viết chương trình nhập vào một mảng số nguyên có N phần tử theo thứ tự giảm dần và số M. Chèn số M vào mảng sao cho mảng vẫn có thứ tự giảm dần. In mảng sau khi chèn..................................................................................................................................... 7 Bài7: Nhập vào mảng 1 chiều gồm 1 dãy số nguyên N phần tử. Hãy xóa các phần tử trùng nhau trong mảng và in kết quả ra màn hình.......................................................................... 7 Bài 8: Viết chương trình Kiểm tra số chính phương trong mảng một chiều........................ 9 Bài 10: Viết chương trình nhập vào số nguyên dương N và dãy A gồm N số nguyên A1, A2,... AN. Hãy sắp xếp dãy số trên sao cho các số chẵn chia hết cho 3 lên đầu.................11 dãy, các số lẻ chia hết cho 3 xuống cuối dãy, các số còn lại ở giữa dãy vẫn giữ được ......11 thứ tự trước khi nhập vào. In ra màn hình dãy trước và sau khi sắp xếp mỗi phần tử.....11 cách nhau một khoảng trắng.................................................................................................11 BÀI 11: Nhập vào một số n (5<=n<=10) và n phần tử của dãy a, 1<ai<100 (có kiểm tra dữ liệu khi nhập...........................................................................................................................12 a) In ra các phần tử là số nguyên tố của dãy............................................................12 b) Tính ước chung lớn nhất của tất cả các phần tử của dãy. ..................................12 c) Tính biểu thức sau: ...............................................................................................12 d) Sắp xếp dãy tăng dần và in ra dãy sau sắp xếp.....................................................12 BÀI 12: Cho 1 dãy số gồm n phần tử n<=15. Giá trị từng phần tử là số thực. Thực hiện các chương trình sau: ............................................................................................................16 a) Nhập từ bàn phím số phần tử và giá trị từng phần tử...................................................16 b) Tính tổng các phần tử âm của dãy .................................................................................16 c) Tính tổng và trung bình cộng của các phần tử chẵn của dãy ......................................16 d) Tìm phần tử có giá trị lớn nhất của dãy.........................................................................16 e) Tìm phần tử có giá trị nhỏ nhất......................................................................................16
  • 3. 2 f) Sắp xếp dãy theo chiều giảm dần về giá trị của từng phần tử......................................16 g) In các kết quả trên ra màn hình .....................................................................................16 Bài 14: Viết chương trình mảng một chiều gồm n phần tử n<=100 kiểu nguyên..............23 Bài 15: Nhập họ tên và năm sinh của người và cho biết người này thuộc lứa tuổi nào: sơ sinh, nhi đồng, thiếu niên, thanh niên, trung niên, người lớn tuổi. Biết rằng:..................29 BÀI TẬP NÂNG CAO.........................................................................................................30 Bài tập 1: DHLOCO spoj ......................................................................................................30 Bài tập 2: Cho trước một dãy số dương có N phần tử. Bạn biết trước tổng của bất kì 2 phần tử nào trong dãy số, hãy tìm dãy số ban đầu. ..............................................................33 Bài tập 3: Một đoạn số có tổng bằng nhau trong một dãy số là một nhóm các số theo đúng thứ tự ban đầu trong dãy mà nếu nhóm với nhau thì sẽ cho ra cùng một giá trị tổng. .....35 Bài tập 4: BONUS Spoj..........................................................................................................38
  • 4. 3 BÀI TẬP CƠ BẢN Bài tập 1: Viết chương trình tìm giá trị lớn nhất của một mảng chứa các số nguyên gồm N phần tử. Uses Crt; Type Mang = ARRAY[1..50] Of Integer; Var A:Mang; N,i,Max:Integer; Begin {Nhập mảng} Write(‘Nhap N=’); Readln(N); For i:=1 To N Do Begin Write(‘A[‘,i,’]=’); Readln(A[i]); End; {Tìm phần tử lớn nhất} Max:=A[1]; For i:=2 To N Do If Max<A[i] Then Max:=A[i]; {In kết quả ra màn hình} Writeln(‘Phan tu lon nhat cua mang: ’, Max); Readln; End. Bài tập 2: Viết chương trình tính tổng bình phương của các số âm trong một mảng gồm N phần tử. Uses Crt; Type Mang = ARRAY[1..50] Of Integer; Var A:Mang; N,i,S:Integer; Begin Write(‘Nhap N=’); Readln(N); For i:=1 To N Do Begin
  • 5. 4 Write(‘A[‘,i,’]=’); Readln(A[i]); End; S:=0; For i:=1 To N Do If A[i]<0 Then S:=S+A[i]*A[i]; {In kết quả ra màn hình} Writeln(‘S= ’, S); Readln; End. Bài tập 3: Viết chương trình nhập vào một mảng gồm N số nguyên. Sắp xếp lại mảng theo thứ tự tăng dần và in kết quả ra màn hình. Uses Crt; Type Mang = ARRAY[1..50] Of Integer; Var A:Mang; N,i,j,Tam:Integer; Begin Write(‘Nhap N=’); Readln(N); For i:=1 To N Do Begin Write(‘A[‘,i,’]=’); Readln(A[i]); End; For i:=1 To N-1 Do For j:=i+1 To N Do If A[i]>A[j] Then Begin Tam:=A[i]; A[i]:=A[j]; A[j]:=Tam; End; Writeln(‘Ket qua sau khi sap xep:’); For i:=1 To N Do Write(A[i]:5); Readln; End. Bài tập 4: Viết chương trình nhập vào một mảng A gồm N số nguyên và nhập thêm vào một số nguyên X. Hãy kiểm tra xem phần tử X có trong mảng A hay không?
  • 6. 5 Uses Crt; Type Mang = ARRAY[1..50] Of Integer; Var A:Mang; N,i,x:Integer; Begin I:=1; While (I <= N) and (X<>A[I]) do I:=I+1; If I <= N Then Timkiem:=I Else Timkiem:=0; End; Begin Write(‘Nhap N=’); Readln(N); For i:=1 To N Do Begin Write(‘A[‘,i,’]=’); Readln(A[i]); End; Write(‘Nhap X=’); Readln(x); If TimKiem(X,N,A)<>0 Then Writeln(‘Vi tri cua X trong mang la:’, TimKiem(X,N,A)) Else Writeln(‘X khong co trong mang.’); Readln; End. Bài 5: Nhập vào mảng A có N phần tử. Tìm phần tử xuất hiện nhiều nhất trong mảng. Uses crt; var a,b:array[1..100] of integer; n,i,j,d,max,k:integer; begin write('N=');readln(n); for i:=1 to n do
  • 7. 6 begin write('a[',i,']=');readln(a[i]); end; for i:=1 to n do begin d:=0; for j:=i to n do if a[i]=a[j] then inc(d); if d>max then begin max:=d; b[1]:=a[i]; k:=1; end else if d=max then begin inc(k); b[k]:=a[i]; end; end; for i:=1 to k do write(b[i],' '); readln; end.
  • 8. 7 Bài 6: Viết chương trình nhập vào một mảng số nguyên có N phần tử theo thứ tự giảm dần và số M. Chèn số M vào mảng sao cho mảng vẫn có thứ tự giảm dần. In mảng sau khi chèn. var a:array[1..100] of integer; n,m,i,j:integer; begin write('N=');readln(n); for i:=1 to n do begin write('a[',i,']=');readln(a[i]); end; write('M=');readln(m); write('Mang sau khi chen: '); for i:=1 to n do begin if (m>=a[i]) and (j=0) then begin write(m,' '); j:=1; end; write(a[i],' '); end; if j=0 then write(m); readln; end. Bài7: Nhập vào mảng 1 chiều gồm 1 dãy số nguyên N phần tử. Hãy xóa các phần tử trùng nhau trong mảng và in kết quả ra màn hình.
  • 9. 8 Program Bo_so_trung; Const Max=100; Var a:Array[1..Max] Of Integer; i,j,k,n:Integer; Begin Writeln('XOA BO CAC SO TRUNG NHAU'); Readln(n); For i:=1 To N Do Begin Write('-Phan tu A[',i,']= '); Readln(a[i]); End; i:=2; While i <= N Do Begin j:=1; While a[j] <> a[i] Do j:=j+1; If j < i Then Begin For k:=i to n-1 Do
  • 10. 9 a[k]:= a[k+1]; n:=n-1; End Else i:=i+1; End; For i:=1 to n Do Write(a[i]:8); Writeln(' Bam phim <Enter> de ket thuc '); Readln End. Bài 8: Viết chương trình Kiểm tra số chính phương trong mảng một chiều. uses crt; type ArrInt = array[1..250] of integer; Var n,i,x : integer; a: ArrInt; BEGIN clrscr; write('Nhap so phan tu: '); readln(n); for i:=1 to n do begin write('Phan tu thu ',i,'= '); readln(a[i]); end; writeln('Cac so chinh phuong co trong mang:'); for i:=1 to n do begin x:=trunc(sqrt(a[i])); if sqr(x)=a[i] then write(a[i]:4); end; readln; END.
  • 11. 10 Bài 9: Viết chương trình nhập số nguyên N (0 < N ≤ 10 000) và mảng a gồm N số nguyên. Tính và in ra trung bình cộng của các số âm, số dương trong a. Không tính số 0. Ví dụ : a[] = {1, -6, 0, 3, -1}. Trung bình cộng là -0.75 PROGRAM tbc_am_duong_mang; USES crt; VAR a:ARRAY[1..100] OF REAL; i,n,x,y:INTEGER; tongam,tongduong,tba,tbd:REAL; BEGIN clrscr; write('So phan tu cua day n= ');readln(n); FOR i:=1 TO n DO BEGIN write('Nhap phan tu a[',i,']: '); readln(a[i]); END; tongam:=0; x:=0; FOR i:=1 TO n DO IF a[i]<0 THEN BEGIN tongam:=tongam+a[i]; x:=x+1; END; tba:=tongam/x; write('TB cong cac so am la: ',tba:5:1); writeln; tongduong:=0; y:=0; FOR i:=1 TO n DO IF a[i]>0 THEN BEGIN tongduong:=tongduong+a[i]; y:=y+1; END; tbd:=tongduong/y; write('TB cong cac so duong la: ',tbd:5:1); readln; END.
  • 12. 11 Bài 10: Viết chương trình nhập vào số nguyên dương N và dãy A gồm N số nguyên A1, A2,... AN. Hãy sắp xếp dãy số trên sao cho các số chẵn chia hết cho 3 lên đầu dãy, các số lẻ chia hết cho 3 xuống cuối dãy, các số còn lại ở giữa dãy vẫn giữ được thứ tự trước khi nhập vào. In ra màn hình dãy trước và sau khi sắp xếp mỗi phần tử cách nhau một khoảng trắng Output: Dãy trước khi sắp xếp: 1 6 5 9 12 3 4 15 7 Dãy sau khi sắp xếp: 6 12 1 5 4 7 9 3 15 Program bai1; Uses crt; Var A: array[1..250] of integer; i, N: integer; Begin Clrscr; Write(‘nhap so luong phan tu N= ‘); readln(N); For i:= 1 to N do Begin Write(‘A[‘,I,‘] = ‘);readln(A[i]); End; Writeln(‘Day truoc khi sap xep‘); For i:= 1 to N do write(A[i], ‘ ‘); Writeln; Writeln(‘Day sao khi sap xep‘); For i:=1 to N do If (A[i] mod 2=0) and (A[i] mod 3=0) write(A[i], ‘ ‘); For i:=1 to N do If ((A[i] mod 2=0) and (A[i] mod 3<>0)) or ((A[i] mod 2<>0) and (A[i] mod 3<>0)) write(A[i], ‘ ‘); For i:=1 to N do If (A[i] mod 2<>0) and (A[i] mod 3=0) write(A[i], ‘ ‘);
  • 13. 12 BÀI 11: Nhập vào một số n (5<=n<=10) và n phần tử của dãy a, 1<ai<100 (có kiểm tra dữ liệu khi nhập. a) In ra các phần tử là số nguyên tố của dãy. b) Tính ước chung lớn nhất của tất cả các phần tử của dãy. c) Tính biểu thức sau: d) Sắp xếp dãy tăng dần và in ra dãy sau sắp xếp. HƯỚNG DẪN Ta nên chia chương trình thành các chương trình con, mỗi chương trình thực hiện một yêu cầu. Ngoài ra ta cũng viết thêm các hàm kiểm tra nguyên tố, hàm mũ, hàm UCLN để thực hiện các yêu cầu đó. Chương trình như sau: Khai báo dữ liệu: uses crt; var n : integer; a : array[1..10] of integer; {n<=10 nên mảng có tối đa 10 phần tử} Thủ tục nhập dữ liệu, có kiểm tra khi nhập. procedure nhap; var i : integer; begin clrscr; write('NHAP VAO SO PHAN TU N = '); repeat readln(n); if (5<=n) and (n<=10) then break; {nếu thoã mãn thì dừng vòng lặp} writeln('Khong hop le (5<=n<=10). Nhap lai!!!'); {ngược lại thì báo lỗi} until false; writeln('NHAP VAO N PHAN TU (1<ai<100)');
  • 14. 13 for i := 1 to n do begin write('a',i,'='); repeat readln(a[i]); if (1<a[i]) and (a[i]<100) then break; writeln('Khong hop le. Nhap lai!!!'); until false; end; end; function ngto(n : integer): boolean; {hàm kiểm tra nguyên tố, xem giải thích ở phần trên} var i : integer; begin ngto := false; if n < 2 then exit; for i := 2 to round(sqrt(n)) do if n mod i = 0 then exit; ngto := true; end; Thủ tục in các số nguyên tố của một mảng procedure inngto; var i :integer; begin writeln('CAC PHAN TU NGUYEN TO TRONG DAY:'); for i := 1 to n do {duyệt qua mọi phần tử từ 1 đến n}
  • 15. 14 if ngto(a[i]) then writeln(a[i]); {nếu ai là nguyên tố thì in ra} end; function UCLN(a,b: integer): integer; var r : integer; begin while b<>0 do begin r := a mod b; a := b; b := r; end; UCLN := a; end; Thủ tục tính UCLN của các phần tử của một mảng procedure TinhUC; var i,u : integer; begin u := a[1]; {u là UCLN của các phần tử từ 1 đến i} for i := 2 to n do u := UCLN(u,a[i]); {là UCLN của các phần tử từ 1 đến i-1 và ai} writeln('UCLN cua ca day la:',u); end; function hammu(a : real; n : integer): real; {hàm mũ tính an} var s : real; i : integer; begin
  • 16. 15 s := 1; for i := 1 to n do s := s * a; hammu := s; end; Thủ tục tính tổng các phần tử có lấy mũ: procedure tong; var s : real; i : integer; {s phải khai báo là số thực để tránh tràn số} begin s := 0; for i := 1 to n do s := s + hammu(a[i],i); {s := s + (ai)i} writeln('Tong can tinh:',s:10:0); end; Thủ tục sắp xếp tăng dần các phần tử của một mảng: procedure sxep; var i,j,tg : integer; begin 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('DAY SAU KHI SAP XEP TANG DAN:'); for i := 1 to n do writeln(a[i]); end;
  • 17. 16 Chương trình chính: lần lượt gọi từng thủ tục BEGIN nhap; inngto; tinhuc; tong; sxep; END. BÀI 12: Cho 1 dãy số gồm n phần tử n<=15. Giá trị từng phần tử là số thực. Thực hiện các chương trình sau: a) Nhập từ bàn phím số phần tử và giá trị từng phần tử b) Tính tổng các phần tử âm của dãy c) Tính tổng và trung bình cộng của các phần tử chẵn của dãy d) Tìm phần tử có giá trị lớn nhất của dãy e) Tìm phần tử có giá trị nhỏ nhất f) Sắp xếp dãy theo chiều giảm dần về giá trị của từng phần tử g) In các kết quả trên ra màn hình program vd1; var i,n :Byte; ta, tb, b, c, d :real; a: array[1..15] of real ; begin write(' nhập số lượng phần tử n ='); readln(n); Writeln('Nhap mang a: '); for i:=1 to n do begin write('a[',i,']= '); readln(a[i]) end; ta:=0;
  • 18. 17 for i:=1 to n do if a[i] <0 then ta= ta + a[i] ; { tính tổng âm} tc:= 0; t:=1; for i:=1 to n do if i mod 2 =0 then begin t= t+1 ; tc= tc + a[i] ; {tính tổng phần tư chẵn} end; ttc = tc/t ; { trung bình phần tử chẵn} max:= a[1]; for i=2 to n do if max < a[i] then max =a[i] ; { tìm phần tử lớn nhất} min:= a[1]; for i=2 to n do if min > a[i] then min =a[i] ; { tìm phần tử nhỏ nhất} for i=2 to n do for j=n down to i do if (a[j]> a[j-1]) then begin b:= a[j-1] ; a[j-1]:=a[j]; a[j]:=b; end; {sắp xếp các phần tử giảm dần về giá trị} for i=1 to n then begin write( a[i]); writeln; end; {in ra theo chiều dọc mảng} end. hết nếu muốn in theo chiều ngang for i=1 to n then begin write( a[i]); write(' '); { dấu cách giữa 2 giấu ' } end; có gì sai sót thì bạn sửa nhe như khai báo các biến ấy có thể thiếu. cái này học hồi 11 nên không nhớ rõ lắm - Yêu cầu: Chạy lại chương trình với dãy A như sau: 12 4 6 9 Nhập số cần tìm là: 7  Xem kết quả e. Tính tích các số chắn trong dãy vd: Dãy A gồm 7 phần tử: 5 13 4 7 2 10  Tich cac so chan la: 80 BÀI GIẢI: USES CRT; VAR A: ARRAY[1..100] OF INTEGER; I,N: INTEGER;
  • 19. 18 TICH: LONGINT; BEGIN WRITELN('NHAP SL PHAN TU: '); READLN(N); FOR I:=1 TO N DO BEGIN WRITELN('NHAP SO THU: ',I,' '); READLN(A[I]); END; TICH:=1; FOR I:=1 TO N DO IF A[I] MOD 2 =0 THEN TICH:=TICH*A[I]; WRITELN('TICH CAC SO CHAN LA: ',TICH); READLN END. Tính Trung Bình Cộng Uses CRT; Var i,n : Integer; s : Real; a : Array[1.. 100] of Real; Begin ClrScr; Write( ‘ Ban muon nhap bao nhieu PT cho mang : ‘ ); Readln(n); For i := 1 to n do Begin Write( ‘ PT A[ ‘ , i , ‘ ]= ’ ); Readln(a[i]); End; s := 0; For i := 1 to n do s := s + a[i]; Write( ‘ Trung binh cong cua day so = ‘ , s / n : 0 : 4 ); Readln; End. Nếu cần tìm phần tử lớn nhất / nhỏ nhất hoặc sắp xếp 1 dòng (1 cột) của mảng 2 chiều thì ta cũng coi dòng (cột) đó như 1 mảng 1 chiều. Chẳng hạn tất cả các phần tử trên dòng k đều có dạng chỉ số là a[k,i] với i chạy từ 1 đến n (n là số cột). Ví dụ 2. Tìm phần tử lớn nhất của dòng k và đổi chỗ nó về phần tử đầu dòng. procedure timmax(k : integer); var i, vt, tg : integer; begin
  • 20. 19 vt := 1; {vt là vị trí của phần tử min dòng k} for i := 1 to n do if a[k,i] > a[k,vt] then vt := i; {các phần tử dòng k có dạng a[k,i]} tg := a[k,1]; a[k,1] := a[k,vt]; a[k,vt] := tg; end; Ví dụ 3. Sắp xếp giảm dần cột thứ k. procedure sapxep(k: integer); var i,j,tg : integer; begin for i := 1 to m-1 do {mỗi cột có m phần tử, vì bảng có m dòng} for j := i+1 to m do if a[i,k] > a[j,k] then begin {các phần tử cột k có dạng a[i,k]} tg := a[i,k]; a[i,k] := a[j,k]; a[j,k] := tg; end; end; Đưa ra các số âm 1. Nhập vào 1 dãy số nguyên gồm N phần tử (N <= 100) a. Đưa ra các số âm có trong dãy và vị trí của chúng Dãy A gồm 5 phần tử: 2 15 -7 4 -20  Cac so am la: -7 vi tri la: 3 -20 vi tri la: 5
  • 21. 20 BÀI GIẢI: USES CRT; VAR A: ARRAY[1..100] OF INTEGER; I,N: INTEGER; BEGIN WRITELN('NHAP SL PHAN TU: '); READLN(N); FOR I:=1 TO N DO BEGIN WRITELN('NHAP SO THU: ',I,' '); READLN(A[I]); END; WRITELN('CAC SO AM LA: '); FOR I:=1 TO N DO IF A[I] < 0 THEN BEGIN WRITE(A[I]:4); WRITELN(' VI TRI LA: ',I); END; READLN END. Đếm và tính tổng các số lẻ có trong dãy Dãy A gồm 6 phần tử: 2 5 8 7 12 3  Co 3 so le Tong la: 15 BÀI GIẢI: USES CRT; VAR A: ARRAY[1..100] OF INTEGER; I,N,DEM,S: INTEGER; BEGIN WRITELN('NHAP SL PHAN TU: '); READLN(N); FOR I:=1 TO N DO BEGIN WRITELN('NHAP SO THU: ',I,' '); READLN(A[I]); END; FOR I:=1 TO N DO IF A[I] MOD 2 <> 0 THEN
  • 22. 21 BEGIN DEM:=DEM+1; S:=S+A[I]; END; WRITELN('CO ',DEM,' SO LE'); WRITELN('TONG LA: ',S); READLN END. Tính TB cộng các bội số của 3 và đưa ra các bội số đó c. Tính TB cộng các bội số của 3 và đưa ra các bội số đó vd: Dãy gồm 5 phần tử: 10 6 4 3 13  Cac boi so cua 3 la: 6 3 TB Cong la: 4.5 BÀI GIẢI: USES CRT; VAR A: ARRAY[1..100] OF INTEGER; I,N,DEM,S: INTEGER; TBC: REAL; BEGIN WRITELN('NHAP SL PHAN TU: '); READLN(N); FOR I:=1 TO N DO BEGIN WRITELN('NHAP SO THU: ',I,' '); READLN(A[I]); END; WRITELN('CAC BOI SO CUA 3 LA: '); FOR I:=1 TO N DO IF A[I] MOD 3 = 0 THEN BEGIN WRITE(A[I]:4); DEM:=DEM+1; S:=S+A[I]; END; WRITELN; {XUONG DONG} TBC:= S/DEM; WRITELN('TB CONG LA: ',TBC:6:1); READLN END. d) Nhập vào số nguyên K, tìm xem K có trong dãy không?
  • 23. 22 Nhập vào số nguyên K, tìm xem K có trong dãy không? Nếu có thì đưa ra các vị trí của nó trong dãy. Nếu không thì thông báo “Không tìm thấy”. Vd: Dãy A gồm 5 phần tử: 1 5 6 12 5 Nhap so can tim: 5  Cac vi tri cua 5 la: 2 5 BÀI GIẢI: USES CRT; VAR A: ARRAY[1..100] OF INTEGER; I,N,DEM,K: INTEGER; BEGIN WRITELN('NHAP SL PHAN TU: '); READLN(N); FOR I:=1 TO N DO BEGIN WRITELN('NHAP SO THU: ',I,' '); READLN(A[I]); END; WRITE('NHAP SO CAN TIM: '); READLN(K); WRITELN('CAC VI TRI CUA ',K,' LA: '); FOR I:=1 TO N DO IF A[I] = K THEN BEGIN WRITE(I:4); DEM:=DEM+1; END; WRITELN; {XUONG DONG} IF DEM = 0 THEN WRITELN('KHONG TIM THAY VI TRI NAO'); READLN END.
  • 24. 23 Bài 14: Viết chương trình mảng một chiều gồm n phần tử n<=100 kiểu nguyên
  • 25. 24
  • 26. 25
  • 27. 26
  • 28. 27
  • 29. 28
  • 30. 29 Bài 15: Nhập họ tên và năm sinh của người và cho biết người này thuộc lứa tuổi nào: sơ sinh, nhi đồng, thiếu niên, thanh niên, trung niên, người lớn tuổi. Biết rằng: + Sơ sinh tuổi từ 0->0 + Nhi đồng tuổi từ 2->9 + Thiếu niên tuổi từ 10->15 + Thanh niên tuổi 16->32 + Trung niên tuổi từ 33 -> 50 + Người già tuổi từ 50 trở lên
  • 31. 30 uses crt;var a:array[1..100] of longint; i,n:longint; begin clrscr; write('nhap so nguoi:'); readln(n); for i:=1 to n do begin write('nhap tuoi cua nguoi thu ',i,':'); readln(a[i]); end; for i:=1 to n do begin write('nguoi thu',i,':'); case a[i] of 0:writeln('tre so sinh'); 2..9:writeln('nhi dong'); 10..5:writeln('thieu nien'); 16..32:writeln('thanh nien'); 33..50:writeln('trung nien'); Else writeln('nguoi gia'); end; end; readln; end. BÀI TẬP NÂNG CAO Bài tập 1: DHLOCO spoj Carnaval Hạ Long 2015 với chủ đề “Hội tụ tinh hoa – Lan tỏa nụ cười”, điểm mới của lễ hội là sự song hành giữa biểu diễn nghệ thuật “Nơi tinh hoa hội tụ” và diễu hành đường phố “Nụ cười Hạ Long” với sự góp mặt của hơn 2000 diễn viên quần chúng. Có rất nhiều chương trình vui chơi được tổ chức, một trong những trò chơi thu hút được nhiều du khách tham gia đó là trò chơi nhảy lò cò, cụ thể:
  • 32. 31 người chơi cần vượt qua một đoạn đường dài n mét, mỗi bước, người chơi có ba cách nhảy với độ dài bước nhảy tương ứng là 1 mét, 2 mét, 3 mét. Một cách đi chuyển đúng là dãy các bước nhảy có tổng đúng bằng n. Yêu cầu: Cho n và M, gọi K là số cách đi chuyển đúng khác nhau để đi hết đoạn đường n mét, hãy tính phần dư của K chia M. Input gồm một dòng chứa hai số nguyên dương n, M (M ≤ 2015); Output một số nguyên là phần dư của K chia M. Example Input: 5 100 Output 13 Ghi chú: Có 20% số test ứng với 20% số điểm có n ≤ 20; Có 40% số test ứng với 40% số điểm có n ≤ 106; Có 40% số test còn lại ứng với 40% số điểm có n ≤ 1015.: 2. Gợi ý DHLOCO spoj Trò chơi lò cò -Các bạn sử dụng thuật toán nhân ma trận là dễ nhất ype matrix=array[1..3,1..3] of int64; const fi=''; fo=''; var f:text; a,b:matrix; n:int64; m:int64; procedure input; begin
  • 33. 32 assign(f,fi); reset(f); readln(f,n,m); close(f); end; function nhan(a,b:matrix):matrix; var c:matrix; k,u,v:longint; begin for u:=1 to 3 do for v:=1 to 3 do begin c[u,v]:=0; for k:=1 to 3 do c[u,v]:=(c[u,v]+a[u,k]*b[k,v])mod m; end; exit(c); end; function luythua(a:matrix;k:int64):matrix; var b:matrix; begin if k=1 then exit(a) else begin b:=luythua(a,k div 2); b:=nhan(b,b); if k mod 2 =1 then b:=nhan(b,a); end; exit(b); end; procedure solve; begin a[1,1]:=0; a[1,2]:=1; a[1,3]:=0; a[2,1]:=0; a[2,2]:=0; a[2,3]:=1; a[3,1]:=1; a[3,2]:=1; a[3,3]:=1; b:=luythua(a,n-1); end;
  • 34. 33 procedure output; begin assign(f,fo); rewrite(f); case n of 1: writeln(f,1); 2: writeln(f,2 mod m); 3: writeln(f,4 mod m); else begin solve; writeln(f,(b[1,1]+b[1,2]*2+b[1,3]*4)mod m); end; end; close(f); end; BEGIN input; output; END. Bài tập 2: Cho trước một dãy số dương có N phần tử. Bạn biết trước tổng của bất kì 2 phần tử nào trong dãy số, hãy tìm dãy số ban đầu. Input Dòng đầu tiên là N, số phần tử của dãy số. (2 <= N <= 1000) N dòng sau, mỗi dòng gồm N số (mỗi số <= 100 000) mô tả ma trận biểu diễn tổng của 2 phần tử trong dãy. * S(i,j) = 0 nếu i = j. * S(i,j) = A[i] + A[j] với i ≠ j, là tổng của phần tử thứ i và thứ j trong dãy số. Output In ra trên 1 dòng dãy số cần tìm. Input luôn đảm bảo có 1 đáp số duy nhất.
  • 35. 34 Example Input1: 2 0 2 2 0 Ouput1: 1 1 Input2: 4 0 3 6 7 3 0 5 6 6 5 0 9 7 6 9 0 Ouput2: 2 1 4 5 const fi=''; nmax=1000; type data=longint; var f:text; A:array[1..nmax,1..nmax] of data; B:array[1..nmax] of data; N:data; procedure docfile; var i,j:data; begin assign(f,fi); reset(f); readln(f,n); for i:=1 to n do for j:=1 to n do
  • 36. 35 read(f,a[i,j]); close(f); end; procedure xuli; var i,j:data; begin B[1]:=(A[1,2]+a[1,3]-a[2,3]) div 2; B[2]:=(a[1,2]-a[1,3]+a[2,3]) div 2; write(b[1],' ',b[2],' '); for i:=3 to n do write((A[1,2]-A[1,i]-a[2,i]) div (-2),' '); end; begin docfile; xuli; end. Bài tập 3: Một đoạn số có tổng bằng nhau trong một dãy số là một nhóm các số theo đúng thứ tự ban đầu trong dãy mà nếu nhóm với nhau thì sẽ cho ra cùng một giá trị tổng. Ví dụ với dãy: 2 5 1 3 3 7 thì ta có thể nhóm thành: (2 5) (1 3 3) (7) cùng cho giá trị tổng là 7. Chú ý: đoạn đặc biệt chứa tất cả các phần tử của dãy cũng được coi là một đoạn có tổng bằng nhau với chính giá trị tổng các số của dãy đó. Yêu cầu: viết chương trình nhận vào các dãy số nguyên dương và trả về giá trị tổng nhỏ nhất có thể của một đoạn tổng bằng nhau trong dãy. Dữ liệu vào Dòng đầu tiên chứa một số nguyên 1 ≤ t ≤ 1000 là số lượng bộ test. Mỗi bộ test bao gồm:  Dòng đầu tiên chứa thứ tự bộ test và số M (1≤ M ≤ 10000) là số phần tử của dãy.  Các dòng tiếp theo mỗi dòng ghi 10 số của dãy phân cách bởi 1 dấu cách. Dòng cuối cùng có thể có ít hơn 10 số. (Các số trong dãy đều nhỏ hơn 20000).
  • 37. 36 Dữ liệu ra Với mỗi bộ test, in ra trên một dòng gồm số thứ tự bộ test và tổng nhỏ nhất có thể đạt được của các đoạn số có tổng bằng nhau. Example INPUT OUTPUT 31 6 2 5 1 3 3 7 2 6 1 2 3 4 5 6 3 20 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 1 72 21 3 2 onst fi=''; nmax=10000; type data=longint; var f:text; A:array[0..nmax+1] of data; n,test:data; function tknp(dau,cuoi,x:data):data; var giua:data; begin while dau<=cuoi do begin giua:=(dau+cuoi) div 2; if a[giua]=x then exit(giua) else if a[giua]>x then cuoi:=giua-1 else dau:=giua+1; end; exit(0);
  • 38. 37 end; function check(X,sl:data):boolean; var i,j,id,vt:data; begin id:=0; for i:=1 to sl do begin vt:=tknp(id,n,a[id]+x); if vt=0 then exit(false); id:=vt; end; exit(true); end; procedure xuli; var i,j:data; begin i:=a[n]; if a[n] mod i = 0 then if check(a[n] div i, i) then begin writeln(test,' ',a[n] div i); exit; end; i:=a[n] div 2; if a[n] mod i = 0 then if check(a[n] div i, i) then begin writeln(test,' ',a[n] div i); exit; end; for i:=trunc(sqrt(a[n])) downto 2 do if a[n] mod i = 0 then if check(a[n] div i, i) then begin writeln(test,' ',a[n] div i);
  • 39. 38 exit; end; writeln(test,' ',a[n]); end; procedure docfile; var i,j,sl:data; begin assign(f,fi); reset(f); read(f,sl); a[0]:=0; for i:=1 to sl do begin read(f,test,n); for j:=1 to n do begin read(f,a[j]); a[j]:=a[j-1]+a[j]; end; xuli; end; close(f); end; begin docfile; end. Bài tập 4: BONUS Spoj Tuấn là người chiến thắng trong một cuộc thi “tìm hiểu kiến thức vũ trụ” và được nhận các phần thưởng do công ty XYZ tài trợ. Các phần thưởng được bố trí trên một bảng hình vuông nxn có dạng một lưới ô vuông kích thước đơn vị. Các dòng của bảng được đánh số từ 1 đến n, từ trên xuống dưới và các cột của bảng được đánh số từ 1 đến n, từ trái qua phải. Ô nằm trên giao của dòng i và cột j được gọi là ô (i,j) và trên ô đó chứa một món quà có giá trị là a[i,j] (1 <= i, j <= n)
  • 40. 39 Đề nhận phần thưởng, Tuấn được phép chọn một hình vuông kích thước k x k chiếm trọn trong một số ô của bảng và nhận tất cả các phần quà có trong các ô nằm trong hình vuông đó. Yêu cầu: Hãy xác định tổng giá trị lớn nhất của món quà mà Tuấn có thể nhận được. Dữ liệu:  Dòng thứ nhất chứa hai sô nguyên dương n, k (n <= 1000, n/3 <= k <= n).  Dòng thứ i trong số n dòng tiếp theo chứa n số nguyên dương, số thứ j là a[i,j] (a[i,j] <= 1000) Kết quả:  Ghi ra một số nguyên duy nhất là tổng giá trị lớn nhất của các món quà mà Tuấn có thể nhận được. Ví dụ: INPUT OUTPUT Code tham khảo const fi=''; nmax=1000; type data=longint; var f:text; A:array[0..nmax+1,0..nmax+1] of longint; n,k:data; procedure xuli; var i,j:data; 4 3 1 9 1 1 9 9 9 9 1 9 9 9 1 9 9 14 86
  • 41. 40 res:data; begin assign(f,fi); reset(f); readln(f,n,k); for i:=0 to n do begin a[i,0]:=0; a[0,i]:=0; end; res:=low(data); for i:=1 to n do for j:=1 to n do begin read(f,a[i,j]); A[i,j]:=a[i,j]+a[i-1,j]+a[i,j-1]-a[i-1,j-1]; end; for i:=k to n do for j:=k to n do if res<A[i,j]-A[i-k,j]-A[i,j-k]+a[i-k,j-k] then res:=A[i,j]-A[i-k,j]-A[i,j-k]+a[i-k,j-k]; writeln(res); close(f); end; begin xuli; end.