Zliczanie elementów o podanej wartości w wektorze

0

Siemka, mam takie zadanie i nie za bardzo wiem jak do niego podejść, brzmi ono następująco:
"Napisz uniwersalną funkcję działającą dla wektora w argumencie. Przekaż dodatkową liczbę
w argumencie. Funkcja ma za zadania zwrócić liczbę wystąpień zadanej liczby znalezionych w
wektorze. Analogicznie, jeśli liczba nie wystąpi w wektorze funkcja ma zwrócić zero."
napisałem takie kod, jednak raz że nie działa on poprawnie, dwa nie wiem czy moja interpretacja zadania jest poprawna. Prosiłbym o pomoc, nakreślenie błędu w kodzie czy też pomoc z interpretacji tego problemu. Z góry dziękuje za pomoc :)

#include <iostream>
#include<vector>
using namespace std;
int found(vector<int>Vector, int search_number, int sizer){
    for(size_t i=0; i<sizer; i++){
        if(Vector[i]==search_number) search_number++;
    }
    return search_number;

}

int main()
{
    int number, liczba;
    vector<int>MainVector;
    cout<<"Podaj liczbe ktora mam wyszukac w wektorze: ";
    cin>>number;
    for(int i=0;i<10; i++){
        MainVector.push_back(i);
    }
    liczba=found(MainVector, number,MainVector.size());
    cout<<liczba;
    return 0;
}
1
if(Vector[i]==search_number) search_number++;

Jeśli znajdę liczbę o szukanej wartości, zmień wartość, której szukam?

1

Niemalże dobrze zrobiłeś.

Twój błąd polega na tym, że niepotrzebnie zwiększasz search_number co powoduje, że przy kolejnym przejściu pętli nie poszukujesz search_number, ale search_number + 1. Aby to poprawić wystarczy wewnątrz funkcji zdefiniować sobie tymczasowego inta = 0, i to jego inkrementować za każdym razem jak w wektorze znajdziesz search, a na zakończenie zwrócić go.

Inne drobne błąd to przekazywanie wectora przez wartość nie referencję, oraz wielkości wektora którą przecież możesz sobie wewnątrz funkcji odczytać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1