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)
{
for (i nt i =0;i<n;i++)
{
if (a[i]% 2!=0)
{
for (int j=i +1;j<n;j++)
{
if (a[j]% 2!=0 && a[i ]>a[j])
{
int te mp=a[i];
a[i] = a[j];
a[j]=te mp;
}
}
}
57 trang |
Chia sẻ: maiphuongdc | Lượt xem: 3071 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Chuyên đề bài tập Mảng 1 chiều, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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ố
Kĩ thuật tính tổng
200 Tổng các ptử trong mảng
int tong(int A[], int n)
{
int s=0;
for (int i=0; i<n; i++)
{
s = s + A[i];
}
return s;
}
201/ Tổng các ptử dương trong mảng
int Tong (int A[], int n)
{
int s = 0;
for (int i=0; i<n; i++)
{
if (A[i]>0)
{
s=s+A[i];
}
}
return s;
}
202/ Tổng các ptử có chữ số đầu là chữ số lẻ
int daule(int n)
{
int donvi;
n=abs(n);
while (n>=10)
{
donvi=n% 10;
n=n/10;
}
if (n% 2==0)
{
return 0;
return 1;
}
int tongdaule(int A[], int n)
{
int s=0;
for (int i=0; i<n; i++)
{
if (daule(A[i])==1)
{
s = s + A[i];
}
}
return s;
}
203/ Tổng các ptử có chữ số hàng chục là 5
int hangchuc5(int n)
{
n = abs(n);
n=n/10;
int hangchuc=n% 10;
if (hangchuc == 5)
{
return 1;
}
return 0;
}
int tong(int A[], int n)
{
int s=0;
for (int i=0; i<n; i++)
{
if (hangchuc5(A[i])==1)
{
s = s + A[i];
}
}
return s;
}
204/ Tổng các ptử lớn hơn ptử đứng liền trước nó
int tonggiatri(int A[], int n)
{
int s = 0 ;
for (int i=1; i<n; i++)
{
if (A[i]>A[i-1])
{
s=s+A[i];
}
}
return s;
}
205/ Tổng các ptử lớn hơn trị tuyệt đối của ptử liền sau nó
int tonggiatri(int A[], int n)
{
int s=0;
for (int i=0; i<n-1; i++)
{
if ( A[i] > abs(A[i+1]) )
{
s=s+A[i];
}
}
return s;
}
206/ Tổng các ptử lớn hơn ptử xung quanh
int tonggiatri(int A[], int n)
{
int s=0;
for (int i=0; i<n; i++)
{
if (i==0 && A[i]>A[i+1])
{
s = s + A[i];
}
else if (i!=0 && A[i]>A[i+1] && A[i] > A[i-1])
{
s = s + A[i];
}
else if (i==n-1 && A[i] > A[i-1])
{
s = s + A[i];
}
}
return s;
}
207/ Tổng các ptử cực trị – Cực trị là ptử khi nó lớn hoặc nhỏ hơn ptử xung quanh
int tongcuctri (int A[], int n)
{
int s=0;
for (int i= 0; i<n; i++)
{
if (i==0 && A[i]!=A[i+1])
{
s = s + A[i];
}
else if (i==n-1 && A[i]!=A[i -1])
{
s = s + A[i];
}
else if ((A[i]A[i+1] && A[i]>A[i-1]) )
{
s = s + A[i];
}
}
return s;
}
208/ Tổng các ptử chính phương
int sochinhphuong(int n)
{
int can = sqrt(n);
if (can*can == n)
return 1;
return 0;
}
int Tong(int* A, int n)
{
int s=0;
for (int i= 0; i<n; i++)
{
if (sochinhphuong(A[i])==1)
{
s=s+A[i];
}
}
return s;
}
209/ Tổng các ptử đối xứng
int sodoixung(int n)
{
int donvi , tam = n;
int sodaonguoc = 0;
while(tam!=0)
{
donvi = tam% 10;
sodaonguoc = sodaonguoc*10 + donvi;
tam = tam/10;
}
if (sodaonguoc == n)
{
return 1;
}
return 0;
}
int tong(int A[], int n)
{
int s=0;
for (int i= 0; i<n; i++)
{
if (sodoixung(A[i])==1)
{
s=s+A[i];
}
}
return s;
}
210/ Tổng các ptử có chữ số đầu là chẵn
int sodauchan(int n)
{
while(n>=10)
{
n=n/10;
}
if (n% 2 == 0)
{
return 1;
}
return 0;
}
int tong(int A[], int n)
{
int s=0;
for (int i= 0; i<n; i++)
{
if (sodauchan(A[i])==1)
{
s=s+A[i];
dem ++;
}
}
return s;
}
211/ Trung bình cộng các số nguyên tố
int songuyento(int n)
{
for(int i=2; i<n-1; i++)
{
if (n % i == 0)
return 0;
}
return 1;
}
float TBCong(int A[], int n)
{
int s=0;
float dem=0;
for (int i= 0; i<n; i++)
{
if (songuyento(A[i])==1)
{
s=s+A[i];
dem ++;
}
}
if (dem == 0)
{
printf("Mang ko co so thoa yeu cau de");
return 0;
}
return s/dem;
}
212/ Trung bình cộng các số dương
float TrungBinhCong(int A[], int n)
{
int s=0;
float dem=0;
for (int i= 0; i<n; i++)
{
if (A[i]>0)
{
s=s+A[i];
dem ++;
}
}
if (dem == 0)
{
printf("Mang ko co so thoa yeu cau de");
return 0;
}
return s/dem;
}
213/ Trung bình cộng các số lớn hơn x
float TBCong(int A[], int n, int x)
{
int s=0;
float dem=0;
for (int i= 0; i<n; i++)
{
if (A[i]>x)
{
s=s+A[i];
dem ++;
}
}
if (dem == 0)
{
printf("Mang ko co so thoa yeu cau de");
return 0;
}
return s/dem;
}
214/ Trung bình nhân các số dương
float TBNhanDuong(int A[], int n, int m)
{
int T=1;
float dem=0;
for (int i= 0; i<n; i++)
{
if (A[i]>0)
{
T*=A[i];
dem ++;
}
}
if (dem == 0)
{
printf("Mang ko co so thoa yeu cau de");
return 0;
}
return pow(T,1.0/dem);
}
215 (*) Khoảng cách trung bình giữa các giá trị trong mảng
double tong(int A[], int n)
{
int s=0;
int y=0;
for (int i= 0; i<n; i++)
{
for (int j=i+1;i<n;j++)
{
s = s + abs(A[i ]-A[i+1]);
y++;
}
}
return pow(s,1.0/y);
}
Kĩ thuật đếm
216/ Đếm số lượng chẵn trong mảng
int demsochan(int a[], int n)
{
int dem = 0;
for (int i=0; i<n; i++)
{
if (a[i]% 2 == 0)
{
dem ++;
}
}
return dem;
}
217/ Đếm số dương chia hết cho 7 trong mảng
int demsochan(int a[], int n)
{
int dem = 0;
for (int i=0; i<n; i++)
{
if (a[i]>0 && a[i]% 7 == 0)
{
dem ++;
}
}
return dem;
}
218/ Đếm số đối xứng trong mảng
int SoDoiXung(int n)
{
int DonVi=0;
int DaoNguoc = 0;
int tam = n;
while (tam>0)
{
DonVi = tam % 10;
tam = tam / 10;
DaoNguoc = DaoNguoc*10 + DonVi;
}
if (DaoNguoc == n)
{
return 1;
}
return 0;
}
int dem (int a[], int n)
{
int dem = 0;
for (int i=0; i<n; i++)
{
if (a[i]<0)
{
break;
}
if (SoDoiXung(a[i ])==0)
{
dem ++;
}
}
return dem;
}
219/ Đếm số lần xuất hiện của giá trị x trong mảng
int dem (int a[], int n,int x)
{
int dem = 0;
for (int i=0; i<n; i++)
{
if (a[i] ==x)
{
dem ++;
}
}
return dem;
}
220 Đếm số lượng giá trị tận cùng bằng 5 trong mảng
int dem (int a[], int n)
{
int dem = 0;
for (int i=0; i<n; i++)
{
if (a[i]% 10 == 5)
{
dem ++;
}
}
return dem;
}
221/ Cho biết sự tương quan giữa số lượng chẵn và lẻ trong mảng
Hàm trả về 1 trong 3 giá trị -1, 0, 1
Giá trị -1 là chẵn nhiều hơn lẻ
Giá trị 0 là chẵn == lẻ
Giá trị 1 là chẵn ít hơn lẻ .
int SoSanhChanLe(int a[], int n)
{
int demchan = 0;
for (int i=0; i<n; i++)
{
if (a[i]% 2 == 0)
{
demchan++;
}
}
if (demchan > n - demchan)
{
return -1;
}
else if (n - demchan == demchan)
{
return 0;
}
return 1;
}
222/ Đếm ptử lớn hơn hay nhỏ hơn ptửs xung quanh trong mảng
int Dem(int A[], int n)
{
int i=0,j=0, DemTam=0;
for (i=0; i<n; i++)
{
if (i==0 && A[i]!=A[i+1])
{
DemTam++;
}
else if ( i == n-1 && A[i-1]!=A[i])
{
DemTam++;
}
else if ((A[i-1]>A[i] && A[i]A[i+1]) )
{
DemTam++;
}
}
return DemTam;
}
223: Đếm số nguyên tố trong mảng
int SoNguyenTo(int a)
{
if (a<=1)
{
return 0;
}
for (int i=2; i<a; i++)
{
if (a% i==0)
{
return 0;
}
}
return 1;
}
int Dem(int a[], int n)
{
int i=0, DemTam=0;
for (i=0; i<n; i++)
{
if (SoNguyenTo(a[i])==1)
{
DemTam++;
}
}
return DemTam;
}
224/ Đếm số hoàn thiện trong mảng
int sohoanthien(int n)
{
int tong=0;
for (int i=1 ; i<n; i++)
if(n% i==0)
tong = tong + i;
if (tong == n)
return 1;
return 0;
}
int Dem(int a[], int n)
{
int i=0, DemTam=0;
for (i=0; i<n; i++)
{
if (sohoanthien(a[i])==1)
{
DemTam++;
}
}
return DemTam;
}
225/ Đếm số lượng giá trị lớn nhất có trong mảng
int Dem(int a[], int n)
{
int i=0,DemTam=0;
int Max = a[0];
for (i=0; i<n; i++)
{
if (Max == a[i])
{
DemTam++;
}
else if (Max < a[i])
{
Max = a[i];
DemTam = 1;
}
}
return DemTam;
}
226/ Hãy xác định số lượng ptử kề nhau mà cả 2 đều chẵn
int Dem(int a[], int n)
{
int i=0,DemTam=0;
for (i=0; i<n-1; i++)
{
if (a[i]% 2==0 && a[i+1]% 2==0)
{
DemTam++;
}
}
if (DemTam!=0)
{
DemTam++;
}
return DemTam;
}
227/ Hãy xác định số lượng ptử kề nhau mà cả 2 trái dấu
int Dem(int a[], int n)
{
int i=0,DemTam=0;
for (i=0; i<n-1; i++)
{
if (a[i]*a[i+1]<0)
{
DemTam++;
}
}
if (DemTam!=0)
{
DemTam++;
}
return DemTam;
}
228/ Hãy xác định số lượng ptử kề nhau mà số đứng sau cùng dấu số đứng trc và có gtrá trị tuyệt
đối lớn hơn .
int Dem(int a[], int n)
{
int i=0,DemTam=0;
for (i=1; i<n; i++)
{
if (a[i]*a[i-1]>0 && abs(a[i-1])<abs(a[i]))
{
DemTam++;
}
}
return DemTam;
}
229/ Đếm số lượng các giá trị phân biệt có trong mảng .
int Dem(int a[], int n)
{
int i,j,DemTam=0,test;
for (i=0; i<n; i++)
{
for (test=1,j=i+1;j<n;j++)
{
i f (a[i ]==a[j])
{
test =0;
break;
}
}
i f (test == 1)
{
DemTam++;
}
}
return DemTam;
}
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)
void lietke(int *a, int n)
{
for (int i=0; i<n; i++)
{
for (int dem=0, j=0; j<n; j++)
{
if (a[i] == a[j])
{
if (j<i)
{
break;
}
else
{
dem++;
}
}
}
if (dem!=0 )
{
printf("Gia tri % d co tan suat xuat hien la % d\n", a[i ], dem );
}
}
}
231/ Hãy liệt kê các giá trị xuất hiện đúng 1 lần trong mảng
void lietke(int a[], int n)
{
int c[100];
int dem[100];
int vitri = 0;
for (int i=0; i<n; i++)
{
for (int demtam=0, j=0; j<n; j++)
{
if (a[i] == a[j])
{
if (j<i)
{
break;
}
else
{
demtam++;
}
}
}
if (demtam!=0 )
{
c[vi tri] = a[i ];
dem[vitri ] = demtam;
vi tri++;
}
}
printf("Gia tri chi xuat hien dung 1 lan\n\t");
for (int k=0; k<vitri; k++)
{
if (dem[k] == 1)
{
printf(" % d ", c[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)
void lietke(int a[], int n)
{
int c[100];
int dem[100];
int vitri = 0;
for (int i=0; i<n; i++)
{
for (int demtam=0, j=0; j<n; j++)
{
if (a[i] == a[j])
{
if (j<i)
{
break;
}
else
{
demtam++;
}
}
}
if (demtam!=0 )
{
c[vi tri] = a[i ];
dem[vitri ] = demtam;
vi tri++;
}
}
printf("Gia tri chi xuat hien dung 1 lan\n\t");
for (int k=0; k<vitri; k++)
{
if (dem[k] != 1)
{
printf(" % d ", c[k]);
}
}
}
233/ Hãy liệt kê tần suất các giá trị xuất hiện trong mảng
void lietke(int *a, int n)
{
for (int i=0; i<n; i++)
{
for (int dem=0, j=0; j<n; j++)
{
if (a[i] == a[j])
{
if (j<i)
{
break;
}
else
{
dem++;
}
}
}
if (dem!=0 )
{
printf("Gia tri % d co tan suat xuat hien la % d\n", a[i ], dem );
}
}
}
234/ Cho 2 mảng a,b. Đếm ptử chỉ xuất hiện 1 trong 2 mảng
int Dem(int a[],int b[], int na,int nb)
{
int i,j,test,DemTam=0;
for (i=0; i<na; i++)
{
test=1;
for (j=0; j<nb; j++)
{
if (a[i]==b[j])
{
test = 0; break;
}
}
if (test==1)
{
DemTam++;
}
}
for (i=0;i<nb;i++)
{
test=1;
for (j=0; j<na;j++)
{
if (b[i]==a[j])
{
test=0; break;
}
}
if (test==1)
{
DemTam++;
}
}
return DemTam;
}
235/ Cho 2 mảng a,b. Liệt kê ptử xuất hiện 1 trong 2 mảng
void LietKe(int a[],int b[], int na,int nb)
{
int i,j;
for (i=0; i<na; i++)
{
for (j=0; j<nb; j++)
{
if (a[i]==b[j])
{
printf("trong Mang A co ptu a[% d]=% d ko nam trong mang B\n",i,a[i]);
break;
}
}
}
for (i=0;i<nb;i++)
{
for (j=0; j<na;j++)
{
if (b[i]==a[j])
{
printf("trong Mang B co ptu b[% d]=% d ko nam trong mang A\n",i,b[i]);
break;
}
}
}
}
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 Dem(int a[],int b[], int na,int nb)
{
int i,j,h,test,DemTam=0;;
for (i=0; i<nb; i++)
{
if (b[i ]==a[0] && nb-i>=na)
{
h=i;
for (test=1,j=0; j<na; j++,h++)
{
if (a[j] != b[h])
{
test=0;
break;
}
}
if (test==1)
{
DemTam++;
}
}
}
return DemTam;
}
237/ Tìm 1 giá trị có số lần xuất hiện nhiều nhất trong mảng
int MotGiaTriXuatHienNhieuNhat(int a[],int n)
{
int flag[100]={0},i,j,Dem1;
for (i=0; i<n ; i++)
{
if (flag[i]==0)
{
for (Dem1=0,j=0;j<n;j++)
{
if (a[i] == a[j])
{
flag[j] = Dem1++;
}
}
}
}
int XuatHienMax = flag[0],vt=0;
for (i=0;i<n;i++)
{
if (XuatHienMax < flag[i ])
{
XuatHienMax = flag[i ];
vt = i;
}
}
return a[vt];
}
238 * Hãy liệt kê các giá trị có số lần xuất hiện nhiều nhất trong mảng
void LietKe(int a[],int n)
{
int flag[100]={0},i,j,Dem1;
//Tien hanh gan mảng flag == nhung con so dem dc
for (i=0; i<n ; i++)
{
if (flag[i]==0)
{
for (Dem1=0,j=0;j<n;j++)
{
if (a[i] == a[j])
{
flag[j] = Dem1++;
}
}
}
}
//flag nao co so lon nhat thi chinh la vi tri so dem dc nhieu nhat trong ma tran
int XuatHienMax = flag[0];
for (i=0;i<n;i++)
{
if (XuatHienMax < flag[i ])
{
XuatHienMax = flag[i ];
}
}
//Liet ke cac so xuat hien nhieu nhat
printf("So xuat hien nhieu nhat trong mang : ")
for (i=0;i<n;i++)
{
if (XuatHienMax == flag[i])
{
printf(" % d ",a[i]);
}
}
}
239/ Hãy đếm số lượng số nguyên tố phân biệt trong mảng
int SoNguyenTo(int a)
{
if (a<=1)
{
return 0;
}
for (int i=2; i<a; i++)
{
if (a% i==0)
{
return 0;
}
}
return 1;
}
int Dem (int a[], int n)
{
int i,j, test,DemTam=0;
for (i=0;i<n;i++)
{
if (SoNguyenTo(a[i])==1)
{
for (test=1,j=i+1;j<n;j++)
{
if (a[i] == a[j] )
{
test =0;
break;
}
}
}
if (test == 1)
{
DemTam++;
}
}
return DemTam;
}
Kĩ thuật đặt cờ hiệu
240/ Ktra mảng có giá trị 0 hay ko?Có trả về 1, ko có trả về 0
int kiemtra0(int A[] , int n)
{
int flag = 0; //xem như mảng ko có giá trị 0
for(int i=0 ; i<n ;i++)
{
if(A[i ] == 0)
{
flag = 1;
}
}
return flag;
}
241/ Ktra mảng có 2 giá trị 0 liên tiếp ko? Có trả về 1, ko có trả về 0 .
int kiemtra0lientiep(int A[] , int n)
{
int flag = 0;
for(int i=0 ; i<n ;i++)
{
if(A[i ] == 0 && A[i+1] == 0)
{
flag = 1;
break;
}
}
return flag;
}
242/ Ktra mảng có số chẵn ko? Có trả về 1, ko có trả về 0 .
int kiemtrachan(int A[] , int n)
{
int flag = 0;
for(int i=0 ; i<n ;i++)
{
if(A[i ]% 2 == 0)
{
flag = 1;
break;
}
}
return flag;
}
243/ Ktra mảng có số ng tố ko? Có trả về 1, ko có trả về 0 .
int SoNguyenTo(int a)
{
if (a<=1)
{
return 0;
}
for (int i=2; i<a; i++)
{
if (a% i==0)
{
return 0;
}
}
return 1;
}
int kiemtrasonguyento(int A[] , int n)
{
int flag = 0;
for(int i=0 ; i<n ;i++)
{
if(songuyento(A[i]) == 1)
{
flag = 1;
}
}
return flag;
}
244/ Ktra mảng thỏa tính chất: mảng ko có số hoàn thiện lớn hơn 256. Có trả về 1, ko có trả về 0
int sohoanthien(int n)
{
int tong=0;
for (int i=1 ; i<n; i++)
if(n% i==0)
tong = tong + i;
if (tong == n)
return 1;
return 0;
}
int kttinhchat(int A[] , int n)
{
int flag = 0;
for(int i=0 ; i<n ;i++)
{
if(sohoanthien(A[i])==1 && A[i] < 256)
{
flag = 1;
break;
}
}
return 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)
{
int flag = 1;
for(int i=0 ; i<n ;i++)
{
if(A[i ]% 2!=0)
{
flag = 0; break;
}
}
return flag;
}
246/ Ktra mảng có đối xứng ko? Có trả về 1, ko có trả về 0 .
int ktdoixung(int A[] , int n)
{
int flag = 1;
for(int i=0 ; i<n/2 ;i++)
{
if(A[i ] != A[n-i-1])
{
flag = 0;
break;
}
}
return flag;
}
247/ Ta định nghĩa 1 mảng có tính chất lẻ , khi tổng của 2 ptử lien tiếp luôn là lẻ.Ktra mảng có tính
chẵn hay lẻ?
int kttoanle(int A[] , int n)
{
int flag = 1;
for(int i=0 ; i<n-1 ;i++)
{
if(((A[i]+A[i+1])% 2)==0)
{
flag = 0;
break;
}
}
return flag;
}
248/ Ktra mảng có tăng dần hay ko?
int kttangdan(int A[] , int n)
{
int flag = 1;
for(int i=0 ; i<n-1 ;i++)
{
if(A[i ] > A[i+1])
{
flag = 0;
break;
}
}
return flag;
}
249/ Ktra mảng có giảm dần hay ko?
int ktgiam(int A[] , int n)
{
int flag = 1;
for(int i=0 ; i<n-1 ;i++)
{
if(A[i ] < A[i+1])
{
flag = 0;
break;
}
}
return flag;
}
250/ Hãy cho biết các ptử trong mảng có lập thành cấp số cộng ko? Nếu có chỉ ra công sai d.
int ktcapsocong(int A[] , int n , int &d)
{
d = A[1] - A[0];
int flag = 1;
for(int i=2 ; i<n-1 ;i++)
{
if((A[i+1] - A[i ])!=d)
{
flag = 0; break;
}
}
return flag;
}
251/ Hãy cho biết các ptử trong mảng có bằng nhau ko?
int ktbangnhau(int A[] , int n)
{
int flag = 0;
for(int i = 0 ; i < n-1 ;i++)
{
for(int j = i + 1 ; j < n ;j++)
{
if(A[i ] == A[j])
{
flag = 1;
break;
}
}
}
return flag;
}
252/ Ta định nghĩa 1 mảng đc gọi là dạng sóng, khi ptử có trị số I lớn hơn hoặc nhỏ hơn 2 ptử xung
quanh. Hãy viết hàm ktra mảng có sóng hay ko?
int ktdangsong(int A[] , int n)
{
int flag = 1;
for(int i = 1 ; i < n-1 ; i++)
{
if((A[i-1] > A[i ] && A[i] > A[i+1]) || (A[i-1] < A[i] && A[i] < A[i+1]))
{
flag = 0;
break;
}
}
return flag;
}
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 dem = 0;
for(int i = 0 ; i < n ; i++)
{
for(int j = 0 ; j < m ;j++)
{
if(A[i ] == B[j])
{
dem++;
}
}
}
if(dem == n)
{
flag = 1;
}
return flag;
}
254/ hãy đếm giá trị trong mảng thỏa: lớn hơn tất cả các giá trị đứng đằng trước nó
int demptlndungsau(int A[] , int n)
{
int dem = 0;
for(int i = 1 ; i < n ; i++)
{
int flag = 1;
for(int j = 0; j < i ;j++)
{
if(A[i ] < A[j] || A[i ] == A[j])
{
flag = 0;
}
}
if(flag == 1)
{
dem++;
}
}
return dem;
}
Kĩ thuật sắp xếp
255/ Sắp xếp mảng tăng dần
void sapxep(int a[],int n)
{
for (int i=0;i<n;i++)
{
for (int j=i+1;j<n;j++)
{
if (a[i]>a[j])
{
int temp=a[i];
a[i] = a[j];
a[j]=temp;
}
}
}
}
256/ sắp xếp mảng giảm dần
void sapxep(int a[],int n)
{
for (int i=0;i<n;i++)
{
for (int j=i+1;j<n;j++)
{
if (a[i]<a[j])
{
int temp=a[i];
a[i] = a[j];
a[j]=temp;
}
}
}
}
257/ Sắp xếp lẻ tăng dần nhưng giá trị khácgiữ nguyên vị trí
void sapxep(int a[],int n)
{
for (int i=0;i<n;i++)
{
if (a[i]% 2!=0)
{
for (int j=i+1;j<n;j++)
{
if (a[j]% 2!=0 && a[i ]>a[j])
{
int temp=a[i];
a[i] = a[j];
a[j]=temp;
}
}
}
}
}
258/ Sắp xếp số nguyên tố tăng dần nhưng giá trị khác giữ nguyên vị trí
int SoNguyenTo(int a)
{
if (a<=1)
{
return 0;
}
for (int i=2; i<a; i++)
{
if (a% i==0)
{
return 0;
}
}
return 1;
}
void sapxep(int a[],int n)
{
for (int i=0;i<n;i++)
{
if (SoNguyenTo (a[i] ) ==1)
{
for (int j=i+1;j<n;j++)
{
if (SoNguyenTo (a[j] ) ==1 && a[i]>a[j])
{
int temp=a[i];
a[i] = a[j];
a[j]=temp;
}
}
}
}
}
259/ Sắp xếp số hòan thiện giảm dần nhưng giá trị khác giữ nguyên vị trí
int sohoanthien(int n)
{
int tong=0;
for (int i=1 ; i<n; i++)
if(n% i==0)
tong = tong + i;
if (tong == n)
return 1;
return 0;
}
void sapxep(int a[],int n)
{
for (int i=0;i<n;i++)
{
if (sohoanthien (a[i ] ) ==1)
{
for (int j=i+1;j<n;j++)
{
if (sohoanthien (a[j] ) ==1 && a[i ]<a[j])
{
int temp=a[i];
a[i] = a[j];
a[j]=temp;
}
}
}
}
}
260/ Cho 2 mảng a,b. Hãy cho biết mảng b có phải là hoán vị của mảng a ko?
void sapxep(int a[],int n)
{
for (int i=0;i<n;i++)
{
for (int j=i+1;j<n;j++)
{
if (a[i]>a[j])
{
int temp=a[i];
a[i] = a[j];
a[j]=temp;
}
}
}
}
void KetQua(int a[],int b[],int na,int nb)
{
if (na != nb)
{
printf("ko phai!");
return ;
}
sapxep(a,na);
sapxep(b,nb);
for (int i=0;i<na;i++)
{
if (a[i]!=b[i])
{
printf("ko phai");
return;
}
}
printf("phai!");
return;
}
261 Sắp xếp số dương tăng dần, các số âm giữ nguyên vị trí
void sapxep(int a[],int n)
{
for (int i=0;i<n;i++)
{
if (a[i]>0)
{
for (int j=i+1;j<n;j++)
{
if (a[j]>0 && a[i]>a[j])
{
int temp=a[i];
a[i] = a[j];
a[j]=temp;
}
}
}
}
}
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
void sapxep(int a[],int n)
{
for (int 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 temp=a[i];
a[i] = a[j];
a[j]=temp;
}
}
}
}
263/ Sắp xếp số dương tăng dần, âm giảm dần. Vị trí tương đối ko đổi
void sapxep(int a[],int n)
{
for (int 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 temp=a[i];
a[i] = a[j];
a[j]=temp;
}
else if (a[i]<0 && a[j]<0 && a[i ]<a[j])
{
int temp=a[i];
a[i] = a[j];
a[j]=temp;
}
}
}
}
264 Trộn 2 mảng đã tăng thành 1 mảng đc sắp xếp tăng
void sapxep(int a[],int n)
{
for (int i=0;i<n;i++)
{
for (int j=i+1;j<n;j++)
{
if (a[i]>a[j])
{
int temp=a[i];
a[i] = a[j];
a[j]=temp;
}
}
}
}
void TronMang(int a[], int b[], int c[], int na, int nb, int &nc)
{
nc = na + nb;
sapxep(a,na); //Sap xep tang mang A
sapxep(b,nb); //Sap xep tang mang B
int vta=0,vtb=0;
for (int i=0;i<nc;i++)
{
if (vta < na && vtb < nb)
{
if (a[vta] < b[vtb])
{
c[i] = a[vta];
vta++;
}
else
{
c[i] = b[vtb];
vtb++;
}
}
else if (vtb == nb)
{
c[i] = a[vta];
vta++;
}
else
{
c[i] = b[vtb];
vtb++;
}
}
}
265/ Cho 2 mảng tăng. Hãy trộn thành 1 mảng giảm dần
void sapxep(int a[],int n)
{
for (int i=0;i<n;i++)
{
for (int j=i+1;j<n;j++)
{
if (a[i]>a[j])
{
int temp=a[i];
a[i] = a[j];
a[j]=temp;
}
}
}
}
void TronMang(int a[], int b[], int c[], int na, int nb, int &nc)
{
nc = na + nb;
sapxep(a,na); //Sap xep tang mang A
sapxep(b,nb); //Sap xep tang mang B
int vta=na-1, vtb=nb-1;
for (int i=0;i<nc;i++)
{
if (vta >= 0 && vtb >= 0)
{
if (a[vta] > b[vtb])
{
c[i] = a[vta];
vta--;
}
else
{
c[i] = b[vtb];
vtb--;
}
}
else if (vtb < 0)
{
c[i] = a[vta];
vta--;
}
else
{
c[i] = b[vtb];
vtb--;
}
}
}
Kĩ thuật thêm
266/ Thêm 1 ptử x vào mảng tại vị trí k .
void themgiatri(int a[], int &n, int x, int k)
{
for (i=n; i>k; i--)
{
a[i] = a[i -1];
}
a[k] = x;
n++;
}
267/ Hàm nhập mảng sao cho khi nhập xong thì giá trị trong mảng sắp xếp giảm dần .
void nhapmang(int a[], int &n)
{
printf("Nhap mang 1 chieu\n");
printf("Nhap n : "); scanf("% d",&n);
while (n<=1)
{
printf("Nhap lai n : " );
scanf("% d",&n);
}
int i,j,k;
for (i=0; i<n; i++)
{
printf("\tNhap a[% d] : ", i);
scanf("% d",&a[i]);
for (j=0; j<i;j++)
{
i
Các file đính kèm theo tài liệu này:
- mang1chieu.pdf