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

Đề tài: 1 code chưa triệt để, các bạn góp ý với

  1. #1
    Ngày gia nhập
    10 2008
    Bài viết
    85

    Red face 1 code chưa triệt để, các bạn góp ý với

    mình có cái code xóa phần tử cảu 1 mảng hôm trước có làm hôm nay xem lại thấy nó chưa triệt để hết:

    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. main()
    4. {
    5.     int a[100],n;
    6.    int i,j,k,x,dem=0;
    7.    printf("\nnhap so phan tu:");
    8.    scanf("%d",&n);
    9.    for(i=0;i<n;i++)
    10.    {
    11.     printf("\na[%d]=",i);
    12.       scanf("%d",&a[i]);
    13.    }
    14.    for(i=0;i<n;i++)
    15.    printf("\na[%d]=%d",i,a[i]);
    16.    printf("\nNhap x:");
    17.    scanf("%d",&x);
    18.  
    19.    for(i=0;i<n-dem;i++)
    20.    {
    21.     if(a[i]==x)
    22.       {
    23.          dem++;
    24.          for(j=i;j<n;j++)
    25.          {
    26.             a[j]=a[j+1];
    27.          }
    28.       }
    29.    }
    30.  
    31.  
    32.  
    33.    if(dem==0) printf("\n X khong co trong mang");
    34.    else
    35.    {
    36.     printf("\nso lan xuat hien cua x la:%d",dem);
    37.     printf("\nmang sau khi xoa gia tri x la:");
    38.     for(i=0;i<n-dem;i++)
    39.     printf("\na[%d]=%d",i,a[i]);
    40.    }
    41.    getch();
    42.  
    43. }

    Ở code trên khi mình cho các phần tử trong mảng là 4 4 4 3 chẳng hạn và nhập x=4 thì vòng for để đè phần tử j+1 nên j chỉ đè được đến 1 nửa sô phần tử thôi và nó sẽ hiện ra kết quả là 4 và 3. Mình nghĩ là phải dùng thêm 1 vòng lặp do while và cho vòng for xóa phần tử ở trong và lặp cho đến khi nào vòng for đè cho đến hết giá trị mình muốn xóa thì thoát ra. Nhung mình không biết điều kiện cho while để lặp lại là gì các bạn giúp mình 1 tay với

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

    các bạn góp ý giúp minh với

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

    Mình có cách này em thử xem thế nào nhé :
    Hàm nhập mảng
    Hàm xóa 1 phần tủ của mảng ở vị trí i
    Hàm xóa các phần tủ có giá trị x : Duyệt các ptu của mảng , kiểm tra điều kiện nếu khi nào nó ==x thì xóa vị trí đó đi .
    Good Luck
    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

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

    Trích dẫn Nguyên bản được gửi bởi thangit Xem bài viết
    Mình có cách này em thử xem thế nào nhé :
    Hàm nhập mảng
    Hàm xóa 1 phần tủ của mảng ở vị trí i
    Hàm xóa các phần tủ có giá trị x : Duyệt các ptu của mảng , kiểm tra điều kiện nếu khi nào nó ==x thì xóa vị trí đó đi .
    Good Luck
    Hình như như bạn nói thì vẫn như cách trên của mình có lẽ ko được

  5. #5
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Nên tách hàm chức năng xóa ra hàm riêng :
    C Code:
    1. void xoa(int vitri)
    Sau đó cho vòng for quét mảng, hễ gặp x (trong trường hợp này thì x = 4 ) thì gọi hàm xóa mảng và nhớ là phải giảm cả biến đếm của vòng for và biến lưu kích thước mảng đi 1 sau khi xóa.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  6. #6
    Ngày gia nhập
    04 2008
    Nơi ở
    HCMC
    Bài viết
    251

    Mặc định 1 code chưa triệt để, các bạn góp ý với

    C++ Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. void main()
    4. {
    5.    int a[100],n;
    6.    int i,j,k,x,dem=0;
    7.    printf("\nnhap so phan tu:");
    8.    scanf("%d",&n);
    9.    for(i=0;i<n;i++)
    10.    {
    11.     printf("\na[%d]=",i);
    12.       scanf("%d",&a[i]);
    13.    }
    14.    for(i=0;i<n;i++)
    15.    printf("\na[%d]=%d",i,a[i]);
    16.    printf("\nNhap x:");
    17.    scanf("%d",&x);
    18.  
    19.    for(i=0;i<n;i++)
    20.    {
    21.     if(a[i]==x)
    22.       {
    23.          dem++;
    24.       }
    25.    }
    26.    for(i=0;i<n;i++)
    27.    {
    28.     if(a[i]==x)
    29.     {
    30.          for(j=i;j<n-1;j++)
    31.          {
    32.              a[j]=a[j+1];
    33.              //printf("\nxoa tai i =%d",i);
    34.          }
    35.          i=-1;
    36.          n=n-1;
    37.       }
    38.    }
    39.  
    40.    if(dem==0) printf("\n X khong co trong mang");
    41.    else
    42.    {
    43.     printf("\nso lan xuat hien cua x la:%d",dem);
    44.     printf("\nmang sau khi xoa gia tri x la:");
    45.     for(i=0;i<n;i++)
    46.     printf("\na[%d]=%d",i,a[i]);
    47.    }
    48.    getch();
    49.  
    50. }
    Code nè.
    Test xem nhé.Mình mới test vài trường hợp
    C++ Code:
    1. for(;;){cout<<"Busy"<<endl;}
    2. system("cls");
    Hãy ủng hộ cho quỹ phát triển cộng đồng C Việt
    http://congdongcviet.com/quyphattrien-congdongcviet.cpp

  7. #7
    Ngày gia nhập
    10 2008
    Bài viết
    85

    có lẽ code của thienthan34 là đúng rồi mình test qua thấy ok. Mỗi lần gặp số x vị trí i sẽ bị xóa và vòng for sẽ quay lại từ đầu,số phần tử n cũng bị lùi đi 1 lần. Đã hiểu cám ơn nhiều nha
    Đã được chỉnh sửa lần cuối bởi minhphuong90 : 16-11-2008 lúc 01:06 AM.

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

  1. [C++] góp ý về code cài đặt cây AVL
    Gửi bởi thanh_vien_moi trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 3
    Bài viết cuối: 06-12-2013, 02:39 PM
  2. [C++] góp ý về code cài đặt liên kết kép
    Gửi bởi dungnamdinh9203 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 22-04-2013, 10:15 AM
  3. Chung cư FPT City Đà Nẵng - Trả góp chỉ từ 5 triệu trong 60 tháng
    Gửi bởi thaithangtelecom trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 25-06-2012, 08:59 AM
  4. Kỹ thuật C++ Mình mới học lập trình xin các ban xem code của mình có gì chưa tối ưu xin góp ý!
    Gửi bởi nguyenhunghuy39 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 30-03-2012, 08:11 PM
  5. Đề xuất Góp ý về thẻ Code của diễn đàn
    Gửi bởi chuong01 trong diễn đàn Ý kiến, đề xuất và khiếu nại
    Trả lời: 7
    Bài viết cuối: 29-05-2010, 06:39 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