Breaking News
Loading...
Monday, December 5, 2011

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

12/05/2011 12:30:00 PM
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);
}







4 comments:

  1. bạn ơi code cho mình bài này với...Chèn 1 số bất kỳ vào giữa 2 số mà tổng 2 sô đó cộng lại lớn hơn 10 trong mảng....Ví dụ: nhập 1 5 4 8 4 2............muốn chèn số 3 vào dãy đó....kq dãy sau khi chen là:1 5 4 3 8 3 4 2

    ReplyDelete
    Replies
    1. Hiện tại thì mình ko có code bài này nhưng mình có thể gợi ý cho bạn.
      ví dụ dãy số (mảng a)trên có n phần tử(i) thì bạn cho dòng for chạy từ 1 đến n-1.rồi kiểm tra a[i]+a[i+1]>10 thì i+1 là vị trí chèn

      Delete
  2. các bạn có thể giúp mk bài này k?
    Tạo một tệp văn bản dòng đầu chứa 2 số nguyên n và m, tiếp theo là một ma trận các số thực n x m. Viết chương trình đọc các phần tử của tệp trên vào một mảng hai chiều anxm. Xây dựng mảng một chiều b gồm các giá trị lớn nhất trên từng hàng của mảng hai chiều a.

    ReplyDelete

  3. Phòng Tắm Nhập Khẩu chuyên cung cấp các thiết bị nhà tắm chính hãng giá rẻ nhất

    Bồn tắm chính hãng giá rẻ

    Địa chỉ: 12 Thanh Nhàn, Hai Bà Trưng, Hà Nội - 185 Nguyễn Trãi, Thanh Xuân, Hà Nội - 186 Hoàng Quốc Việt, Cầu Giấy, Hà Nội

    Số điện thoại: 0975.742.889 - 0961.534.186 - 0945.222.514

    ReplyDelete

 
Toggle Footer