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ố 22 kết quả

Đề tài: sửa code tìm vị trí của phần tử có giá trị x xuất hiện đầu tiên trong mảng

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

    Post sửa code tìm vị trí của phần tử có giá trị x xuất hiện đầu tiên trong mảng

    ko hiểu sao , mình ko thể tìm cách in ra được dạng hàm có 2 giá trị . Ai có cách nào thì giúp mình với . ( tổng quát )
    Đây là 1 bài cụ thể :
    Code:
    /* viet chuong trinh tim vi tri phtu co gtri x xuat hien dau tien trong mang */
    # include <stdio.h>
    # include <conio.h>
     void nhap_mang (int A[100],int n);
     int tim_vi_tri (int A[100],int n, int x);
     void nhap_mang (int A[100],int n)
     { int i;
    	 for ( i=0;i<n;i++)
    	{ printf ("\n Nhap A[%d]: ",i);
    	  scanf ("%d",&A[i]);
    	 }
      }
    
      int tim_vi_tri (int A[100],int n, int x)
      { int i;
    
    	 for (i=0;i<n;i++)
    	 if ( A[i]==x);
    		return i;
    		return -1;
      }
      int main ()
      { int x,n,i,A[100];
    	 printf ("\n Nhap n: ");
    	 scanf (" %d",&n);
    	 printf ("\n Nhap x: ");
    	 scanf (" %d",&x);
    	 nhap_mang (A,n);
    	 if ( tim_vi_tri (A,n,x))
    	 printf ("\n vi tri oF ptu co gtri % d dau tien la A[%d] ", x,tim_vi_tri (A,n,x));
    	 else
    	 printf ("\n ko co ");
    	 getch();
      }

  2. #2
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Code:
    /* viet chuong trinh tim vi tri phtu co gtri x xuat hien dau tien trong mang */
    # include <stdio.h>
    # include <conio.h>
     void nhap_mang (int A[100],int n);
     int tim_vi_tri (int A[100],int n, int x);
     void nhap_mang (int A[100],int n)
     { int i;
    	 for ( i=0;i<n;i++)
    	{ printf ("\n Nhap A[%d]: ",i);
    	  scanf ("%d",&A[i]);
    	 }
      }
    
      int tim_vi_tri (int A[100],int n, int x)
      { int i;
    
    	 for (i=0;i<n;i++)
    	 if ( A[i]==x);
    		return i;     
    		return -1;   
      }
      int main ()
      { int x,n,i,A[100];
    	 printf ("\n Nhap n: ");
    	 scanf (" %d",&n);
    	 printf ("\n Nhap x: ");
    	 scanf (" %d",&x);
    	 nhap_mang (A,n);
    	 if ( tim_vi_tri (A,n,x)!=-1)          //ban sua nhu nay nhe
    	 printf ("\n vi tri oF ptu co gtri % d dau tien la A[%d] ", x,tim_vi_tri (A,n,x));
    	 else
    	 printf ("\n ko co ");
    	 getch();
      }
    Chắc lỗi mỗi chỗ đó thôi bạn.

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

    Trích dẫn Nguyên bản được gửi bởi QuangHoang Xem bài viết
    Code:
    /* viet chuong trinh tim vi tri phtu co gtri x xuat hien dau tien trong mang */
    # include <stdio.h>
    # include <conio.h>
     void nhap_mang (int A[100],int n);
     int tim_vi_tri (int A[100],int n, int x);
     void nhap_mang (int A[100],int n)
     { int i;
    	 for ( i=0;i<n;i++)
    	{ printf ("\n Nhap A[%d]: ",i);
    	  scanf ("%d",&A[i]);
    	 }
      }
    
      int tim_vi_tri (int A[100],int n, int x)
      { int i;
    
    	 for (i=0;i<n;i++)
    	 if ( A[i]==x);
    		return i;     
    		return -1;   
      }
      int main ()
      { int x,n,i,A[100];
    	 printf ("\n Nhap n: ");
    	 scanf (" %d",&n);
    	 printf ("\n Nhap x: ");
    	 scanf (" %d",&x);
    	 nhap_mang (A,n);
    	 if ( tim_vi_tri (A,n,x)!=-1)          //ban sua nhu nay nhe
    	 printf ("\n vi tri oF ptu co gtri % d dau tien la A[%d] ", x,tim_vi_tri (A,n,x));
    	 else
    	 printf ("\n ko co ");
    	 getch();
      }
    Chắc lỗi mỗi chỗ đó thôi bạn.
    sao mà mình test nó không cho ra kết quả đúng

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

    cho mình xin lỗi , minh làm còn sai chỗ if ( A[i]==x);

  5. #5
    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
    ko hiểu sao , mình ko thể tìm cách in ra được dạng hàm có 2 giá trị . Ai có cách nào thì giúp mình với . ( tổng quát )
    Đây là 1 bài cụ thể :
    Code:
    /* viet chuong trinh tim vi tri phtu co gtri x xuat hien dau tien trong mang */
    # include <stdio.h>
    # include <conio.h>
     void nhap_mang (int A[100],int n);
     int tim_vi_tri (int A[100],int n, int x);
     void nhap_mang (int A[100],int n)
     { int i;
    	 for ( i=0;i<n;i++)
    	{ printf ("\n Nhap A[%d]: ",i);
    	  scanf ("%d",&A[i]);
    	 }
      }
    
      int tim_vi_tri (int A[100],int n, int x)
      { int i;
    
    	 for (i=0;i<n;i++)
    	 if ( A[i]==x);
    		return i;
    		return -1;
      }
      int main ()
      { int x,n,i,A[100];
    	 printf ("\n Nhap n: ");
    	 scanf (" %d",&n);
    	 printf ("\n Nhap x: ");
    	 scanf (" %d",&x);
    	 nhap_mang (A,n);
    	 if ( tim_vi_tri (A,n,x))
    	 printf ("\n vi tri oF ptu co gtri % d dau tien la A[%d] ", x,tim_vi_tri (A,n,x));
    	 else
    	 printf ("\n ko co ");
    	 getch();
      }
    gửi thắngit : thắng nè mình có đôi điều muốn góp ý với bạn:
    1. code conversion:
    bạn có thể google từ này để tìm hiểu thêm.
    Tác dụng của code conversion là vô cùng to lớn với 1 coder . Mỗi người có 1 lối code riêng, ok! Mình chỉ là góp ý cho bạn thôi :
    Code của bạn quá loằng ngoằng và rất khó theo dõi.
    Bạn có thể mở Chương trình mình gửi cho bạn ở bài kia đó, bài đó rất dài nhưng code rất sáng sủa và dễ nhìn

    + đầu tiên là các câu nói rất sáng sủa :
    ví dụ của bạn là : "\n vi tri oF ptu co gtri % d dau tien la A[%d] "
    Câu này trình bày rất lôm côm
    + "\n" ko cần thiết ( sau scan chắc chắn đã xuống dòng )
    + Chú ý nhất đến cấp của câu lệnh....

    ví dụ :
    PHP Code:
             if ( tim_vi_tri (A,n,x))
         
    printf ("\n vi tri oF ptu co gtri % d dau tien la A[%d] "x,tim_vi_tri (A,n,x));
         else
         
    printf ("\n ko co "); 
    nên sửa thành
    PHP Code:
             if ( tim_vi_tri (A,n,x))
                      
    printf ("\n vi tri oF ptu co gtri % d dau tien la A[%d] "x,tim_vi_tri (A,n,x));
         else
                      
    printf ("\n ko co "); 
    2. Sử dụng hàm lãng phí bộ nhớ.
    Ở đây hàm của bạn là 1 hàm đơn giản : tim_vi_tri (A,n,x)

    PHP Code:
             if ( tim_vi_tri (A,n,x))
         
    printf ("\n vi tri oF ptu co gtri % d dau tien la A[%d] "x,tim_vi_tri (A,n,x));
         else
         
    printf ("\n ko co "); 
    Tuy nhiên ở bài khác giả sử hàm này của bạn nó rất dài và khi chạy tốn khá nhiều time. >> bạn đã lãng phí bộ nhớ

    Khi đó ta sẽ làm thế này :

    PHP Code:
             int temp=tim_vi_tri (A,n,x);
             if ( 
    temp)
                         
    printf ("\n vi tri oF ptu co gtri % d dau tien la A[%d] "x,temp);
         else
                         
    printf ("\n ko co "); 
    như vầy bảo đảm 100% ct của bạn sẽ chạy nhanh 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

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

    Mặc định sửa code tìm vị trí của phần tử có giá trị x xuất hiện đầu tiên trong mảng

    Mình rất cảm ơn những góp ý của bạn , mình sẽ sửa

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

    C Code:
    1. /* viet chuong trinh tim vi tri phtu co gtri x xuat hien dau tien trong mang */
    2. # include <stdio.h>
    3. # include <conio.h>
    4.  
    5. void nhap_mang(int A[],int n)
    6.     {
    7.         for (int i=0;i<n;i++)
    8.             {
    9.                 printf("\n Nhap A[%d]: ",i);
    10.                 scanf("%d",&A[i]);
    11.             }
    12.     }
    13. int tim_vi_tri(int A[],int n, int x)
    14.     {
    15.         for (int i=0;i<n;i++)
    16.             if (A[i]==x) return i;
    17.         return 0;
    18.     }
    19. void main(void)
    20.     {
    21.         clrscr();
    22.         int x,n,A[100];
    23.         printf("\n Nhap n: ");
    24.         scanf(" %d",&n);
    25.         printf("\n Nhap x: ");
    26.         scanf(" %d",&x);
    27.         nhap_mang (A,n);
    28.         int temp=tim_vi_tri(A,n,x);
    29.         if (temp)
    30.             printf ("\n vi tri dau tien cua %d trong mang la : A[%d]", x,temp);
    31.         else
    32.             printf ("\n ko co ");
    33.         getch();
    34.     }
    Đây là full code mình đã mix lại và sửa cách lỗi cho bạn . Hãy cố gắng thêm nha
    ^_,^

    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
    12 2007
    Bài viết
    54

    Bạn trình bày khoa học thật :

    cho mình hỏi 1 số vấn đề :
    1) "\n" ko cần thiết ( sau scan chắc chắn đã xuống dòng ) mình ko hiểu ý câu này của bạn
    2)
    Trích dẫn Nguyên bản được gửi bởi langman Xem bài viết
    int tim_vi_tri(int A[],int n, int x)
    void main(void)
    Giá trị trả về khi gọi hàm chính là kiểu dữ liệu của hàm main đúng ko bạn .
    3) Biến toàn cục tại sao lại nằm ngoài cả hàm main nữa . Mình thấy chương trình bắt đầu hoạt động từ khi hàm main khai báo đến khi đến thúc hàm main .
    4) Tại sao khi khai báo hàm nhập mảng thì tham số : A[], còn khi gọi hàm thì tham số là : A
    Mong được mọi người giúp đỡ

  9. #9
    Ngày gia nhập
    09 2006
    Bài viết
    7

    1) "\n" ko cần thiết ( sau scan chắc chắn đã xuống dòng ) mình ko hiểu ý câu này của bạn
    Dữ liệu nhập vào phải nằm trong bộ đệm bàn phím .
    Khi bạn nhập dữ liệu vào phải nhấn Enter do đó trong bộ đệm bàn phím ngoài dữ liệu còn có ký tự Enter ( hình như là 10,13 thì phải ko nhớ nữa) ===> ko cần \n cũng xuống dòng .


    3) Biến toàn cục tại sao lại nằm ngoài cả hàm main nữa . Mình thấy chương trình bắt đầu hoạt động từ khi hàm main khai báo đến khi đến thúc hàm main .
    Hàm main cũng là một hàm thui nên biến của nó cũng chỉ là biến cục bộ .
    Nếu muốn sử dụng biến trong Main trong một hàm khác thì phải truyền qua tham số .
    Biến cục bộ là biến chung chương trình hàm nào thích thì sài khỏi tham số gì hết .

    4) Tại sao khi khai báo hàm nhập mảng thì tham số : A[], còn khi gọi hàm thì tham số là : A
    Mong được mọi người giúp đỡ
    Cái này mà chưa hiểu hả ?
    Tham số chỉ là hình thức thui !
    Ví dụ
    Code:
    void XXXXX(int a,float b,int c[])
    có nghỉa là khi gọi hàm này bạn phải cho no tham số thứ nhất là kiểu int thứ hai là float va thứ 3 là một mảng .

  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 thangit Xem bài viết
    Bạn trình bày khoa học thật :

    cho mình hỏi 1 số vấn đề :
    1) "\n" ko cần thiết ( sau scan chắc chắn đã xuống dòng ) mình ko hiểu ý câu này của bạn
    2)
    Giá trị trả về khi gọi hàm chính là kiểu dữ liệu của hàm main đúng ko bạn .
    3) Biến toàn cục tại sao lại nằm ngoài cả hàm main nữa . Mình thấy chương trình bắt đầu hoạt động từ khi hàm main khai báo đến khi đến thúc hàm main .
    4) Tại sao khi khai báo hàm nhập mảng thì tham số : A[], còn khi gọi hàm thì tham số là : A
    Mong được mọi người giúp đỡ
    0.

    a.Ở đây nguyên mẫu của hàm ko cần thiết phải khai báo vì nó ko có tác dụng nên tôi bỏ đi.

    nguyên mẫu của hàm bạn khai báo là :
    PHP Code:
     void nhap_mang (int A[100],int n);
     
    int tim_vi_tri (int A[100],int nint x); 
    b. Khi khai báo nguyên mẫu của hàm ta có thể cho nó đơn giản hơn ví dụ :
    PHP Code:
    void nhap_mang(int *,int int );
    int tim_vi_tri(int *,int ,int); 
    Chú ý là nguyên mẫu khác và tên khai báo hàm khác.
    Nguyên mẫu hàm thì có ; đằng sau và có ý nghĩa là thông báo trong bài sẽ có hàm như này và có danh sách tham biến là thế này ......
    Tên khai báo hàm có ý nghĩa thông báo đằng sau nó là phần code của hàm đó


    1. "\n" ko cần thiết benvang999 đã trả lời

    2. Giá trị trả về khi gọi hàm chính là kiểu dữ liệu mà ta khai báo hàm. Không liên quan gì đến hàm main cả.


    3. Bài này ko hề có biến toàn cục.....
    PHP Code:
    int tim_vi_tri(int A[],int nint x)
        {
            for (
    int i=0;i<n;i++)
                if (
    A[i]==x) return i;
            return 
    0;
        } 
    đây chính là khai báo hàm.

    PHP Code:
    int tim_vi_tri(int A[],int nint x
    đây chính là tên khai báo hàm xác nhận rằng sau nó là code của hàm tim_vi_tri

    4. A[] là tham biến ko phải tham số.Nó xác định rằng bạn có thể truyền vào 1 mảng nguyên. Do ko gia hạn về kick thước nên có thể truyển vào mảng nguyên có bao nhiêu phần tử cũng được.
    Nếu bạn dùng A[100] thì bạn chỉ có thể truyền vào các mảng có kick thước là 100. Như vậy sẽ rất hạn hẹp

    Khi gọi hàm thì ta chỉ cần truyền vào tên hàm. Theo sách giáo khoa thì tên của hàm chính là con trỏ trỏ đến phần tử đầu tiên của mảng. >> ta truyền vào tên mảng chính là truyển vào địa chỉ của mảng hay cũng chính là truyền vào mảng,

    5. trong hàm main của bạn ở bài đầu tiên bạn gửi ấy có biến i ko cần thiết !!! biến i này để làm gì ?????


    6. trong bài của bạn code

    PHP Code:
     int tim_vi_tri (int A[100],int nint x)
      { 
    int i;

         for (
    i=0;i<n;i++)
         if ( 
    A[i]==x);
            return 
    i;     
            return -
    1;   
      } 
    if ( A[i]==x); >>>>> đây là câu lệnh if rỗng chả có ý nghĩa gì cả


    Kết luận : lý thuyết nắm sơ sài
    ^_,^

    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. Mảng trên C Cách xóa phần tử có giá trị k xuất hiện đầu tiên trong mảng
    Gửi bởi nguyenvung93 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 21-07-2013, 01:15 AM
  2. Thuật toán C++ xuất 5 phần tử đầu tiên và cuối cùng trong linkedlist và binary tree
    Gửi bởi GMXChaser trong diễn đàn Thắc mắc CTDL & Giải thuật
    Trả lời: 5
    Bài viết cuối: 24-09-2012, 04:02 PM
  3. Trả lời: 1
    Bài viết cuối: 27-04-2011, 09:30 PM
  4. Code tìm kiếm trong cây nhị phân trong C++. Lỗi chỉ tìm được từ đầu tiên trong file thôi sửa thế nào?
    Gửi bởi elvish trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 1
    Bài viết cuối: 11-04-2010, 09:43 PM
  5. code:liệt kê các phần tử xuất hiện đúng 1 lần
    Gửi bởi zodjac1990 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 10
    Bài viết cuối: 03-12-2008, 01:28 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