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

Zwracanie tablicy z funkcji.

Object Storage Arubacloud
0 głosów
602 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,000 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,000 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ź 1,819 wizyt
pytanie zadane 26 listopada 2020 w C i C++ przez mik53r Nowicjusz (150 p.)
0 głosów
2 odpowiedzi 3,722 wizyt
pytanie zadane 17 listopada 2016 w C i C++ przez intensick Początkujący (420 p.)
0 głosów
3 odpowiedzi 576 wizyt
pytanie zadane 12 stycznia 2020 w C i C++ przez dominik195k Obywatel (1,030 p.)

92,615 zapytań

141,465 odpowiedzi

319,779 komentarzy

61,997 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...