Đánh giá, nhận xét, review các công ty tuyển dụng
Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Nhập x, viết hàm chỉ ra vị trí xuất hiện x trong mảng 1 chiều

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

    Wink Nhập x, viết hàm chỉ ra vị trí xuất hiện x trong mảng 1 chiều

    Bài này mình làm đc, nhưng chỉ in ra được vị trí x xuất hiện đầu tiên, ai biết sửa dùm cho nó in ra hết các vị trí xuất hiện x cái, thanks


    Code:
    #include<stdio.h>
    #include<conio.h>
    void main()
    {
    int timx(int [], int, int );
    int n, i, x;
    int a[10];
    clrscr();
    printf("Moi nhap so phan tu cua mang: ");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
    printf("a[%d]= ",i);
    scanf("%d",&a[i]);
    }
    printf("Nhap x: ");
    scanf("%d",&x);
    if(timx(a,n,x)==0)
    printf("Ko xuat hien x trong mang");
    else
    printf("vi tri x xuat hien trong mang %d ", vitrix(a,n,x));
    getch();
    }
    
    int timx(int a[], int n, int x)
    {
    int i;
    for(i=0;i<n;i++)
    if(a[i]==x)
    return a[i];
    return 0;
    }
    
    int vitrix(int a[], int n, int x)
    {
    int i;
    for(i=0;i<n;i++)
    if(a[i]==timx(a,n,x))
    return i;
    }

  2. #2
    Ngày gia nhập
    07 2011
    Bài viết
    12

    Bro nào vào chỉ giúp cái nào

  3. #3
    Ngày gia nhập
    03 2011
    Bài viết
    11

    Dùng 1 mảng lưu các vị trí tìm được. Sau đó in ra là OK.
    Trích dẫn Nguyên bản được gửi bởi HoangCoi Xem bài viết
    Bài này mình làm đc, nhưng chỉ in ra được vị trí x xuất hiện đầu tiên, ai biết sửa dùm cho nó in ra hết các vị trí xuất hiện x cái, thanks


    Code:
    #include<stdio.h>
    #include<conio.h>
    void main()
    {
    int timx(int [], int, int );
    int n, i, x;
    int a[10];
    clrscr();
    printf("Moi nhap so phan tu cua mang: ");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
    printf("a[%d]= ",i);
    scanf("%d",&a[i]);
    }
    printf("Nhap x: ");
    scanf("%d",&x);
    if(timx(a,n,x)==0)
    printf("Ko xuat hien x trong mang");
    else
    printf("vi tri x xuat hien trong mang %d ", vitrix(a,n,x));
    getch();
    }
    
    int timx(int a[], int n, int x)
    {
    int i;
    for(i=0;i<n;i++)
    if(a[i]==x)
    return a[i];
    return 0;
    }
    
    int vitrix(int a[], int n, int x)
    {
    int i;
    for(i=0;i<n;i++)
    if(a[i]==timx(a,n,x))
    return i;
    }

  4. #4
    Ngày gia nhập
    10 2010
    Nơi ở
    Đại học Bách Khoa Hà Nội
    Bài viết
    45

    Trích dẫn Nguyên bản được gửi bởi HoangCoi Xem bài viết
    Bài này mình làm đc, nhưng chỉ in ra được vị trí x xuất hiện đầu tiên, ai biết sửa dùm cho nó in ra hết các vị trí xuất hiện x cái, thanks


    Code:
    #include<stdio.h>
    #include<conio.h>
    void main()
    {
    int timx(int [], int, int );
    int n, i, x;
    int a[10];
    clrscr();
    printf("Moi nhap so phan tu cua mang: ");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
    printf("a[%d]= ",i);
    scanf("%d",&a[i]);
    }
    printf("Nhap x: ");
    scanf("%d",&x);
    if(timx(a,n,x)==0)
    printf("Ko xuat hien x trong mang");
    else
    printf("vi tri x xuat hien trong mang %d ", vitrix(a,n,x));
    getch();
    }
    
    int timx(int a[], int n, int x)
    {
    int i;
    for(i=0;i<n;i++)
    if(a[i]==x)
    return a[i];
    return 0;
    }
    
    int vitrix(int a[], int n, int x)
    {
    int i;
    for(i=0;i<n;i++)
    if(a[i]==timx(a,n,x))
    return i;
    }
    Code của bạn đau mắt quá.
    Vì hàm vitrix của bạn chỉ là tìm vị trí xuất hiện của x thôi chứ không phải là hàm in ra tất cả các vị trí. Sửa hàm int vitrix thành void nhé.
    Có thể sửa lại như sau:

    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3.  
    4. int  main()
    5. {
    6.     int timx(int [], int, int );
    7.     int n, i, x;
    8.     int a[10];
    9.     printf("Moi nhap so phan tu cua mang: ");
    10.     scanf("%d",&n);
    11.     for(i=0;i<n;i++)
    12.     {
    13.         printf("a[%d]= ",i);
    14.         scanf("%d",&a[i]);
    15.     }
    16.     printf("Nhap x: ");
    17.     scanf("%d",&x);
    18.     ///////////////////////////////////
    19.     if(timx(a,n,x)==0)
    20.         printf("Ko xuat hien x trong mang");
    21.     else
    22.         vitrix(a,n,x);
    23.     getch();
    24. }
    25.  
    26. ///////////////////////////////////////////////////////
    27. int timx(int a[], int n, int x)
    28. {
    29.     int i;
    30.     for(i=0;i<n;i++)
    31.     if(a[i]==x)
    32.     return a[i];
    33.     return 0;
    34. }
    35.  
    36. //////////////////////////
    37. void vitrix(int a[], int n, int x)
    38. {
    39.     int i;
    40.     for(i=0;i<n;i++)
    41.     if(a[i]==timx(a,n,x))
    42.         printf("%d ", i);
    43. }
    Mình compilers bằng C Free nên có sửa lại một số cú pháp.
    Chẳng biết mình muốn cái gì nữa :v

  5. #5
    Ngày gia nhập
    07 2011
    Bài viết
    3

    Trích dẫn Nguyên bản được gửi bởi HoangCoi Xem bài viết
    Bro nào vào chỉ giúp cái nào
    C++ Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3.  
    4. void main()
    5. {
    6.     int n, i, x;
    7.     int a[100];
    8.     clrscr();
    9.  
    10.     printf("Moi nhap so phan tu cua mang: "); scanf("%d",&n);
    11.     for(i=0;i<n;i++)
    12.     {
    13.         printf("a[%d]= ",i);
    14.         scanf("%d",&a[i]);
    15.     }
    16.  
    17.     printf("Nhap x: "); scanf("%d",&x);
    18.     int k = 0;
    19.     while (k < n && a[k] != x) k++;
    20.     if (k < n)
    21.         {
    22.             printf("\n Cac vi tri ma %d xuat hien trong mang la:\n",x);
    23.             for (i = k; i < n; i++)
    24.                 if (a[i] == x) printf("%5d",i);
    25.         }
    26.     else
    27.         printf("Ko xuat hien %d trong mang\n",x);
    28.     getch();
    29. }

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

    Mặc định Nhập x, viết hàm chỉ ra vị trí xuất hiện x trong mảng 1 chiều

    Trích dẫn Nguyên bản được gửi bởi iexplore Xem bài viết
    Code của bạn đau mắt quá.
    Vì hàm vitrix của bạn chỉ là tìm vị trí xuất hiện của x thôi chứ không phải là hàm in ra tất cả các vị trí. Sửa hàm int vitrix thành void nhé.
    Có thể sửa lại như sau:

    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3.  
    4. int  main()
    5. {
    6.     int timx(int [], int, int );
    7.     int n, i, x;
    8.     int a[10];
    9.     printf("Moi nhap so phan tu cua mang: ");
    10.     scanf("%d",&n);
    11.     for(i=0;i<n;i++)
    12.     {
    13.         printf("a[%d]= ",i);
    14.         scanf("%d",&a[i]);
    15.     }
    16.     printf("Nhap x: ");
    17.     scanf("%d",&x);
    18.     ///////////////////////////////////
    19.     if(timx(a,n,x)==0)
    20.         printf("Ko xuat hien x trong mang");
    21.     else
    22.         vitrix(a,n,x);
    23.     getch();
    24. }
    25.  
    26. ///////////////////////////////////////////////////////
    27. int timx(int a[], int n, int x)
    28. {
    29.     int i;
    30.     for(i=0;i<n;i++)
    31.     if(a[i]==x)
    32.     return a[i];
    33.     return 0;
    34. }
    35.  
    36. //////////////////////////
    37. void vitrix(int a[], int n, int x)
    38. {
    39.     int i;
    40.     for(i=0;i<n;i++)
    41.     if(a[i]==timx(a,n,x))
    42.         printf("%d ", i);
    43. }
    Mình compilers bằng C Free nên có sửa lại một số cú pháp.

    Đc rồi, thanks nha

  7. #7
    Ngày gia nhập
    04 2010
    Bài viết
    1,537

    Nếu viết hàm tính vị trí thì phải dùng phương pháp tính từ một vị trí nào đó thay vì từ đầu mảng. Như vậy hàm mới có thể được gọi nhiều lần trên một mảng để tìm các vị trí khác nhau.

    C Code:
    1. // hàm duyệt mảng a[], n phần tử
    2. // trả về vị trí xuất hiện của trị x tr, kể từ vị trí kt
    3. // nếu không có, trả về -1
    4.  
    5. int vitrix(int a[], int n, int x, int kt)
    6. {
    7.   for (int i=kt; i < n; i++)
    8.     if (a[i] == x) return i;
    9.   return -1;
    10. }
    11.  
    12. // code trong hàm main
    13.  
    14. printf("Các vị trí xuất hiện của %d trong mảng là ", x);
    15. int vt = 0;
    16. while ( 1 )
    17. {
    18.    vt = vitrix(a, n, x, vt);
    19.    if ( vt < 0 )  break;
    20.    printf(" %d", vt);
    21.    vt++;
    22. }
    23.  
    24. // sửa đổi code một chút nếu muón giải quyết trường hợp không có trị x trong mảng

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

  1. Bài tập C Viết chương trình liệt kê các giá trị lớn nhất trong mảng 1 chiều
    Gửi bởi quockhang trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 22-09-2011, 05:47 PM
  2. Lập trình C Nhập xuất chuỗi trong mảng 1 chiều
    Gửi bởi teotoni trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 12
    Bài viết cuối: 14-05-2011, 04:42 PM
  3. Nhập xuất mảng 1 chiều trong C#?
    Gửi bởi rogerminh2401 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 17-03-2011, 11:53 PM
  4. Lập trình C Tìm phần tử xuất hiện ít nhất trong mảng 1 chiều
    Gửi bởi masterkids trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 21-02-2011, 11:18 PM
  5. Viết hàm tìm phần tử xuất hiện nhiều nhất trong mảng 1 chiều các số nguyên?
    Gửi bởi fire_dragon14988 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 46
    Bài viết cuối: 28-08-2010, 05:14 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