#include #include #include const MAX = 100; struct MANG { int data[MAX]; int n; }; void KhoitaoMANG &; int Is_EmptyMANG &; void NhapMANG &; void XuatMANG; int Tong_DuongMANG; int To
Trang 1#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
const MAX = 100;
struct MANG
{
int data[MAX];
int n;
};
void Khoitao(MANG &);
int Is_Empty(MANG &);
void Nhap(MANG &);
void Xuat(MANG);
int Tong_Duong(MANG);
int Tong_Am(MANG);
int Dem_Duong(MANG);
int Dem_Am(MANG);
float TBC_Am(MANG);
float TBC_Duong(MANG);
void TBC(MANG);
int Is_SNT(int);
void SNT(MANG);
void swap(int &,int &);
int KT_Chan(int);
int Sosanh(int,int);
void SapXepChan(MANG &);
void SapXepTang(MANG &);
void ChenX(MANG &);
int Search(MANG, int, int);
void Delete_Trung(MANG &);
int Is_DoiXung(MANG );
void menu();
{
menu();
}
void Khoitao(MANG & )
Trang 2{
A n 0;
}
int Is_Full(MANG A)
{
if(A n == MAX)
return 1;
return 0;
}
int Is_Empty(MANG & )
{
if(0 == A n)
return 1;
return 0;
}
void Nhap(MANG & )
{
cout<<"\nNhap So Phan Tu: ";
cin>>A n;
if(A n > MAX)
{
A n = MAX;
cout<<"\nBan Chi Duoc Nhap "<<MAX<<" Phan Tu"; }
for(int i = 0 i < A n; i++)
{
cout<<"\nNhap Phan Tu Thu "<<i + 1<<": "; cin>>A data[ ];
}
}
void Xuat(MANG A)
{
cout<<"\nDu Lieu Trong Mang: ";
for(int i = 0 i < A n; i++)
cout<<A data[ ]<<" ";
}
int Sign(int n)//Kiem Tra 1 So La Am Hay Duong
{
if(n > 0)
return 1;
if(n < 0)
return -1;
return 0;
}
int Tong_Duong(MANG A)
{
Trang 3int tong= ;
for(int i= ; < ; ++)
{
if(Sign( data[ ]) == 1)
tong+=A data[ ];
}
return tong;
}
int Tong_Am(MANG A)
{
int tong= ;
for(int i= ; < ; ++)
{
if(Sign( data[ ]) == -1)
tong+=A data[ ];
}
return tong;
}
int Dem_Duong(MANG A)
{
int dem= ;
for(int i= ; < ; ++)
{
if(Sign( data[ ]) == 1)
dem++;
}
return dem;
}
int Dem_Am(MANG A)
{
int dem= ;
for(int i= ; < ; ++)
{
if(Sign( data[ ]) == -1)
dem++;
}
return dem;
}
float TBC_Am(MANG A)
{
float TBC= ;
if(Dem_Am( )!=0)
TBC=float(Tong_Am( ))/Dem_Am( ); else
TBC= ;
return TBC;
}
Trang 4float TBC_Duong(MANG A)
{
float TBC= ;
if(Dem_Duong( )!=0)
TBC=float(Tong_Duong( ))/Dem_Duong( );
else
TBC= ;
return TBC;
}
void TBC(MANG A)
{
if(TBC_Duong( )==0)
cout<<"\nTrong Mang Khong Co So Duong";
else
cout<<"\nTrung Binh Cong Cac So Duong La: "<<TBC_Duong( ); if(TBC_Am( )==0)
cout<<"\nTrong Mang Khong Co So Am";
else
cout<<"\nTrung Binh Cong Cac So Am La: "<<TBC_Am( );
}
int ChiaHet(int n, int i)
{
if(n i == 0)
return 1;
return 0;
}
//Ham kiem tra 1 so co phai la SNT
int Is_SNT(int n)
{
if(n 2)
return 0;
for(int i = 2 i < n; i++)
if(ChiaHet( , ) == 1)
return 0;
return 1;
}
//Ham xuat ra cac SNT trong MANG
void SNT(MANG A)
{
cout<<"\nCac SNT: ";
for(int i= ; < ; ++)
{
if(Is_SNT( data[ ]) == 1)
cout<<A data[ ]<<" ";
}
}
Trang 5//Ham hoan vi 2 so a va b
void swap(int & ,int & )
{
int t;
t = a;
a = b;
b = t;
}
//Ham kiem tra 1 so co la so chan
int Is_Chan(int x)
{
if(x 2 == 0)
return 1;
return 0;
}
int Sosanh(int a,int b)
{
if(a b)
return 1;
if(a==b)
return 0;
return -1;
}
void SapXepChan(MANG & )
{
for(int i= ; < - ; ++)
{
if(Is_Chan( data[ ]) == 1)
{
for(int j= + ; < ; ++)
{
if(Is_Chan( data[ ]) == 1)
{
if(Sosanh( data[ ],A data[ ]) == 1) {
swap( data[ ],A data[ ]);
}
}
}
}
}
}
void Selection_Sort(MANG & )
{
int i, ,pos;
int min;
for(i 0 i A n 1 i++)
{
Trang 6min = A data[ ];
pos = i;
for(j = i + 1; j < A n; j++)
{
if(Sosanh(min, data[ ]) == 1) {
min = A data[ ];
pos = j;
}
}
swap( data[ ],A data[pos]);
}
}
//Ham Nay Cua Ham Xoa
int Search_Pos_x(MANG & , int x)
{
for(int i = 0; i < A n; i++)
{
if(Sosanh( data[ ],x) == 0)
{
return i;
}
}
return A n;
}
//Ham Nay Cua Ham Chen
int ISearch_Pos_x(MANG & , int x)
{
for(int i = 0; i < A n; i++)
{
if(Sosanh( data[ ],x) == 1)
{
return i;
}
}
return A n;
}
//Chen 1 So x vao Mang A o Vi Tri k
void Insert_Pos_k(MANG & , int x, int k) {
if(k < 0 || k > A n)
return;
if(Sosanh( , ) == 0)
{
A n++;
A data[ n - 1] = x;
}
else
{
Trang 7A n++;
for(int i = A n - 1; i > k; i )
A data[ ] = A data[i - 1];
A data[ ] = x;
}
}
//Ham Chen x Vao Mang A, van Dam Bao Thu Tu void ChenX(MANG & , int x)
{
if(Is_Full( ) == 1)
{
cout<<"\nMang Da Day, Khong Chen Duoc"; return;
}
int k = ISearch_Pos_x( , );
Insert_Pos_k( , , );
}
//Ham Dem x Trong Mang
int Count_x(MANG A, int x)
{
int count = 0;
for(int i = 0; i < A n; i++)
{
if(Sosanh( data[ ],x) == 0)
count++;
}
return count;
}
//Ham Search x Trong Mang, tim thay return ve 1 int Search_x(MANG A, int x)
{
for(int i = 0; i < A n; i++)
{
if(Sosanh( data[ ],x) == 0)
return 1;
}
return 0;
}
//Ham Xoa 1 So X Trong Mang A Tai Vi Tri k void Xoa_Pos_x(MANG & , int x, int k)
{
//Neu Ko Co x Trong Day
if(Search_x( , ) == 0)
{
cout<<"\nKhong Co "<<x<<" Trong Mang"; return;
}
//Neu x Nam Cuoi Cung
Trang 8if(k == A n - 1)
{
A n ;
return;
}
//Dich Cac Phan Tu De Xoa x
for(int i = k; i < A n - 1; i++)
A data[ ] = A data[i + 1];
A n ;
}
//Xoa Het Cac So Trung Voi x Trong Mang A
void Xoa_Trung_x(MANG & , int x)
{
while(Count_x( , ) > 1)
{
int k = Search_Pos_x( , );
Xoa_Pos_x( , , );
}
}
//Xoa Het Cac So Trung Nhau Trong Mang A
void Xoa_Trung_Mang(MANG & )
{
for(int i = 0; i < A n - 1; i++)
{
Xoa_Trung_x( , data[ ]);
}
}
int Is_DoiXung(MANG A)
{
int flag= ;
int i= , = - ;
while(i j && i!=j)
{
if(Sosanh( data[ ],A data[ ])!=0)
{
flag= ;
return flag;
}
i++;j ;
}
return flag;
}
void DeBai()
{
cout<<" -";
cout<<"\n| BAI TAP VAN DAP CO SO LAP TRINH - BAI TAP 2 |"; cout<<"\n -\n\n";
Trang 9}
void menu()
{
MANG A;
Khoitao( );
int x;
char chon;
do
{
clrscr();
DeBai();
cout<<"\nBAI TAP VAN DAP CO SO LAP TRINH - BAI SO 2";
cout<<"\n0 THOAT";
cout<<"\n1 Nhap Mang";
cout<<"\n2 Xuat Mang";
cout<<"\n3 Trung Binh Cong Cac So Am/So Duong";
cout<<"\n4 Cac So Nguyen To Trong Mang";
cout<<"\n5 Sap Xep Cac So Chan Tang Dan";
cout<<"\n6 Chen 1 So Vao Day Da Tang Va Van Giu Nguyen Tinh Chat Tang"; cout<<"\n7 Xoa Cac Phan Tu Trung Nhau";
cout<<"\n8 Kiem Tra Tinh Doi Xung Cua Day";
cout<<"\nCHON: ";
chon = getch();
switch(chon)
{
case '0':
return;
case '1':
Nhap( );
break;
case '2':
Xuat( );
getch();
break;
case '3':
TBC( );
getch();
break;
case '4':
SNT( );
getch();
break;
case '5':
SapXepChan( );
cout<<"\nCac So Chan Da Duoc Sap Xep Tang Dan";
Xuat( );
getch();
break;
case '6':
Selection_Sort( );
cout<<"\nNhap So Can Chen Vao: ";
Trang 10cin>>x;
ChenX( , );
cout<<"\nMang Van Dam Bao Thu Tu: "; Xuat( );
getch();
break;
case '7':
Xoa_Trung_Mang( );
cout<<"\nDa Xoa Cac Phan Tu Trung Nhau"; Xuat( );
getch();
break;
case '8':
if(Is_DoiXung( ))
cout<<"\nDay Doi Xung";
else
cout<<"\nDay Khong Doi Xung";
getch();
break;
default:
cout<<"\nKhong Co Phim Chuc Nang Nay"; getch();
break;
}
}while(chon);
}