Tổng hợp Bài Tập Về Mảng Một Chiều

Nhập xuất mảng 1 chiều bằng đệ quy
File khaibao.h
#include<iostream>
using namespace std;
void NhapMang(int a[],int n);
void XuatMang(int a[],int n);
void XuatNguoc(int a[],int n);
File caidat.cpp
#include"khaibao.h"
void NhapMang(int a[],int n)
{
    if(n>=0)
{
        NhapMang(a,n-1);
    cout<<"Nhap a["<<n<<"]:";
    cin>>a[n];   
}
}
void XuatMang(int a[],int n)
{
        if(n>=0)
{
            XuatMang(a,n-1);
        cout<<a[n]<<" ";
{
}
void XuatNguoc(int a[],int n)
{
    if(n>=0)
    {
        cout<<a[n]<<" ";
        XuatNguoc(a,n-1);
   
    }
}
File main.cpp
#include"khaibao.h"
void main()
{
    int a[100], n;
    cout<<"Nhap n: ";
    cin>>n;
    NhapMang(a,n-1);
    cout<<"Mang Xuat Xuoi La: ";
    XuatMang(a,n-1);
    cout<<"\nMang Xuat nguoc La: ";
    XuatNguoc(a,n-1);
}



Khởi tạo mảng 1 chiều tăng dần và giảm dần

Mảng Tăng:
   void nhap(int a[],int n)
         {
                srand((unsigned) time(NULL))
                a[0]=abs(rand()%100);
                for(int i=1;i<n;i++)
                     a[i]=a[i-1]+abs(rand()%100);
       }

Mảng Giảm:
   void nhap(int a[],int n)
      {
           srand((unsigned) time(NULL))
           a[n-1]=abs(rand()%100);
           for(int i=n-2;i>=0;i--)
          a[i]=a[i+1]+abs(rand()%100);

    }


1/ Viết hàm sắp xếp các phần tử lẻ tăng dần.

void saptang(int a[], int n)
{
    int tam;
    for( int i=0;i<n-1;i++)
        if(a[i]%2==1)
            for( int j=i+1;j<n;j++)
            if (a[i]>a[j] && a[j]%2==1 )
            {
                     tam=a[i];
              a[i]=a[j];
              a[j]=tam;
            }
}

2/ Viết hàm sắp xếp các phàn tử chẳn giảm dần

void sapxepgiam(int a[], int n)
{
    int tam;
    for( int i=0;i<n-1;i++)
        if(a[i]%2==0)
            for( int j=i+1;j<n;j++)
            if (a[i]<a[j] && a[j]%2==0 )
            {
                     tam=a[i];
              a[i]=a[j];
              a[j]=tam;
            }
}

3/ Viết hàm xoá các phần tử tại vị trí lẻ trong mảng.

void xoa(int a[], int &n)
{
    for( int i=1;i<n;i++)
        a[i]=a[i*2];
    if(n%2==0)
        n=n/2;
    else n=n/2+1;
}

4/ Viết hàm xoá phần tử có giá trị lớn nhất trong mảng.

void xoa(int a[], int &n)
{  
    int max=a[0],i;
    for(i=1;i<n;i++)
    if(a[i]>max)
            max=a[i];
           for(i=0;i<n;i++)
            if(a[i]==max)
               {
                for(int j=i;j<n;j++)
          
                    a[j]=a[j+1];
                    n--;
                    i--;
             }
}


5/ Nhập vào giá trị X. Viết hàm xoá tất cả các phần tử có giá trị nhỏ hơn X.

void xoa(int a[], int &n,int x)
{    for(int i=0;i<n;i++)
    if(a[i]<x)
    {
        for(int j=i;j<n;j++)
            a[j]=a[j+1];
        n--;
        i--;
    }
}


6/ Nhập vào giá trị X. Viết hàm xoá phần tử có giá trị gần X nhất.

void xoaganx(int a[],int &n,int x)
{
int kc=32768;
    for(int i=0;i<n;i++)
    {
        if(a[i]<=x && x-a[i]<kc)
        kc=x-a[i];
        if(a[i]>=x && a[i]-x<kc)
            kc=a[i]-x;
    }
    for(int i=0;i<n;i++)  / / i<n-1 cũng được
  
        if( a[i]-x==kc || x-a[i]==kc)
        {
          
        for(int j=i;j<n;j++)
            a[j]=a[j+1];
            i--;
            n--;
         }
    }


7/  Viết hàm loại bỏ các phần tử có giá trị trùng nhau ( chỉ giữ lại một phần tử trong số các phần tử trùng).

 
void xoa(int a[], int &n)
{
      for(int i=0;i<n-1;i++)
    for( int k=i+1;k<n;k++)
        if (a[k]==a[i])
        {
            for(int j=k;j<n-1;j++)
            a[j]=a[j+1];
                n--;
            k--;
        }
}

8/ Viết hàm chèn phần tử có giá trị X vào vị trí đầu tiên trong mảng.

void chen(int a[], int &n,int x)
{
    for (int i=n;i>0;i--)
        a[i]=a[i-1];
    a[0]=x;
n++;
}

9/ Viết hàm chèn phần tử có giá trị X vào phía sau phần tử có giá trị lớn nhất trong mảng.

int max(int a[],int n)
{
    int m=a[0];
    for(int i=1;i<n;i++)
        if(a[i]>=m)
            m=a[i];
    return m;
}
void chen(int a[],int &n,int x)
{
    for(int i=0;i<n;i++)
    {
        if(a[i]==max(a,n))
        {
            for(int j=n;j>=i+2;j--)
                a[j]=a[j-1];
                a[i+1]=x;
                n++;
                i++;
        }
    }
}


10/ Viết hàm chèn phần tử có giá trị X vào phía trước phần tử có giá trị là số nguyên tố đầu tiên trong mảng.

bool ktnt(int k)
{
    if(k<2) return false;
    for(int i=2;i<=k/2;i++)
        if(k%i==0)
            return false;
    return true;
}
int vt(int a[],int n)
{
for(int i=0;i<n;i++)
if(ktnt(a[i]))
return i;
}
void chen(int a[],int &n,int x)
{
    int i=vt(a,n);
      
    for(int j=n;j>=i+1;j--)
        a[j]=a[j-1];
        a[i]=x;
        n++;
}


11/ Viết hàm nhập mảng sau cho không có phần tử nào trùng với nhau.

void nhapkhongtrung(int a[],int &n)
   {
    cout<<"nhap n: ";
    cin>>n;
    int    i=0;
    do  
    {    int flag=0;
        cout<<"nhap vao phan tu thu"<<i<<": ";
        cin>>a[i];
        for(int j=i-1;j>=0;j--)
            if(a[i]==a[j])
            {
                cout<<"ban nhap sai: \n";
                flag=1;
                break;
            }
            if(flag==1)continue;
            else
                i++;
    }
while (i<n);
}







Share this

Related Posts

Previous
Next Post »