Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: Sắp xếp mảng và xóa phần tử của mảng???

  1. #1
    Ngày gia nhập
    04 2009
    Bài viết
    1

    Mặc định Sắp xếp mảng và xóa phần tử của mảng???

    mình chỉ mới học về For,Do while,If else và mảng 1 chiều !! phần bôi đen là phần mình chưa viết đc,ai giúp mình với
    Bài 1:
    - Nhập số nguyên N (0<N<50)
    - Nhập mảng số nguyên gồm N phần tử (mỗi phần tử yêu cầu chỉ có 1 chữ số)
    - Sắp xếp mảng theo thứ tự tăng dần.
    - Chèn N vào trong mảng mà không làm thay đổi thứ tự sắp xếp của mảng
    Bài 52
    - Nhập số nguyên N (0<N<10 và N chẵn)
    - Nhập mảng nguyên gồm N phần tử
    - Xoá phần tử đầu tiên trong mảng vừa nhập

  2. #2
    Ngày gia nhập
    05 2009
    Bài viết
    8

    mình viết mấy hàm sau bạn tham khảo xem

    C Code:
    1. void chen(int a[50],int n,int x)
    2. {
    3. int i=0,j;
    4.    while((a[i]<=x) && (i<n-1)) i++;
    5.    if(i!=n-1)
    6.      for(j=n-1;j>i;a[j--]=a[j-1]);
    7.        a[i]=x;
    8. }
    9.  
    10. void sapxep(int a[50],int n)
    11. {
    12.    int i,j, tam;
    13.    for(i=0;i<n-1;i++)
    14.      for(j=i+1;j<n; j++)
    15.        if (a[i]>a[j])
    16.     {
    17.      tam=a[i];
    18.      a[i]=a[j];
    19.      a[j]=tam;
    20.     }
    21. }
    22.  
    23. void xoa(int a[20],int n)
    24. {
    25.    int i=0;
    26.   for(i=0;i<n;i++)
    27.     a[i]=a[i+1];
    28.   n--;
    29.   printf("\n mang sau khi xoa phan tu dau la:\n");
    30.   hienthi(a,n);
    31. }

    *Vui lòng bọc code vào tag code khi gửi bài viết.
    Đã được chỉnh sửa lần cuối bởi QuangHoang : 05-06-2009 lúc 10:17 AM.

  3. #3
    Ngày gia nhập
    05 2009
    Bài viết
    1

    khi chèn hay xóa phần tử của mảng thì chiều dài n sẽ bị thay đổi, ban nên khai báo là int &n

  4. #4
    Ngày gia nhập
    02 2009
    Bài viết
    56

    C Code:
    1. #include <stdio.h>
    2. void giam(int a[],int n)
    3. {
    4.     int temp;
    5.     for(int i=0;i<n;i++)
    6.         for(int j=0;j<n-1;j++)
    7.         {
    8.             if(a[j]>a[j+1])
    9.             {
    10.                             temp=a[j];
    11.                 a[j]=a[j+1];
    12.                 a[j+1]=temp;
    13.             }
    14.         }
    15.     for(int k=0;k<n;k++)
    16.     printf("%d ",a[k]);
    17. }
    18. void themso(int *a,int vitri,int so)
    19. {
    20.     a[vitri]=so;  
    21.  
    22. }
    23. void xoa(int a[],int socx,int n)
    24. {
    25.     for(int i=0;i<n;i++)
    26.     {
    27.         if(a[i]!=socx)
    28.         printf("%d ",a[i]);
    29.     }
    30. }
    31. void main()
    32. {
    33.     int a[50],n,so,vitri,scx;
    34.     printf("nhap so phan tu= ");
    35.     scanf("%d",&n);
    36.     for(int i=0;i<n;i++)
    37.     {
    38.         int x;
    39.                 printf("nhap so thu %d= ",i+1);
    40.         scanf("%d",&x);
    41.                 a[i]=x;
    42.     }
    43.     printf("mang dc sap xep theo thu tu giam dan\n");
    44.     giam(a,n);
    45.  
    46.     printf("\nban muon chen so= ");
    47.     scanf("%d",&so);
    48.     for(int z=1;z<2;)
    49.         {
    50.     printf("\nvi tri cua so can chen chay tu (0->%d) ",n);
    51.     scanf("%d",&vitri);
    52.         if(vitri>n)
    53.         {
    54.             printf("ban da nhap sai yeu cau nhap lai\n");
    55.             continue;
    56.         }
    57.     z++;
    58.         }
    59.  
    60.     themso(a,vitri,so);
    61.     printf("\nmang sai khi chen so\n");
    62.         if(vitri<n)
    63.     giam(a,n);
    64.     else
    65.         {
    66.     giam(a,n+1);
    67.     n=n+1;
    68.         }
    69.     printf("\nban muon xoa so may ");
    70.     scanf("%d",&scx);
    71.         printf("\nmang sau khi xoa  ");
    72.         xoa(a,scx,n);
    73.        
    74. }
    đây là bài của mình bạn coi rồi cho ý kiến nha

  5. #5
    Ngày gia nhập
    05 2009
    Bài viết
    27

    //đây là 2 bài toán trong phần mảng của aptech thì phải

    Bài 1:
    + phân tích bải toán.
    - nhập 0<n<50 : dùng do ...while kiểm tra n nhập vào
    - nhập mảng n phần tử gồm 1 chữ số : mỗi phần tử là -9 --> 9 : kiểm tra quá trình nhập cho phần tử mảng : dùng do...while
    - sắp xếp theo thứ tự tăng dần (chắc dễ rồi)
    - chèn n vào mảng mà không làm thay đổi trật tự
    // 1. trật tự lúc chưa sắp xếp : nếu vậy quá dễ chỉ cần khai báo mảng 51 phần tử và thêm n vào sau cùng
    // 2. chèn N vào mảng khi nó đã dc xếp theo thứ tự tăng dần : làm lại thuật toán sắp xếp theo thứ tự tăng dần, với a[0]...a[n-1] + (a[n] = n);


    Code
    Code:
    #include<conio.h>
    #include<stdio.h>
    void main()
    {
    int n,i,j,t,a[51];
    clrscr();
    do
    {
    	printf("Nhap so nguyen  0<n<50: ");
    	scanf("%d",&n);
    } while (n<=0||n>=50);
    // duyet so nhap vao 0<n<10
    for(i=0;i<n;i++)
    	do
    	{
    		printf("\nNhap phan tu a[%d]: ",i);
    		scanf("%d",&a[i]);
    	} while(a[i]<=-10||a[i]>=10);
    //sap xep tang dan
    // khi chen N vao mang ma ko lam thay doi trat tu
    for(i=0,a[n]=n,t=a[0];i<=n;i++)
    	for(j=i+1;j<=n;j++)
    		if(a[j]<a[i])
    			{
    			t=a[i];
    			a[i]=a[j];
    			a[j]=t;
    			}
    for(i=0;i<=n;i++)
    	printf("\t%d",a[i]);
    
    getch();
    }

  6. #6
    Ngày gia nhập
    05 2009
    Bài viết
    27

    Mặc định Sắp xếp mảng và xóa phần tử của mảng???

    //Bài 2 cũng tương tự

    Code:
    #include<conio.h>
    #include<stdio.h>
    void main()
    {
    //nhap 0<N<10 && N chan
    //nhap mang nguyen gom N phan tu
    //xoa phan tu dau tien trong mang vua nhap
    
    int a[10],n,i;
    clrscr();
    
    //nhap n
    do
    {
    	printf("Nhap N (0<N<10) va n chan: ");
    	scanf("%d",&n);
    } while(n<=0 || n>=10 || n%2!=0);
    
    //nhap mang
    for(i=0;i<n;i++)
    	{
    	printf("\nNhap a[%d]: ",i);
    	scanf("%d",&a[i]);
    	}
    printf(" Mang vua nhap la:");
    for(i=0;i<n;i++)
    	printf("%4d",a[i]);
    // xoa phan tu dau tien trong mang
    for (i=0;i<n-1;i++)
    	{
    	a[i]=a[i+1];
    	}
    n--; /* điều này nói lên mảng vị mất 1 phần tử. mặc dù ta có thể cho in tới n-2 nhưng điều đó không làm rõ ý xóa 1 phần tử mảng */
    
    //hien thi mang sau khi xoa a[0]
    printf("\n Mang sau khi xoa a[0]:\n");
    for(i=0;i<n;i++)
    	printf("%4d",a[i]);
    
    
    getch();
    }

Các đề tài tương tự

  1. xóa các phần tử giống nhau trong mảng chỉ để lại 1 phần tử
    Gửi bởi trungbd trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 30
    Bài viết cuối: 12-08-2013, 04:01 PM
  2. Trả lời: 5
    Bài viết cuối: 13-12-2012, 02:54 PM
  3. Bài tập C xóa phần tử trùng nhau trong mảng 1 chiều để lại 1 phần tử
    Gửi bởi ronoa trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 06-01-2012, 10:46 PM
  4. Kỹ thuật C++0x Xóa không được 1 phần tử bất kì và xóa tại vị trí bất kì trong DSLK
    Gửi bởi datinh_o0o7 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 19-03-2011, 10:24 PM
  5. Thuật toán trên C | Xóa phần tử trong dãy phần tử tăng dần?
    Gửi bởi quangphuit trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 09-03-2010, 01:57 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn