Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[C++] Modyfikacja tablic -- a funkcje


Rekomendowane odpowiedzi

Opublikowano

Witam . Mam pytanie:

 

Powiedzmy w funkcji int main stworzyłem zmienna: int tablica [3] i przekazałem ja do funkcji ABC poprzez argument tablica_funkcja[] . Teraz gdy w funkcji ABC usunę z tablicy tablica_funkcja 2 elementy to czy też usuną się 2 elementy z zmiennej tablica[] ???

Kocham mpcforum.pl!!!

18706.png

Opublikowano

Nie wiem, jak zamierzasz usunąć z tablicy dwa elementy, skoro tablica jest stałych wymiarów (nie mówie o vector).

Jeśli chcesz przekazać tablicę do funkcji, to najczęściej jako drugi argument dodajesz liczbę elementów tej tablicy.

 

Zachęcam do przeczytania tej części kursu o przekazywaniu tablic do funkcji.

 

http://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Przekazywanie-tablic-jednowymiarowych-do-funkcji/324


Pomagam w projektach dotyczących programowania (C++/C/Java/C#/inne). Jak masz jakiś problem, napisz do mnie, wspólnie poszukamy rozwiązania ;).

Opublikowano

No to powiedzmy że będzie to vector ( jak sie nie myle była to tablica dynamiczna) no to wtedy jak bede usuwał z niej elementy to tylko w funkcji czy globalnie???

bo chce stworzyć maszynke losującą i nie wiem zabardzo jak napisac funkcje która bedzie sprawdzała czy liczba została juz wylosowana, to kombinuje żeby usuwała ten element z tablicy , wtedy nie bedzie trzeba sprawdzać czy liczba się potwórzyła bo nie mogła ;p

Kocham mpcforum.pl!!!

18706.png

Opublikowano

Powiedzmy że losujesz liczby do tablicy przy pomocy pętli for, aby sprawdzać za każdym razem powinno wystarczyć:

cin >> tab; // Zapisana wartość

 

if(!cin.good()) // Sprawdzasz czy podano liczbe

{

// Nie działa co robisz ?

}

 

A elementy z vektora usuwasz funkcją erase bodajże.

 

 

@ Sorry za moją nieprzemyslana odpowiedź ale wczoraj miałem 18 troche wypiłem i do dzisiaj się utrzymało ;d

ywug.jpg



Smacznego

Opublikowano

To zależy jak przekażesz ten vector. Jeśli przekażesz przez wskaźnik bądź przez referencje (*,& - tak w ramach przypomnienia), funkcja modyfikuje obiekt, który jest przekazany. Jeśli jednak będzie to przez wartość (bez powyższych oznaczeń), funkcja będzie operowała na kopii tego obiektu i nie będzie miała wpływu na przekazany parametr (obiekt). Warto sobie przypomnieć, czym jest referencja.

 

 


Powiedzmy że losujesz liczby do tablicy przy pomocy pętli for, aby sprawdzać za każdym razem powinno wystarczyć:

cin >> tab; // Zapisana wartość

 

if(!cin.good()) // Sprawdzasz czy podano liczbe

{

// Nie działa co robisz ?

}

 

A elementy z vektora usuwasz funkcją erase bodajże.

 

Pokazałeś nie losowanie, ale przekazanie wartości z bufora konsoli do zmiennej, nie czaje, jaki to ma związek.

 

Co do samego losowania bez powtórzeń: po prostu wylosuj liczbę, sprawdź z dotychczasowymi wynikami, a później jeśli wszystko się zgadza, dodaj na końcu.


Pomagam w projektach dotyczących programowania (C++/C/Java/C#/inne). Jak masz jakiś problem, napisz do mnie, wspólnie poszukamy rozwiązania ;).

Opublikowano

Do losowania bez powtórzeń użyj std::shuffle na wszystkich możliwych do wylosowania liczbach, a potem wybierz np 10 początkowych. Zależy też ile masz tych liczb i ile masz losować, ale jak piszesz że maszyna losująca to powinno to działać dobrze.

 

Co do tego, czy zmienna będzie modyfikować kopię, czy ten przekazany obiekt to już zależy od tego jak to zrobisz. Tak jak @up napisał, poczytaj o referencji i wskaźnikach.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...