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

Zwracanie tablicy z funkcji.

Aruba Cloud - Virtual Private Server VPS
0 głosów
955 wizyt
pytanie zadane 25 kwietnia 2020 w C i C++ przez Anahan89 Obywatel (1,320 p.)

Hej,

robię zadania z hackerrank.com i napotkałem problem którego nie mogę rozwiązać otóż mam napisaną funkcję (nie wiem czy zwróci poprawny wynik bo nie mam jak sprawdzić), i mam gdzieś błąd przy zwróceniu tablicy.

Oto kod:

vector<int> compareTriplets(vector<int> a, vector<int> b) {
int tab[2];

for(int i=0;i<3;i++)
{
if(a[i]==b[i]){}
else if(a[i]>b[i])
{
tab[0]=tab[0]+1;
}
else
tab[1]=tab[1]+1;
}
return tab[2]; //TUTAJ COŚ SIĘ ZŁEGO DZIEJE :)
}

Czy ktoś może mi wytłumaczyć jak mogę zwrócić tab[2[ ?

Pozdrawiam!

komentarz 25 kwietnia 2020 przez DragonCoder Nałogowiec (36,500 p.)
what the ... Przeicze to jest kombinowanie jak nie wiem co :D skoro uzywazs vektorow i chcesz zwrocic tablice, to jest msaochizm i pewnie lamanie jakis dobrych zasad w jednym
komentarz 25 kwietnia 2020 przez tkz Nałogowiec (42,020 p.)
Domyślam się, że szablon funkcji jest narzucony z góry, a autor chce użyć tablicy w stylu C. O ile wie, że jest to złe rozwiązanie pod względem zasad, to chyba nic nie stoi na przeszkodzie, by tego użył.
komentarz 25 kwietnia 2020 przez Anahan89 Obywatel (1,320 p.)

Działa- czy jeżeli poczytam o tych vectorach to ten twój zapis:

std::vector<int>(tab, tab + sizeof tab / sizeof tab[0])

stanie się jasny czy to bardziej zaawansowana wiedza? Zastanawiam się czy nie za szybko podszedłem do tematu hacerrank. Z poprzednimi zadaniami nie miałem aż takiego problemu, wybieram skalę trudności easy :)

komentarz 25 kwietnia 2020 przez Anahan89 Obywatel (1,320 p.)

@DragonCoder

Tutaj jest treść zadania https://www.hackerrank.com/challenges/compare-the-triplets/problem

Podaną mam treść i cały program bez funkcji którą tutaj wkleiłem- taki szablon do uzupełnienia. Problem taki że własnie nie wiem co to są te vectory i może w tym tkwi problem że nie umiem zwrócić.

W poprzednich zadaniach które rozwiązałem samodzielnie występowały w tych szablonach vectory ale nie miały wpływu na to ciało funkcji które pisałem aby rozwiązać zadanie- może też dlatego że  funkcje to były voidy.

1
komentarz 25 kwietnia 2020 przez tkz Nałogowiec (42,020 p.)

Nie ma chyba czegoś takiego jak zaawansowana wiedza, jest po brak zrozumienia. 

https://en.cppreference.com/w/cpp/container/vector/vector 5. punkt z tego korzystam. 

https://en.cppreference.com/w/cpp/language/sizeof

Tak pokrótce, to biorę wskaźnik do pierwszego elementu tablicy tab, oraz do ostatniego tab + sizeof tab / sizeof tab[0], a vector sobie już to skopiuje. 

tab + sizeof(tab) / sizeof(tab[0]) ten zapis oznacza wskaźnik na pierwszy element + rozmiar całej tablicy podzielić przez rozmiar rozmiar pojedynczego elementu. Co dla int'a(zależnie od platformy) da 2, lub 4 bajty.

1 odpowiedź

0 głosów
odpowiedź 25 kwietnia 2020 przez RafalS VIP (122,820 p.)
int tab[2];
...
return tab[2]

Wychodzisz poza rozmiar tablicy. tab ma 2 elementy o indeksach 0 i 1, próbujesz odwołać się do trzeciego.

 

komentarz 25 kwietnia 2020 przez Anahan89 Obywatel (1,320 p.)
Chodziło mi o zwrócenie całej tablicy dwuelementowej tab[2], jak to zrobić,?
komentarz 27 kwietnia 2020 przez RafalS VIP (122,820 p.)
no to tylko std::vector

Podobne pytania

0 głosów
1 odpowiedź 2,643 wizyt
pytanie zadane 26 listopada 2020 w C i C++ przez mik53r Nowicjusz (150 p.)
0 głosów
2 odpowiedzi 3,997 wizyt
pytanie zadane 17 listopada 2016 w C i C++ przez intensick Początkujący (420 p.)
0 głosów
3 odpowiedzi 749 wizyt
pytanie zadane 12 stycznia 2020 w C i C++ przez dominik195k Obywatel (1,030 p.)

93,329 zapytań

142,323 odpowiedzi

322,400 komentarzy

62,662 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...