Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

จำนวนค่าผิดปกติในอาร์เรย์ใน C++

โจทย์

ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมหาจำนวนค่าผิดปกติ (anomalies) ในอาร์เรย์ที่กำหนด

ตัวเลขถือเป็นค่าผิดปกติในอาร์เรย์ หากค่าสัมบูรณ์ของความต่างระหว่างตัวเลขนั้นกับตัวเลขอื่นๆ ทั้งหมด มากกว่าตัวเลข k ที่กำหนด มาดูตัวอย่างกัน

อินพุต

arr = [3, 1, 5, 7] k = 1

เอาต์พุต

4

ค่าสัมบูรณ์ของความต่างระหว่างทุกตัวเลขกับตัวเลขอื่นๆ มากกว่า k

อัลกอริธึม

  • กำหนดอาร์เรย์
  • วนลูปผ่านอาร์เรย์
    • เลือกองค์ประกอบและวนลูปผ่านอาร์เรย์อีกครั้ง
      • หาค่าสัมบูรณ์ของความต่างระหว่างสองตัวเลข
      • ถ้าไม่มีค่าสัมบูรณ์ของความต่างใดๆ น้อยกว่าหรือเท่ากับ k ให้เพิ่มตัวนับค่าผิดปกติ

การนำไปใช้งาน

ต่อไปนี้เป็นการนำไปใช้งานของอัลกอริธึมข้างต้นใน C++

#include <bits/stdc++.h> 
using namespace std; 

int getAnomaliesCount(int arr[], int n, int k) { 
    int count = 0; 
    for (int i = 0; i < n; i++) { 
        int j; 
        for (j = 0; j < n; j++) { 
            if (i != j && abs(arr[i] - arr[j]) <= k) { 
                break; 
            } 
        } 
        if (j == n) { 
            count++; 
        } 
    } 
    return count; 
} 

int main() { 
    int arr[] = {3, 1, 5, 7}, k = 1; 
    int n = 4; 
    cout << getAnomaliesCount(arr, n, k) << endl; 
    return 0; 
}

ผลลัพธ์

หากคุณรันโค้ดข้างต้น คุณจะได้ผลลัพธ์ดังนี้

4