1. Trang chủ
  2. » Công Nghệ Thông Tin

Chuyên đề mảng 1 chiều ppt

57 1K 9

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 57
Dung lượng 816,45 KB

Nội dung

Kĩ thuật đặt lính canh các bt cơ bản 134/ Viết hàm tìm giá trị lớn nhất trong mảng 1 chiều các số thực float lonnhatfloat a[],int n 137/ Tìm 1 vị trí mà giá trị tại đó là giá trị nhỏ n

Trang 1

129/ Viết hàm nhập mảng 1 chiều các số nguyên

voi d NhapMang(i nt a[], int &n)

130/ Viết hàm xuất mảng 1 chiều các số thực

voi d XuatMang(float a[], int n)

131/ Viết hàm xuất mảng 1 chiều các số nguyên

voi d XuatMang(i nt a[], int n)

132/ Viết hàm liệt kê các giá trị chẵn trong mảng 1 chiều các số nguyên

voi d LietKe GiaTri Chan(int a[], int n)

133/ Viết hàm liệt kê các vị trí mà giá trị tại đó là giá trị âm trong mảng 1 chiều

voi d LietKeVi TriAm(int a[], int n)

Trang 2

Kĩ thuật đặt lính canh các bt cơ bản

134/ Viết hàm tìm giá trị lớn nhất trong mảng 1 chiều các số thực

float lonnhat(float a[],int n)

137/ Tìm 1 vị trí mà giá trị tại đó là giá trị nhỏ nhất trong mảng 1 chiề u các số thực

float vitrinhonhat(float a[],int n)

138/ Tìm Vị trí của giá trị chẵn đầu tiên trong mảng một chiề u các số nguyên Nếu mảng ko có giá trị chẵn thì trả về giá trị -1

int vitrichandau(i nt a[] , int n)

Trang 4

142/ Tìm Giá trị nhỏ nhất trong mảng 1 chiề u các số thực

float NhoNhat(float a[], int n)

{

fl oat min = a[0];

for (i nt i =1; i<n; i++)

Trang 5

145/ Tìm Số hoàn thiệ n đầu tiên trong 1 chiề u các số nguyên Nếu mảng ko có số hoàn thiện thì trả

Trang 6

int hoanthiencuoi(int a[],int n)

Trang 8

154/ hãy tìm vị trí giá trị âm lớn nhất trong mảng số thực ko có thì trả về -1

int VTriAmMax(fl oat a[], int n)

Bài tập luyện tư duy

155/ hãy tìm giá trị trong mảng các số thực xa giá trị x nhất

voi d kcxanhat(fl oat *A , i nt n , fl oat x )

Trang 9

157/ hãy tìm đoạn [a,b] sao cho đoạn này chứa tất cả các giá trị trong mảng

voi d ti mdoan(st* A, int n)

158 hãy tìm giá trị x sao cho đoạn [-x,x] chứa tất cả các giá trị trong mảng

float ti mx(float* A, int n)

161/ hãy tìm giá trị đầu tiên nằm trong khỏang (x,y) cho trc Nếu ko có trả về giá trị x

[FONT="]int dautie ntr ong doan(int a[], i nt n, i nt x, int y)[/ FONT]

[FONT="]{[/ FONT]

[FONT="] int de m =0;[/ FONT]

[FONT="] for(int i=0; i<n;i++)[/ FONT]

[FONT="] {[/ FONT]

[FONT="] if ((a[i]>=x)&&(a[i ]<=y))[/ FONT]

[FONT="] {[/ FONT]

[FONT="] de m++;[/ FONT]

Trang 10

[FONT="] bre ak;[/ FONT]

Trang 12

167/ Tìm giá trị toàn là chữ số lẻ và lớn nhất trong những số thỏa điều kiện ko có trả về 0 int toanchusole(int n)

Trang 13

int max = a[0 ];

for(int i=1; i<n; i ++)

int max = l onnhat(A, n);

for (i nt i = max + 1; i>max; i++)

{

Trang 14

int min = a[0];

for (i nt i =1; i<n; i++)

min = (min < a[i])? min: a[i];

172/ Hãy tìm bội số chung nhỏ nhất trong mảng nguyên

int solonnhat(int A[], int n)

int boiso = max ;

for (i nt i =0; i<n; i++)

Trang 15

}

173 * Hãy viết hàm tìm chữ số xuất hiện ít nhất trong mảng

int ChuSo(int a[], int n)

174 * Hãy viết hàm liệ t kê các cẵp giá trị (a,b) trong mảng thỏa đk a<=b

voi d LietKe(int a[], int n)

175 * Hãy viết hàm tìm 2 giá trị gần nhau nhất trong mảng

voi d LietKe(int a[], int n)

Trang 16

Các bài tập tìm kiếm và liệ t kê

176/Liệt kê các số âm trong mảng số thực

voi d xuatk q(fl oat a[],int m)

177/ Liệt kê các số trong mảng thực thuộc [x,y] cho trước

voi d LietKetTr ongDoanXY(fl oat a[], int n, float x, fl oat y)

178 Liệt kê các số chẵn trong mảng nguyên thuộc [x,y]

voi d LietKetChanTr ong DoanXY(int a[], int n, int x, int y)

179/ Liệt kê các số thỏa đk lớn hơn trị tuyệt đối của số đứng liền sau nó

voi d LietKe(int a[], int n)

181 Liệt kê số chẵn có ít nhất 1 lận cận cũng là giá trị chẵn

182 Liệt kê các số có ít nhất 1 lận cận trái dấu với nó

183 Liệt kê vị trí mà giá trị tại đó là giá trị lớn nhất

184 Liệt kê vị trí của số nguyên tố

185 Liệt kê vị trí của số chính phương

186 Liệt kê vị trí mà giá trị bằng giá trị âm đầu tiên

Trang 17

187 Liệt kê vị trí mà giá trị bằng giá trị dương nhỏ nhất

188 Liệt kê vị trí chẵn lớn nhất

189 Liệt kê giá trị mà giá trị đó có chữ số đầu tiên là chữ số lẻ

190 Liệt kê giá trị tòan chữ số lẻ

191 Liệt kê các giá trị cực đại Cực đại khi lớn hơn các ptử lận cận

192 Liệt kê giá trị có chữ số đầu tiên là chẵn

193 Liệt kê giá trị có dạng 3^k Nếu mảng ko có thì trả về 0

194 Liệt kê các cặp giá trị gần nhau nhất

195 Liệt kê các bộ 3 giá trị (a,b,c) thỏa a=b+c ví dụ: (6,2,4)

196 Liệt kê các số âm

197 Liệt kê các chữ số đầu là lẻ

198 Liệt kê các vị trí mà tại đó là giá trị max

199 Liệt kê vị trí mà giá trị đó là số nguyên tố

Trang 18

204/ Tổng các ptử lớn hơn ptử đứng liền trước nó

int tonggiatri(int A[], i nt n)

206/ Tổng các ptử lớn hơn ptử xung quanh

int tonggiatri(int A[], i nt n)

Trang 20

s=s+A[i ];

Trang 21

214/ Trung bình nhân các số dương

float TB NhanDuong(i nt A[], int n, int m)

Trang 22

217/ Đếm số dương chia hế t cho 7 trong mảng

int de msochan(int a[], int n)

Trang 23

219/ Đếm số lần xuất hiện của giá trị x trong mảng

int de m (int a[], int n,int x)

220 Đếm số lượng giá trị tận cùng bằng 5 trong mảng

int de m (int a[], int n)

Trang 24

222/ Đếm ptử lớn hơn hay nhỏ hơn ptửs xung quanh trong mảng

int De m(int A[], int n)

224/ Đếm số hoàn thiện trong mảng

int sohoanthie n(int n)

{

int tong=0 ;

Trang 25

225/ Đếm số lượng giá trị lớn nhất có trong mảng

int De m(int a[], int n)

{

int i=0,De mTam=0;

int Max = a[0];

227/ Hãy xác định số lượng ptử kề nhau mà cả 2 trái dấu

int De m(int a[], int n)

{

int i=0,De mTam=0;

for (i =0; i <n-1 ; i++)

{

Trang 26

229/ Đếm số lượng các giá trị phân biệt có trong mảng

int De m(int a[], int n)

{

int i,j,De mTam=0,test;

for (i=0; i<n; i++)

230/ Liệt kê tần suất xuất hiện các giá trị xuất hiện trong mảng (mỗi giá trị liệt kê 1 lần)

voi d lietke(int *a, int n)

Trang 27

231/ Hãy liệt kê các giá trị xuất hiện đúng 1 lần trong mảng

voi d lietke(int a[], int n)

printf("Gi a tri c hi xuat hien dung 1 l an\n\t");

for (i nt k=0 ; k<vi tri; k++)

232/ hãy liệt jê các giá trị xuất hiện quá 1 lần (mỗi giá trị liệt kê 1 lần)

voi d lietke(int a[], int n)

Trang 28

printf("Gi a tri c hi xuat hien dung 1 l an\n\t");

for (i nt k=0 ; k<vi tri; k++)

233/ Hãy liệt kê tần suất các giá trị xuất hiện trong mảng

voi d lietke(int *a, int n)

234/ Cho 2 mảng a,b Đếm ptử chỉ xuất hiện 1 trong 2 mảng

int De m(int a[],i nt b[], int na,int nb)

Trang 29

235/ Cho 2 mảng a,b Liệt kê ptử xuất hiện 1 trong 2 mảng

voi d LietKe(int a[],int b[], int na,int nb)

236 * Cho 2 mảng a,b Hãy cho biết số lần xuất hiện của mảng a trong mảng b

int De m(int a[],i nt b[], int na,int nb)

Trang 30

int MotGi aTriXuatHienNhieuNhat(int a[],int n)

int flag [100]={0},i,j,De m1;

//Tien hanh gan mảng fl ag == nhung c on so de m dc

//Liet ke c ac so xuat hien nhieu nhat

printf("So xuat hien nhie u nhat trong mang : ")

Trang 31

240/ Ktra mảng có giá trị 0 hay ko?Có trả về 1, ko có trả về 0

int kiemtr a0(int A[] , int n)

{

int flag = 0; //xe m như mảng ko c ó giá trị 0

for(int i=0 ; i<n ;i++)

Trang 33

}

retur n flag;

}

245/ Ktra mảng có toàn số chẵn ko? Có trả về 1, ko có trả về 0

int kttoanchan(int A[] , int n)

246/ Ktra mảng có đối xứng ko? Có trả về 1, ko có trả về 0

int ktdoixung(int A[] , int n)

248/ Ktra mảng có tăng dần hay ko?

int kttang dan(int A[] , int n)

249/ Ktra mảng có giảm dần hay ko?

int ktgiam(int A[] , i nt n)

{

Trang 34

251/ Hãy cho biết các ptử trong mảng có bằng nhau ko?

int ktbangnhau(int A[] , i nt n)

253/ Hãy cho biết tất cả ptử trong mảng a có nằm trong mảng b ko?

int ktAnamtrongB(int A[] , int B[] , int n , int m)

{

int flag = 0;

int de m = 0;

for(int i = 0 ; i < n ; i ++)

Trang 36

257/ Sắp xếp lẻ tăng dần nhưng giá trị khácgiữ nguyên vị trí

voi d sapxe p(int a[],int n)

Trang 37

261 Sắp xếp số dương tăng dần, các số âm giữ nguyên vị trí

voi d sapxe p(int a[],int n)

{

for (i nt i =0;i<n;i++)

{

Trang 38

if (a[i]>0 )

{

for (int j=i +1;j<n;j++) {

if (a[j]>0 && a[i]>a[j]) {

int te mp=a[i]; a[i] = a[j]; a[j]=te mp; }

}

}

}

} 262/ Sắp xếp chẵn, lẻ tăng dần nhưng vị trí tương đối giữa các số ko thay đổi voi d sapxe p(int a[],int n) { for (i nt i =0;i<n;i++) {

for (int j=i +1;j<n;j++) {

if (((a[i]% 2==0 && a[j]% 2==0)||(a[i]% 2!=0 && a[j]% 2!=0)) && a[i]>a[j]) {

int te mp=a[i]; a[i] = a[j]; a[j]=te mp; }

}

}

} 263/ Sắp xếp số dương tăng dần, âm giảm dần Vị trí tương đối ko đổi voi d sapxe p(int a[],int n) { for (i nt i =0;i<n;i++) {

for (int j=i +1;j<n;j++) {

if (a[i]>0 && a[j]>0 && a[i ]>a[j]) {

int te mp=a[i]; a[i] = a[j]; a[j]=te mp; }

else if (a[i]<0 && a[j]<0 && a[i ]<a[j]) {

int te mp=a[i]; a[i] = a[j]; a[j]=te mp; }

}

}

} 264 Trộn 2 mảng đã tăng thành 1 mảng đc sắp xếp tăng voi d sapxe p(int a[],int n) { for (i nt i =0;i<n;i++) {

for (int j=i +1;j<n;j++) {

if (a[i]>a[j]) {

int te mp=a[i];

a[i] = a[j];

a[j]=te mp;

Trang 39

sapxe p(a,na); //Sap xe p tang mang A

sapxe p(b,nb); //Sap xe p tang mang B

sapxe p(a,na); //Sap xe p tang mang A

sapxe p(b,nb); //Sap xe p tang mang B

Trang 40

266/ Thêm 1 ptử x vào mảng tại vị trí k

voi d the mgiatri(int a[], i nt &n, i nt x, int k)

printf("Nhap mang 1 chieu\n");

printf("Nhap n : "); scanf("% d",&n);

268/ Hãy tạo mảng b từ mảng a các giá trị 0,1 để mảng có tính chẵn lẻ

269/ Thêm x vào trong mảng tăng nhưng vẫn giữ nguyên tính tăng của mảng

voi d ChenXMang Tang(int a[], int &n, int x)

Trang 41

printf("Nhap mang 1 chieu\n");

printf("Nhap n : "); scanf("% d",&n);

Trang 42

fl oat max = a[0];

for (i nt i =1; i<n ; i++)

{

max=(max<a[i ])?a[i]:max; }

retur n max;

}

voi d xoamang(fl oat a[], int &n)

{

fl oat max = lonnhat(a,n);

for (i nt i =0; i<n; i++)

{

if (a[i]==max)

{

xoavi tri(a,n,i ); i ;

}

}

}

Trang 43

275/ Xóa tất cả số chính phương trong mảng voi d xoavitri(int a[], i nt &n, int k)

Trang 44

279/ Xóa tất cả ptử xuất hiên nhiều hơn 1 lần trong mảng

voi d xoavitri(int a[], i nt &n, int k)

Trang 45

}

}

}

Kĩ thuật xử lý mảng

280/ Hãy đưa số 1 về đầu mảng

voi d DoiCho(int a[], int n, int k)

int tam = a[k];

for(int i = k ; i>0; i )

Trang 46

dua0(a,i,vitrichanc uoi); // vi tri i }

int tam = a[k];

for(int i = k ; i>0; i )

283/ Đảo ngược mảng ban đầu

voi d hoanvi(i nt &a, int &b)

hoanvi (a[i],a[j]); }

Trang 47

286/ Dịch trái xoay vòng các ptử trong mảng

voi d dichtr ai(int a[], int n)

{

int tam = a[0];

for (i nt i =0; i<n-1; i++)

287/ Dịch phải xoay vòng các ptử trong mảng

voi d dichphai (int a[], int n)

{

int tam = a[n-1];

for (i nt i =n-1; i>0; i )

mau = Ge tStdHandle(STD_OUTPUT_ HANDLE);

SetConsole TextAttri bute(mau,a);

Trang 48

290/ Đảo ngược thứ tự số chẵn và lẻ trong mảng nhưng giữ vị trí tương đối

voi d hoanvi(i nt &a, int &b)

291/ Biến đổi mảng bằng cách thay giá trị max = giá trị min và ngc lại

voi d mi nmax(int a[], int n, int &max, int &min)

Trang 49

int phannguyen = (int) (n) ;

fl oat phanle = n - phannguye n;

if (phanle <=0.5)

{

n = (fl oat)phannguye n; }

else {

n = (fl oat)phannguye n + 1; }

} voi d biendoi(float a[], int n) { for (i nt i =0; i<n; i++) {

thaysogannhat(a[i]); }

} Kĩ thuật xử lý mảng con 293/ Liệt kê tất cả các mảng con voi d lietkecon(int a[], int n) { int ChieuDai; for (i nt i =0; i<n; i++) {

for (ChieuDai = 1; ChieuDai<=n; ChieuDai ++) {

for(int j=i; j<ChieuDai; j++) {

printf("% 4d", a[j]); }

printf("\n");

}

}

} 294/ Liệt kê mảng con có độ dài lớn hơn 2 ptử voi d lietkecon(int a[], int n) { int ChieuDai; for (i nt i =0; i<n; i++) {

for (ChieuDai = 3+i; ChieuDai<=n; ChieuDai++) {

for(int j=i; j<ChieuDai; j++) {

printf("% 4d", a[j]); }

printf("\n");

}

}

} 295/ Liệt kê dãy con tăng dần int ktramangtang (int b[], i nt nb) { for(int i=0; i<nb-1 ; i++) {

if (b[i ]>b[i+1 ]) retur n 0; }

retur n 1;

}

voi d xuatmangcon(int b[], int nb)

Trang 50

int max = a[0 ];

for (i nt i =1; i<n; i++)

Trang 51

{

int ChieuDai;

int b[100], nb;

for (i nt i =0; i<n; i++)

{

for (ChieuDai = 1; ChieuDai<=n; ChieuDai ++) {

nb=0; for(int j=i; j<ChieuDai; j++) {

b[nb]=a[j]; nb++; }

if (ktramangtang(b,nb)==1) {

if (ktrac omax(b,nb,max)==1) {

xuatmangcon(b,nb); }

}

}

}

} 297/ Tính tổng từng mảng con tăng int ktramangtang (int b[], i nt nb) { for(int i=0; i<nb-1 ; i++) {

if (b[i ]>b[i+1 ]) retur n 0; }

retur n 1; } voi d xuatmangcon(int b[], int nb) { for(int i=0; i<nb; i++) {

printf(" % d ", b[i]); }

} intt tongmangc on(int b[], i nt nb) { intt s=0; for (i nt i =0; i<nb; i++) {

s = s + b[i]; }

retur n s; } voi d lietkecontang(int a[], int n) { int chieudaicon, b[100], nb, tong ; for (i nt i =0; i<n; i++) {

for (chieudaicon = 1+i; chieudaic on<=n; c hieudaicon++) {

for(int j=i; j<chieudaicon; j++) {

b[nb]=a[j]; nb++; }

if (ktramangtang(b,nb)==1) {

xuatmangcon(b,nb); tong = tong mangcon(b,nb); printf("\tTong mang nay: % 2f\n", tong); }

Trang 52

}

}

}

298/ Đếm mảng con tăng có độ dài lớn hơn 1

int ktramangtang (int b[], i nt nb)

299/ Liệt kê dãy con toàn dương và độ dài lớn hơn 1

int ktramang duong(fl oat b[], int nb)

Trang 53

}

retur n test;

}

302/ Đếm số lần xuất hiện mảng a trong mảng b

int De m(int a[], int b[], int na, int nb)

{

int i,j,test,de m=0;

Trang 54

for (i =0; i <nb; i++)

{

if (b[i ]==a[0]) {

int h = i; for (test=1, j=0; j<na;j++,h++) {

if (a[j] != b[h]) {

test = 0; bre ak; }

}

if (test == 1) de m++; }

}

retur n de m; } 303/ Dãy con toàn dương dài nhất voi d DayConToanDuongDaiNhat(int a[], i nt n) { int i,l,k,test,vt,pt=0; for (i =0;i<n;i++) {

for (l=i; l <=n;l++) {

for (test = 1,k=0; k<l ; k++) {

if (a[k]<0) {

test = 0; break; }

}

if (test == 1) {

if (pt<k) {

pt=k; vt=i ; }

}

}

}

printf("\nDay c on duong dai nhat: "); for (vt; vt<pt; vt++) printf("% 4d",a[vt]); } 304 * Cho mảng a, số nguyên M.Tìm 1 mảng con sao cho tổng các ptử bằng M voi d Tong MangConB ang M(int a[], int n,int m) { int i,l,k,s=0; for (i =0;i<n;i++) {

for (l=i; l <=n;l++) {

for (k=0; k<l ; k++) s+=a[k]; if (s == m) {

printf("\nDay c on co tong ptu bang M: "); for (k=0; k<l ; k++) printf("% 4d",a[k]); }

Ngày đăng: 21/06/2014, 09:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w