1. THÔNG BÁO TUYỂN ADMIN DIỄN ĐÀN 2013
    Tìm kiếm nhà trọ - Ở ghép
    THÔNG BÁO BÁN ÁO SPKT.NET CHO THÀNH VIÊN DIỄN ĐÀN


    HÃY TÌM KIẾM Ở ĐÂY TRƯỚC KHI ĐẶT CÂU HỎI
    {xen:phrase loading}

Mãng 1 Chiều trong C

Thảo luận trong 'Lập trình' bắt đầu bởi phoenix, 13 Tháng năm 2009.

  1. phoenix Administrator

    Số bài viết: 633
    Đã được thích: 13
    Điểm thành tích: 0
    Viết hàm nhập mảng 1 chiều các số thực
    Mã:
    void NhapMang(float a[], int &n)
      {
                  printf("Nhap so phan tu: ");
                  scanf ("%d",&n);
                  for (int i=0;i<n;i++)
                  {
                              printf("Ptu a[%d]: ", i);
                              scanf("%f", &a[i]);
                  }
      }
       
    Tìm các số trong mảng có tổng bằng 2 số khác trong mảng
    Mã:
    void sapxep(float a[],int n)
      {   int i,j;
       float temp;
             for (i=0;i<n;i++)
             {
               for (j=i+1;j<n;j++)
               {
                      if (a[i]<a[j])
                      {
                        temp=a[i];
                        a[i] = a[j];
                        a[j]=temp;
                      }
               }
             }
      }
      void tim(float a[], int n)
      {    int i,j,k,d=0;
       sapxep(a,n);
       printf("cac so co tong bang 2 so khac trong day:");
       for(i=0;i<=n-3;i++)
          for(j=i+1;j<=n-2; j++)
             for(k=j+1;k<n;k++)
                if(a[i]==a[j]+a[k])
                {    printf("\n%2.2f\n",a[i]);
                   d++;
                }
             if(d==0) printf("ko co so thoa man.\n");
      }
    Tính tổng từng mảng con tăng
    Mã:
    int ktramangtang(int b[], int nb)
      {
                  for(int i=0; i<nb-1; i++)
                  {
                              if (b[i]>b[i+1])
                                          return 0;
                  }
                  return 1;
      }
      void xuatmangcon(int b[], int nb)
      {
                  for(int i=0; i<nb; i++)
                  {
                              printf(" %d ", b[i]);
                  }         
      }
      intt tongmangcon(int b[], int nb)
      {
                  intt s=0;
                  for (int i=0; i<nb; i++)
                  {
                               s = s + b[i];
                  }
                  return s;
      }
      void lietkecontang(int a[], int n)
      {
                  int chieudaicon, b[100], nb, tong;
                  for (int i=0; i<n; i++)
                  {
                              for (chieudaicon = 1+i; chieudaicon<=n; chieudaicon++)
                              {
                                          for(int j=i; j<chieudaicon; j++)
                                          {
                                                      b[nb]=a[j];
                                                      nb++;
                                          }
                                          if (ktramangtang(b,nb)==1)
                                          {         
                                                      xuatmangcon(b,nb);
                                                      tong = tongmangcon(b,nb);
                                                      printf("\tTong mang nay: %.2f\n", tong);
                                          }                                 
                              }         
                  }
      }
    Tạo 1 mảng ngẫu nhiên và xuất ra dãy con tăng dần dài nhất
    Mã:
    #include <stdio.h>
      #include <stdlib.h>
      #include <time.h>
      void NhapMang(int a[], int &n)
      {
                  n = rand()%10;
                  for (int i=0; i<n; i++)
                              a[i] = rand()%50;
      }
      void XuatMang(int a[], int n)
      {
                  for (int i=0; i<n; i++)
                              printf("%4d",a[i]);
      }
      void TimDayConTangDan(int a[], int n, int &ViTriBatDau, int &ViTriKetThuc)
      {
                  int ViTriBatDauTam =0, ViTriKetThucTam=0;
                  int Dem =0, DemTam = 0;
                  for (ViTriKetThucTam = 0; ViTriKetThucTam<n; ViTriKetThucTam++)
                  {
                              if (a[ViTriKetThucTam] <= a[ViTriKetThucTam+1])
                              {
                                          DemTam++;
                              }
                              else
                              {
                                          if (DemTam>Dem)
                                          {
                                                      ViTriBatDau = ViTriBatDauTam;
                                                      ViTriKetThuc = ViTriKetThucTam;
                                                      Dem = DemTam;
                                          }
                                          ViTriBatDauTam = ViTriKetThucTam + 1;
                                          DemTam = 0;
                              }
                  }
      }
      void XuatDayCon(int a[], int ViTriBatDau, int ViTriKetThuc)
      {
                  for(int i=ViTriBatDau; i<=ViTriKetThuc; i++)
                            printf("%4d",a[i]);
    }
      void main()
      {
                  srand((unsigned)time(NULL)); 
                  int n,a[100];
                  NhapMang(a,n);           //Nhập mảng ngẫu nhiên
                  printf("Mang ngau nhien duoc tao: ");
                  XuatMang(a,n);
                  printf("\n");
                  //Tìm dãy con tăng dài nhất
                  int ViTriBatDau = -1, ViTriKetThuc = -1;
                  TimDayConTangDan(a,n,ViTriBatDau,ViTriKetThuc);
                  //Xuất dãy con tăng với 2 biến ViTriBatDau, ViTriKetThuc
                  printf("Day con tang dai nhat: ");
                  XuatDayCon(a,ViTriBatDau,ViTriKetThuc);
      }
      

    [FONT=&quot;]Sắp xếp số nguyên tố tăng dần nhưng giá trị khác giữ nguyên vị trí
    [/FONT]
    Mã:
     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;
                                                      }
                                          }
                              }                      
                  }
      }
  2. phoenix Administrator

    Số bài viết: 633
    Đã được thích: 13
    Điểm thành tích: 0
    Sắp xếp số dương tăng dần, âm giảm dần. Vị trí tương đối ko đổi
    Mã:
    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;
                                          }
                              }
                  }
      }
  3. phoenix Administrator

    Số bài viết: 633
    Đã được thích: 13
    Điểm thành tích: 0
    Cho 2 mảng tăng. Hãy trộn thành 1 mảng giảm dần

    Mã:
    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--;
                              }         
                  }
      }
  4. phoenix Administrator

    Số bài viết: 633
    Đã được thích: 13
    Điểm thành tích: 0
    Tìm vị trí chẵn đầu tiên
    Mã:
    int vitrichandau(int a[] , int n)
      {
                  for(int i=0; i<n; i++)
                  {
                              if(a[i]%2==0)
                              {
                                          return i;
                              }
                  }
                  return -1;
      }
  5. phoenix Administrator

    Số bài viết: 633
    Đã được thích: 13
    Điểm thành tích: 0
  6. phoenix Administrator

    Số bài viết: 633
    Đã được thích: 13
    Điểm thành tích: 0
  7. phoenix Administrator

    Số bài viết: 633
    Đã được thích: 13
    Điểm thành tích: 0
    Mã:
    [FONT=Courier New]void xoacuctri(int a[100],int &n)
    {
       int cuoi=a[n-1],dau=a[0];
       if(a[0]!=a[1])
          for(int i=0;i<n-1;i++)
             a[i]=a[i+1];
          n--;
       if(a[n-1]!=a[n-2])
          n--;
       for(int i=0;i<n-1;i++)
       {
          if( (a[i]<dau&&a[i]<a[i+1]) || (a[i]>dau&&a[i]>a[i+1]) )
          {
             dau=a[i];
             for(int j=i;j<n-1;j++)
                a[j]=a[j+1];
             i--;
             n--;
          }
          else dau=a[i];
       }
       if((a[n-1]>dau)&&(a[n-1]>cuoi)||(a[n-1]<dau)&&(a[n-1]<cuoi))
          n--;
    }[/FONT]
  8. benqsiemenscf61 Guest

    Số bài viết: 0
    Đã được thích: 0
    Điểm thành tích: 0
    các bạn làm ơn giúp mình bài này. mình mới sang phần mảng nên ko bít gì hết
    bài: nhap vào một mảng ,in ra phần tử lơ nhất và nhỏ nhất
    -nhập vào một mảng.. kiểm tra mảng đó có toàn số nguyên tố ko?
    mình đang học c++...giúp mình với
  9. kakathanh New Member

    Số bài viết: 1
    Đã được thích: 0
    Điểm thành tích: 0
    hehe mình là member mới xin đóng góp một ví dụ về mảng 1 chiều trong c++
    ví dụ này mình viết theo kiểu tạo 1 hàm chính "void main" chứ không tách ra thành các hàm con
    mong các bạn ủng hộ.

    #include<iostream.h>
    #include<conio.h>
    void main()
    {
    clrscr();
    int a[5];
    int i,n;
    cout<<"nhap so phan tuc cua mang:";
    cin>>n;
    for(i=0;i<n;i++)
    {
    cout<<"Nhap phan tu thu a["<<i<<"]"<<":";
    cin>>a;
    }

    cout<<"Noi dung cua mang la:"<<endl;
    for(int j=0;j<n;j++)
    {
    cout<<a[j]<<" "<<endl;
    }
    int max=a[0];
    cout<<"Phan tu lon nhat cua mang la:";
    for(int k=0;k<n;k++)
    {
    if(max<a[k])
    max=a[k];

    }
    cout<<max<<endl;
    int min=a[0];
    cout<<"Phan tu be nhat cua mang la:";
    for(int l=0;l<n;l++)
    {
    if(min>a[l])
    min=a[l];
    }


    cout<<min;
    getch();

    }
  10. khaidang27 Member

    Số bài viết: 34
    Đã được thích: 0
    Điểm thành tích: 6
  11. leantuanlv New Member

    Số bài viết: 2
    Đã được thích: 0
    Điểm thành tích: 0
    #include <AT89x52.h>
    #include <string.h>
    #define couter_scand 2 //so lan quet ma

    // Keypad Config.
    sbit h0 = P2^0;
    sbit h1 = P2^1;
    sbit h2 = P2^3;
    sbit h3 = P2^3;
    sbit c0 = P2^4;
    sbit c1 = P2^5;
    sbit c2 = P2^6;
    sbit c3 = P2^7;
    sbit led_bao=P3^7;
    sbit dem=P3^0;
    unsigned long int gt_nhap=0,gt_dich=0,hien_thi=0;
    int key=0;
    void delay (unsigned int ms)
    {
    while(ms--) //ms nhap 1000 de co dc 1S
    {
    TMOD=0x01;
    TH0=0xFC;
    TL0=0x18;
    TR0=1;
    while(!TF0);
    TR0=0;
    TF0=0;
    }
    }
    //khai bao ma quet
    unsigned char scan_key[4]={0x7F,0xbF,0xdF,0xEF}; //mang quet phim

    //Khai bao ma phim
    unsigned int key_code[13]= {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; //mang du lieu phim
    //mang chu loi chao
    //unsigned int ma_chao[4]={0x37,0x76,0x77,0x73};//ma nhap so
    //Chuong trinh
    /***************************************/
    /* Quet phim bam */
    /* tra ve 0 neu khong bam phim */
    /* hoac ky tu phim bam */
    /***************************************/
    void scan_keypad(void) //chuong trinh quet phim
    {
    unsigned int i,x;
    unsigned int idx=0;

    for (i=0; i < 4; i++)
    {
    P2= scan_key;
    for (x=0; x<couter_scand; x++)
    {
    if (h0==0) idx = (i*4) + 1; break;
    if (h1==0) idx = (i*4) + 2; break;
    if (h2==0) idx = (i*4) + 3; break;
    }
    }
    key = key_code[idx];
    //xac dinh gia tri phim vua bam
    //return key;
    }
    void ma_key (unsigned long int m_key )
    {
    switch(m_key)
    {
    case 0 : gt_nhap = gt_nhap*10 ; break; //0
    case 1 : gt_nhap = gt_nhap*10+1; break; //1
    case 2 : gt_nhap = gt_nhap*10+2; break; //2
    case 3 : gt_nhap = gt_nhap*10+3; break; //3
    case 4 : gt_nhap = gt_nhap*10+4; break; //4
    case 5 : gt_nhap = gt_nhap*10+5; break; //5
    case 6 : gt_nhap = gt_nhap*10+6; break; //6
    case 7 : gt_nhap = gt_nhap*10+7; break; //7
    case 8 : gt_nhap = gt_nhap*10+8; break; //8
    case 9 : gt_nhap = gt_nhap*10+9; break; //9
    case 10 : gt_dich = gt_nhap ; break; // enter
    case 11 : gt_nhap = 0; gt_dich = 0; hien_thi = 0; break; // DELETE
    }
    }
    void chuyen_ma(unsigned int ma)
    {
    switch(ma)
    {
    case 0 : P0 = 0x3f; break;
    case 1 : P0 = 0x06; break;
    case 2 : P0 = 0x5b; break;
    case 3 : P0 = 0x4f; break;
    case 4 : P0 = 0x66; break;
    case 5 : P0 = 0x6d; break;
    case 6 : P0 = 0x7d; break;
    case 7 : P0 = 0x07; break;
    case 8 : P0 = 0x7f; break;
    case 9 : P0 = 0x6f; break;
    }
    }
    /*void chao (void)
    {
    int w;
    for (w=0;w<4;++w)
    {
    P1 = scan_key[w] ;
    P0 = ma_chao[w] ;
    }
    }*/
    void main (void)
    {
    unsigned int c_tam,c_ht;
    unsigned long int bien_ht;
    P2 = 0xFF; led_bao = 0;
    while(1)
    {
    //chao();
    scan_keypad(); //quet phim de dua ra gia tri phim vua nhap
    key= bien_ht ; //lay ra gia tri phim de hthi
    ma_key(bien_ht);
    if ((gt_dich > 0)&&(hien_thi < gt_dich))
    { if (dem==0) //nhan gia tri tu cam bien va dem
    --gt_dich;}
    if ((hien_thi==gt_dich)&&(gt_dich==0))
    led_bao = 1;
    else led_bao = 0;
    gt_nhap = hien_thi;
    c_tam = c_ht%10; c_ht = (c_ht - c_ht%10)/10;
    chuyen_ma(c_tam);P1 = 0x0e; delay(500);
    c_tam = c_ht%10; c_ht = (c_ht - c_ht%10)/10;
    chuyen_ma(c_tam); P1 = 0x0d; delay(500);
    c_tam = c_ht%10; c_ht = (c_ht - c_ht%10)/10;
    chuyen_ma(c_tam); P1 = 0x08; delay(500);
    c_tam = c_ht%10; c_ht = (c_ht - c_ht%10)/10;
    chuyen_ma(c_tam); P1 = 0x0b; delay(500);

    }
    }

    nhờ pro xem tại sao em dùng quét phím và quét led mà nó lại quét rất chậm

Chia sẻ trang này