Tìm vị trí phần tử có giá trị x xuất hiện cuối cùng trong mảng

Yêu cầu:

Viết hàm tìm vị trí phần tử có giá trị x xuất hiện cuối cùng trong mảng.

Thuật toán:

Viết hàm có tham số đầu vào là mảng 1 chiều và giá trị x, giá trị trả về là vị trí phần tử có giá trị x xuất hiện cuối cùng trong mảng, nếu không có phần tử nào phù hợp thì trả về -1

Code:

/************************************************************
* Author: VNCODING
* History 
* 2014/10/05 first create VNCODING
*************************************************************/
#include "stdio.h"
#include "conio.h"

#define LEN_MAX 100 // do dai toi da cua mang

int srchPos(int A[], int x, int len);

void main()
{
    int arr[LEN_MAX];
    int n, x;
    int i;
    int pos;
    do 
    {
        printf("\nNhap kich thuoc mang: ");
        scanf("%d", &n);
    }
    while (n > LEN_MAX);

    for (i = 0; i < n; i++)
    {
        printf("\nA[%d] = ", i);
        scanf("%d", &arr[i]);
    }

    //Nhap phan tu x
    printf("\nNhap x: ");
    scanf("%d", &x);

    pos = srchPos(arr, x, n);
    if(pos != -1)
        printf("\n%d xuat hien tai vi tri cuoi mang A la: %d", x, pos);
    else
        printf("\n%d khong xuat hien trong mang A", x);

    getch();
}

int srchPos(int A[], int x, int len)
{
    int i, pos = -1;
    for (i = 0; i < len; i++)
        if (x == A[i])
            pos = i+1;
    return pos;
}

Kết quả:

Nhap kich thuoc mang: 5
A[0] = 2
A[1] = 1
A[2] = 9
A[3] = 2
A[4] = 1
Nhap x: 1
1 xuat hien tai vi tri cuoi mang A la: 5

6 Comments on Tìm vị trí phần tử có giá trị x xuất hiện cuối cùng trong mảng

    • Hi TrúcLinh
      Đây là hàm tìm vị trí của x trong mảng số nguyên.

      int srchPos(int A[], int x, int len)
      {
          int i, pos = -1;
          for (i = 0; i < len; i++)
              if (x == A[i])
              {
                  pos = i+1;
                  break;
              }
          return pos;
      }
      
  1. trường hợp có hai phần tử trở lên trong mảng có cùng giá trị thì làm thế nào bạn ơi? mình thử thì hàm trên báo không tìm thấy. hoặc chỉ in ra vị trí phần tử sau, giờ nếu mình muốn in ra từng vị trí một thì làm sao bạn nhỉ. thanks you

    • Đúng vậy em, thư viện conio.h, stdio.h chỉ support trên DOS, ko support trên Win32 application.
      Tuy nhiên, các bài tập C/C++ được viết dạng console application (DOS), nên vẫn support em nhé,

Leave a Reply to TrúcLinh Cancel reply