Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 28 kết quả

Đề tài: xoá các phần tử tại vi trí lẻ trong mảng

  1. #1
    Ngày gia nhập
    12 2007
    Bài viết
    54

    Post xoá các phần tử tại vi trí lẻ trong mảng

    Code:
    /* viet ham xoa cac phan tu tai vi tri le trong mang */
    
    # include <stdio.h>
    # include <conio.h>
    void nhap_mang (int A[],int n)
     {
    	  for (int i=0;i<n;i++)
    		{        printf ("\n Nhap A[%d]: ",i);
    		         scanf ("%d",&A[i]);
    		}
      }
    void xoa_vi_tri (int A[],int &n,int x)
     {
    		for (int i=x;i<n;i++)
    			 A[i]=A[i+1];
    			 n--;
     }
    void main()
    {    int A[100],n;
    	  printf ("\n Nhap N:");
    	  scanf ("%d",&n);
    	  nhap_mang(A,n);
    	  for (int i=0;i<n;i++)
    			if (i%2==0)
    			xoa_vi_tri(A,n,i);
    	  printf ("\n Mang sau khi xoa :");
    	  for ( i=0;i<n;i++)
    	  printf ("%d ",A[i]);
    	  getch();
     }
    Mong mọi người sửa giúp mình
    Đã được chỉnh sửa lần cuối bởi thangit : 03-08-2008 lúc 04:26 PM. Lý do: chưa để code vào tab
    Rất mong được mọi người giúp đỡ :

    Kiến thức mình biết chỉ là hạt cát trên sa mạc

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

    ơ cái bạn này bạn phải nói sai cái gf người khác mới biết mà sủa chứ?
    Em có thấy nắng vàng kỷ niệm
    Hạ ngồi ru thanh thản những môi cười
    Thuở ngồi ngóng tay choàng tay nỗi nhớ
    Vin tay vào tháng năm chơi vơi...

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

    #include<stdio.h>
    #include<conio.h>
    int main()
    {
    int i,n,x,a[90];
    printf("nhap so phan tu cua mang : ");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
    printf("a[%d]",i);
    scanf("%d",&a[i]);
    }
    i=1;
    while(i!=n)
    {

    for(x=i;x<n;x++)
    a[x]=a[x+1];
    i++;
    n--;
    }
    printf("mang sau khi xoa la:" );
    for(i=0;i<n;i++)
    printf("%8d",a[i]);
    getch();
    return 0;
    }
    bài của bạn sai do sau khi bạn xóa phần tử lẻ đầu tiên thì các phần tử lẻ còn ại dã thay đổi vị trái ko còn mang giá trị phần tử lẻ nữa , có 2 cách giải , 1 là bạn lấy tất ca các phàn tử chẵn gán vào 1 mảng thứ 2 rồi xuát ra mang 2 này , thứ 2 bạn làm theo cách của tôi :vừa trìn bày trên
    Em có thấy nắng vàng kỷ niệm
    Hạ ngồi ru thanh thản những môi cười
    Thuở ngồi ngóng tay choàng tay nỗi nhớ
    Vin tay vào tháng năm chơi vơi...

  4. #4
    Ngày gia nhập
    08 2008
    Bài viết
    0

    sory tui khong bit ban ah

  5. #5
    Ngày gia nhập
    04 2008
    Bài viết
    336

    mình gửi bạn cách dễ nhất này ^^
    Code:
    /* viet ham xoa cac phan tu tai vi tri le trong mang */
    #include <stdio.h>
    #include<alloc.h>
    #include <conio.h>
    void nhap_mang (int A[],int n)
    {
    	for (int i=0;i<n;i++)
    	{
    		printf ("\n Nhap A[%d]: ",i);
    		scanf ("%d",&A[i]);
    	}
    }
    
    void xoa_vi_tri_le(int A[],int &n)
    {
    	int *B,dem=0;
    	B=(int*)malloc(n);
    	for (int i=0;i<n;i++)
    	{
    		if(i%2==0)
    		{
    			B[dem]=A[i];
    			dem++;
    		}
    	}
    	if(n%2!=0)
    		n=n-dem+1;
    	else
    		n=n-dem;	//editted -.-'
    	for(i=0;i<n;++i)
    		A[i]=B[i];
    	free(B);
    }
    
    void main()
    {
    	clrscr();
    	int A[100],n;
    	printf ("\n Nhap N:");
    	scanf ("%d",&n);
    	nhap_mang(A,n);
    	xoa_vi_tri_le(A,n);
    	printf ("\n Mang sau khi xoa :");
    	for (int i=0;i<n;i++)
    	printf ("%d ",A[i]);
    	getch();
    }
    Đã được chỉnh sửa lần cuối bởi 6220119 : 04-08-2008 lúc 04:03 PM.

  6. #6
    Ngày gia nhập
    04 2008
    Bài viết
    336

    Mặc định xoá các phần tử tại vi trí lẻ trong mảng

    còn đây là code của bạn thangit sau khi sửa ^^
    Code:
    /* viet ham xoa cac phan tu tai vi tri le trong mang */
    
    # include <stdio.h>
    # include <conio.h>
    void nhap_mang (int A[],int n)
     {
    	  for (int i=0;i<n;i++)
    		{        printf ("\n Nhap A[%d]: ",i);
    		         scanf ("%d",&A[i]);
    		}
      }
    
    void xoa_vi_tri (int A[],int &n,int x)
     {
    		for (int i=x;i<n;i++)
    			 A[i]=A[i+1];
    			 n--;
     }
    
    void main()
    {
    	clrscr();
    	int A[100],n,dem=0;
    	 printf ("\n Nhap N:");
    	 scanf ("%d",&n);
    	 nhap_mang(A,n);
    	 for (int i=0;i<n;i++)
    	 {
    		if(dem%2==0)
    		{
    			if (i%2==1)
    			{
    				xoa_vi_tri(A,n,i);
    				dem++;
    			}
    		}
    		if(dem%2==1)
    		{
    			if (i%2==0)
    			{
    				xoa_vi_tri(A,n,i);
    				dem++;
    			}
    		}
    	 }
    	 printf ("\n Mang sau khi xoa :");
    	 for ( i=0;i<n;i++)
    	 printf ("%d ",A[i]);
    	 getch();
    }

  7. #7
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,006

    Trích dẫn Nguyên bản được gửi bởi thangit Xem bài viết
    Code:
    /* viet ham xoa cac phan tu tai vi tri le trong mang */
    
    # include <stdio.h>
    # include <conio.h>
    void nhap_mang (int A[],int n)
     {
    	  for (int i=0;i<n;i++)
    		{        printf ("\n Nhap A[%d]: ",i);
    		         scanf ("%d",&A[i]);
    		}
      }
    void xoa_vi_tri (int A[],int &n,int x)
     {
    		for (int i=x;i<n;i++)
    			 A[i]=A[i+1];
    			 n--;
     }
    void main()
    {    int A[100],n;
    	  printf ("\n Nhap N:");
    	  scanf ("%d",&n);
    	  nhap_mang(A,n);
    	  for (int i=0;i<n;i++)
    			if (i%2==0)
    			xoa_vi_tri(A,n,i);
    	  printf ("\n Mang sau khi xoa :");
    	  for ( i=0;i<n;i++)
    	  printf ("%d ",A[i]);
    	  getch();
     }
    Mong mọi người sửa giúp mình
    Trích dẫn Nguyên bản được gửi bởi 6220119 Xem bài viết
    mình gửi bạn cách dễ nhất này ^^
    Code:
    /* viet ham xoa cac phan tu tai vi tri le trong mang */
    #include <stdio.h>
    #include<alloc.h>
    #include <conio.h>
    void nhap_mang (int A[],int n)
    {
    	for (int i=0;i<n;i++)
    	{
    		printf ("\n Nhap A[%d]: ",i);
    		scanf ("%d",&A[i]);
    	}
    }
    
    void xoa_vi_tri_le(int A[],int &n)
    {
    	int *B,dem=0;
    	B=(int*)malloc(n);
    	for (int i=0;i<n;i++)
    	{
    		if(i%2==0)
    		{
    			B[dem]=A[i];
    			dem++;
    		}
    	}
    	n=n-dem+1;
    	for(i=0;i<n;++i)
    		A[i]=B[i];
    	free(B);
    }
    
    void main()
    {
    	clrscr();
    	int A[100],n;
    	printf ("\n Nhap N:");
    	scanf ("%d",&n);
    	nhap_mang(A,n);
    	xoa_vi_tri_le(A,n);
    	printf ("\n Mang sau khi xoa :");
    	for (int i=0;i<n;i++)
    	printf ("%d ",A[i]);
    	getch();
    }
    bài của bạn cafelanh hình như còn bug đấy ^^

    Bạn có thể tham khảo ý tưởng cách của 6xxx hoặc tự nghĩ ra cho mình 1 ý tưởng xắp xếp.

    Coi mảng như là những cái hộp liên tiếp để chổng lên nhau.
    nếu bạn lấy nếu bỏ đi 1 phần tử thì các phần tử khác sẽ bị dồn xuống
    ok? bạn hiểu ý mình chứ ?

    Về bài này :
    cách của 6xxx là hiệu quả và đơn giản nhất (dùng mảng phụ). Bạn nên theo ý tưởng đó
    Ngoài ra mình cũng nói luôn. Đề bài này rất dở, ko hay. Ví dụ bỏ thằng mảng[3] đi lập tức có thằng khác lại là mang[3].
    Đề này theo mình nghĩ nó phải là xóa các số lẻ trong mảng đi thì hợp lý hơn.
    ^_,^

    Tổng hợp các câu chuyện hài hước vui nhộn, sử dụng Speech Synthesis để đọc : https://www.youtube.com/channel/UCLk...Tjrg/playlists


    Bùi Tấn Quang

  8. #8
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Có chút thắc mắc, bài của thangit phải hiểu như thế này:
    gs: mảng ban đầu 0,1,2,3,4,5
    Nghĩa 1:
    xóa 1,3,5 còn lại: 0,2,4
    hay Nghĩa 2:
    xóa 1: 0,2,3,4,5.
    xóa 3: 0,2,3,5.

    Tôi nghĩ phải là theo cách thức thứ 2. Và nếu như thế thì cách của 6x ko còn đúng nữa. mà phải làm theo .
    for(i:0->n/2
    a[i] = a[i*2 -1];

  9. #9
    Ngày gia nhập
    04 2008
    Bài viết
    336

    Trích dẫn Nguyên bản được gửi bởi kidkid Xem bài viết
    Có chút thắc mắc, bài của thangit phải hiểu như thế này:
    gs: mảng ban đầu 0,1,2,3,4,5
    Nghĩa 1:
    xóa 1,3,5 còn lại: 0,2,4
    hay Nghĩa 2:
    xóa 1: 0,2,3,4,5.
    xóa 3: 0,2,3,5.

    Tôi nghĩ phải là theo cách thức thứ 2. Và nếu như thế thì cách của 6x ko còn đúng nữa. mà phải làm theo .
    for(i:0->n/2
    a[i] = a[i*2 -1];
    Nếu là Nghĩa 2 thì mình làm sai .......:|, nhưng nếu là Nghĩa 2 thì đề bài sẽ là gì nhỉ ? -_-'

  10. #10
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,006

    Trích dẫn Nguyên bản được gửi bởi kidkid Xem bài viết
    Có chút thắc mắc, bài của thangit phải hiểu như thế này:
    gs: mảng ban đầu 0,1,2,3,4,5
    Nghĩa 1:
    xóa 1,3,5 còn lại: 0,2,4
    hay Nghĩa 2:
    xóa 1: 0,2,3,4,5.
    xóa 3: 0,2,3,5.

    Tôi nghĩ phải là theo cách thức thứ 2. Và nếu như thế thì cách của 6x ko còn đúng nữa. mà phải làm theo .
    for(i:0->n/2
    a[i] = a[i*2 -1];

    hì kidkid nói đúng , mình chỉ để ý về ý tưởng nên quên mất. Ý tưởng của 6xxx là đưa vào mảng phụ. Cách này hiệu quả hơn và dễ hiểu hơn tuy nhiên có nhiều cái chưa đúng

    ví dụ


    void xoa_vi_tri_le(int A[],int &n)

    nhưng lại gọi hàm thế này

    xoa_vi_tri_le(A,n);
    .....

    thường theo mình thì khi giải thích 1 vấn đề cho mọi người chúng ta nên
    + Hoặc chỉ ra chỗ sai của code
    + Hoặc đưa ra ý tưởng



    ...
    ^_,^

    Tổng hợp các câu chuyện hài hước vui nhộn, sử dụng Speech Synthesis để đọc : https://www.youtube.com/channel/UCLk...Tjrg/playlists


    Bùi Tấn Quang

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

  1. Lập trình C tìm xem trong mảng số nguyên i_Mang[] có bao nhiêu phần tử có giá trị âm & phần tử có giá trị âm trong mảngn
    Gửi bởi fawker trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 29-05-2013, 03:28 PM
  2. 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
  3. Thủ tục loại bỏ các phần tử trùng nhau, giữ lại duy nhất 1 phần tử trong DSLK
    Gửi bởi mrtyoffline trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 02-03-2011, 10:27 PM
  4. 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