Bagaimana cara menghitung berapa banyak elemen dalam array yang memenuhi kondisi tertentu (C++)?

Saya seorang pemula di C++, dan saya butuh bantuan dalam pertanyaan dasar. Saya memiliki kumpulan data (array) dan tugasnya adalah menghitung berapa banyak elemen yang memenuhi kondisi yang diberikan.

Sebuah perusahaan menyimpan usia dan gaji karyawannya. Kita perlu menulis sebuah program yang memberitahu Anda berapa banyak orang yang berusia di atas L yang memiliki gaji kurang dari M.

Memasukkan

Jumlah pekerja pada baris pertama input standar (0≤N≤100), batas usia (1≤L≤100) dan batas gaji (1≤M≤2.000.000) dan di bawahnya adalah usia satu orang per baris (1≤ K≤100) dan gaji (1≤F≤2.000.000).

Keluaran

Dalam satu baris output standar, harus dituliskan mereka yang berusia di atas L dengan gaji kurang dari M jumlah pekerja.

#include <iostream>
using namespace std;
int main()
{
    int N;
    int K;
    int L;
    int F;
    int M;
    cin >> N >> K >> L >> F >> M;
    int arr[N];
    for (int i=0; i<N; ++i)
    {
        cin >> arr[i];
    }
    int DB=0;
    for (int i=0; i<N; ++i)
 {
                 for (int DB; K>L && F<M; DB=DB+1)
                    {


                    }
    }
    cout << DB << endl;
    return 0;
}

Saya mencoba menyelesaikan masalah menggunakan for-loop. Jelas sekali, ada kesalahan mendasar dalam kode tersebut. Bisakah Anda membantu saya memecahkan masalah tersebut? Apakah kode di atas merupakan metode yang baik atau adakah solusi yang lebih baik?

Terima kasih atas bantuannya sebelumnya.


person Beginner009    schedule 02.10.2020    source sumber
comment
Hai, selamat datang di Stack Overflow! Bisakah Anda memperjelas masukan tersebut, atau memberikan contoh masukan?   -  person lawruble13    schedule 02.10.2020
comment
Jika Anda tidak tahu bagaimana melanjutkannya, ada baiknya Anda membagi masalah menjadi beberapa langkah. Misalnya, bisakah Anda menghitung jumlah elemen dalam sebuah array? Tidak, bukan jawaban sepele dari N. Maksud saya dengan pengaturan perulangan Anda. Hitung jumlah elemen dan tambahkan komentar \\ TO DO: I need to check a condition before counting this element..   -  person JaMiT    schedule 02.10.2020
comment
Pustaka standar C++ berisi algoritma count_if(), di header <algorithm> yang menghitung jumlah elemen dalam rentang yang memenuhi kondisi yang disediakan.   -  person Peter    schedule 02.10.2020


Jawaban (2)


Itu tentu saja merupakan cara kreatif untuk mengatasi masalah ini! Cara yang lebih mudah untuk melakukan pendekatan ini adalah dengan memeriksa setiap elemen, dan memeriksa apakah cocok, sebagai berikut:

#include <iostream>
using namespace std;
int main(){
  int numWorkers, ageLimit, salaryLimit, matchCount=0;
  cin >> numWorkers >> ageLimit >> salaryLimit;
  for (int i = 0; i < numWorkers; i++){
    int age, salary;
    cin >> age >> salary;
    if (age > ageLimit && salary < salaryLimit){
      matchCount++;
    }
  }
  cout << matchCount << endl;
  return 0;
}
person lawruble13    schedule 02.10.2020

Berikut cara melakukannya, ingat ini hanyalah contoh berdasarkan komentar di postingan Anda.

#include <iostream>
#include <vector>
#include <algorithm>

// you need a way to capture the information of age and salary

class Employee
{
public:
  Employee(int age, int salary) : m_age(age), m_salary(salary) 
  {}
  int Salary() const { return m_salary; }
  int Age() const { return m_age; }
private:
  int m_age{0};
  int m_salary{0}; 
};


int main()
{
  // an array of the employees with age and salary, avoid using native arrays
  std::vector<Employee> employees{{21,10000},{22,12000},
                                  {54,54500},{62,60000}, 
                                  {32,32000}};
  // some salary limit or use cin to read in it
  auto salaryLimit = 33000;

  // use count_if to count the number of employees under salary limit
  auto nrOfEmployees = std::count_if(employees.begin(), employees.end(), 
                       [=](const Employee& e){return e.Salary() < salaryLimit;});
  std::cout << nrOfEmployees << std::endl;

  return 0;
}

Jika Anda ingin mencoba kodenya

https://onlinegdb.com/Sy-qCXN8v

person AndersK    schedule 02.10.2020