• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Prośba o pomoc ze zwróceniem wyniku

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
97 wizyt
pytanie zadane 8 maja 2020 w C i C++ przez Anahan89 Obywatel (1,270 p.)

Hej,

chciałbym zwrócić vector wynik ale ciągle wyświetla mi 0,0. Wydaje mi się że sam algorytm funkcji jest okej. Gdzie mogłem popełnić błąd?

vector<int> breakingRecords(vector<int> scores) {
int pmax=0;
int pmin=0;
vector <int>wynik={pmax,pmin};

for(int i=0;i<scores.size();i++)
{
if (scores[i+1]>scores[i]) pmax++;
else if (scores[i+1]<scores[i]) pmin++;
}
return wynik; 
}

 

komentarz 8 maja 2020 przez adrian17 Ekspert (334,600 p.)
Stworzyłeś vector z 0,0 i nigdzie go nie modyfikujesz, więc nic dziwnego że wychodzi 0,0 ;)
komentarz 8 maja 2020 przez Anahan89 Obywatel (1,270 p.)
Chciałbym żeby po zakonczonej pętli zwrócił inkrementowane wartosci pmax i pmin
komentarz 8 maja 2020 przez adrian17 Ekspert (334,600 p.)
I się inkrementują. Ale nie inkrementujesz liczb w vectorze ;) To je powinieneś modyfikować.
komentarz 8 maja 2020 przez Anahan89 Obywatel (1,270 p.)
Podpowiesz? Chyba już dziś nic nie wymyślę. Nie umiem jakoś rozwiązać tego problemu.
komentarz 8 maja 2020 przez tkz Nałogowiec (42,000 p.)
#include <iostream>
#include <utility>
#include <vector>

using namespace std;
pair<int, int> breakingRecords(vector<int> scores) 
{
    int pmax=0;
    int pmin=0;
    auto wynik = make_pair(pmax, pmin);
    for(int i=0;i<scores.size();i++)
    {
        if (scores[i+1]>scores[i]) 
            wynik.first++;
        else if (scores[i+1]<scores[i]) 
            wynik.second++;
    }
    return wynik; 
}

int main()
{
    vector<int> temp{1,2,423,5,346,54,637,3567,5,2345,234,523,47,563,2,34,35,47,876,45,234,524,76,36234,56,2345,234,5234};
    auto [pmax,pmin] = breakingRecords(temp);
    cout<<pmax<<' '<<pmin;
}

I tak inkrementujesz dwie zmienne, więc nie wiem dlaczego wybrałeś vectora'a. 

1 odpowiedź

0 głosów
odpowiedź 8 maja 2020 przez adrian17 Ekspert (334,600 p.)

Wypełnij vector już po wypełnieniu zmiennych poprawnymi wartościami? :)

vector<int> breakingRecords(vector<int> scores) {
  int pmax=0;
  int pmin=0;
  for(int i=0;i<scores.size();i++)
  {
    if (scores[i+1]>scores[i]) pmax++;
    else if (scores[i+1]<scores[i]) pmin++;
  }
  return {pmax, pmin}; 
}

 

Podobne pytania

0 głosów
4 odpowiedzi 578 wizyt
0 głosów
1 odpowiedź 284 wizyt
pytanie zadane 15 grudnia 2016 w C i C++ przez niezalogowany
0 głosów
2 odpowiedzi 174 wizyt
pytanie zadane 24 listopada 2019 w Rozwój zawodowy, nauka, szkoła, praca przez wupics Nowicjusz (120 p.)

91,787 zapytań

140,452 odpowiedzi

316,848 komentarzy

61,134 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...