Ta xét chương trình có sử dụng mảng một chiều cài đặt một số thuật toán giải những bài toán tìm kiếm và sắp xếp. Bài tập 1. Tìm phần tử lớn nhất của dãy số nguyên
program TimMax; uses crt; const Nmax = 250; type ArrInt = array[1..Nmax] of integer; var N,i, Max, csmax: integer; A: ArrInt; begin clrscr; write('Nhap so luong phan tu cua day so, N = '); readln(N); for i:=1 to N do begin write('Phan tu thu ',i,' = '); readln(A[i]); end; Max:= A[1]; csmax:=1; for i:=2 to N do if A[i]> Max then begin Max:= A[i]; csmax:= i; end; writeln('Gia tri cua phan tu Max: ', Max); writeln('Chi so cua phan tu Max: ', csmax); readln end. Bài tập 2. Sắp xếp dãy số nguyên bằng thuật toán tráo đổi
program sapxep; uses CRT; const Nmax = 250; type ArrInt = array[1..Nmax] of integer; var N,i,j,t: integer; A: ArrInt; begin clrscr; write('Nhap so luong phan tu cua day so, N = ');readln(N); for i:=1 to N do begin write('Phan tu thu ',i,' = '); readln(A[i]); end; for j:=N downto 2 do begin for i:=1 to j-1 do if A[i]> A[i+1] then begin (*Trao doi A[i] va A[i+1]*) t:= A[i]; A[i]:= A[i+1]; A[i+1]:= t end; end; writeln('Day so duoc sap xep la: '); for i:=1 to N do write(A[i]: 4); readln end. Bài tập 3. Tìm kiếm nhị phân
program TK_nhiphan; uses crt; const Nmax = 250; type ArrInt = array[1..Nmax] of integer; var N, i, k: integer; Dau, Cuoi, Giua: integer; A: Arrint; Tim_Thay: boolean; begin clrscr; write('Nhap so luong phan tu cua day so, N = '); readln(N); writeln('Nhap cac phan tu cua day so tang: '); for i:=1 to N do begin write('Phan tu thu ',i,' = '); readln(A[i]); end; write('Nhap gia tri k = '); readln(k); Dau:= 1; Cuoi:=N; Tim_thay:= false; while (Dau <= Cuoi) and not (Tim_Thay) do begin Giua:= (Dau+Cuoi) div 2; if A[Giua] = k then Tim_thay:= true else if A[Giua]>k then Cuoi:= Giua-1 else Dau:= Giua+1; end; if Tim_thay then writeln('Chi so tim duoc la: ', Giua) else writeln('Khong tim thay'); readln end. Dạng 2. Một số bài tập vận dụng về mảng hai chiềuBài tập 4. Chương trình sau tính và đưa ra màn hình bảng cửu chương.program BangCuuChuong; uses crt; var B: array[1..9,1..10] of integer; {B: bien mang hai chieu luu bang cuu chuong} i, j: integer; begin clrscr; for i:=1 to 9 do for j:= 1 to 10 do B[i,j]:= i*j; for i:=1 to 9 do begin for j:=1 to 10 do write(B[i,j]:4); writeln; end; readln end. Bài tập 5. Chương trình sau nhập vào từ bàn phím các phần tử của mảng hai chiều B gồm 5 dòng, 7 cột với các phần tử là các số nguyên và số nguyên k. Sau đó, đưa ra màn hình các phần tử của mảng có giá trị nhỏ hơn k.program MangHaiChieu; uses crt; var b: array[1..5, 1..7] of integer; d, i, j, k: integer; begin clrscr; writeln('Nhap cac phan tu cua mang theo dong: '); for i:= 1 to 5 do begin for j:= 1 to 7 do begin read(b[i,j]); write(' '); end; writeln; end; write('Nhap vao gia tri k = '); readln(k); d:= 0; writeln('DS cac phan tu mang nho hon ',k,':'); for i:= 1 to 5 do for j:= 1 to 7 do if b[i, j] < k then begin write(b[i, j], ' '); d:= d+1; end; if d = 0 then writeln(’Khong co phan tu nao nho hon ’,k); readln end. |