Lista sasiedztwa

0

Czy moglby mi ktos pomoc poprawc ten kod? Wyrzuca mi ze nie ma takiej tablicy wektorow przy dodawaniu elementow

https://pastebin.com/RrHvP6Xb

0

push_back jest metodą std::vector, a Ty to wykonujesz na lista_sasiedztwa[pierwszy_wierzcholek] — czyli na elemencie tego wektora (u Ciebie int).

0

Czyi jak mam to poprawic? No bo moim zdaniem, a przynajmniej zamyslem, bylo utworzenie tablicy o okreslonym rozmiarze i doklejenie w kazdym "okienku" takiej dlugosci kolumne jakiej bede potrzebowal i wtedy w np mam do wsadzenia jakas liczbe, przechodze do "okienka " numer trzy i wkladam jakas liczbe.
[NULL] <--- lista_sasiedztwa[ 0 ].push_back(liczba)
[NULL]
[NULL]
[NULL]
/
|
[ilosc wierzcholkow]

0

Chcesz więc mieć wektor wektorów. Na razie masz wektor intów. Pisze się to tak: std::vector<std::vector<int>>.

0

Ale wektor wektorow mi nie potrzebny bo jeden rozmiar dostaje na sztywno z pliku.
No i wtedy bldem chyba nie bylby zasieg zmiennej.

1

Jest Ci potrzebny, bo nie jest to wartość znana w trakcie kompilacji — a tak musi być w przypadku tablic w C++¹. Jak już to rozwiążesz, to będziesz mógł zająć się tą drugą częścią — zakresem zmiennej. Ty deklarujesz lista_sasiedztwa w linijce 51., w obrębie ifa (swoją drogą, masz paskudne wcięcia, musiałem reformatować kod, by się tego doczytać…), więc jest widziana tylko w obrębie tego ifa. Rozwiązaniem jest deklaracja odpowiedniego wektora wektorów gdzieś wysoko, po czym inicjalizacja go na odpowiedni (wczytany) rozmiar.

¹ Chociaż kompilatory często dopuszczają VLA, to nie jest to część standardu tego języka (natomiast jest w C11) i korzystanie z tego to proszenie się o problemy.

0

Poprawile tak.. https://pastebin.com/AtfkshLY
Jednak nadal jest blednie. Dlaczego resize jest nie skuteczne? Nadal odczytuje mi taki rozmiar jaki jest podany wstepnie.
Nie moge sobie poradzic z tym zadaniem totalnie...
Moglbys mi pokazac jak zrobiles te wciecia? 3 razy je poprawialem, a jak widac nadal nie sa sensowne.

0

Troche poprawilem:
https://pastebin.com/jkckLC26

Problem teraz lezy tu :
https://pastebin.com/fg62GbLJ

Edit:
Teraz chyba jest ok:
https://pastebin.com/fKiQjchG

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