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

Dominanta C++

0 głosów
97 wizyt
pytanie zadane 20 listopada 2021 w C i C++ przez ajb7 Nowicjusz (120 p.)
Witam, mam do zrobienia zadanie z C++, które z tablicy usuwa liczby, które są dominantą, a następnie tworzy kolejną tablicę już bez tych liczb i z niej wyznacza dominantę. Działanie ma się powtarzać do wyzerowania tablicy.

Mój problem tkwi głównie w usuwaniu elementów tablicy i tworzeniu nowej tablicy, już bez tych elementów.

Ma ktoś może jakąś radę? Jakieś źródło, z którego mógłbym się dowiedzieć więcej na ten temat?

Za wszelką pomoc z góry dziękuje.
komentarz 20 listopada 2021 przez Michał Kazula Pasjonat (19,300 p.)
Poszukaj coś o iteracji i rekurencji.

Co do usuwania elementów z tablicy to z tego co pamiętam w C++ nie ma czegoś takiego. Trzeba przesuwać elementy tablicy. Jest jeszcze funkcja standardowa remove_if. Poczytaj o tym
komentarz 25 listopada 2021 przez Sadako Obywatel (1,240 p.)

@ajb7, 

Mam 2 propozycje dla Ciebie.

1) Jeśli nie musi być to koniecznie nowa tablica za każdym razem (tylko na przykłąd musisz wypisywać bez dominant), to zamiast usuwania możesz zamieniać element do usunięcia z ostatnim i zmniejszać pamiętany size o 1. Tablica nadal bedzie zarezerwowana na początkową ilość elementów, ale "udajemy", że usuwamy. Jeśli  więc wypisujesz elementy od zerowego do size to bedzie wypisywać dobrze :) Taka przydatna technika.
Jeśli natomiast faktycznie musi być to nowa tablica, to po pseudo usunięciu wszystkich dominant, możesz zarezerwować nową tablicę o rozmiarze tym nowym size i przepisać elementy.

2) Jeśli nie musi być to surowa tablica, możesz użyć std::vector. Z vector'a da się usuwać elementy za pomoca funkcji std::erase. Tutaj też taka rada, że erase wymaga iteratora więc się często używa wspomnianego już w tym wątku remove_if. Jesli  jednak używasz indeksów to przyda Ci się funkcje std::advance.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 159 wizyt
pytanie zadane 21 października 2015 w C i C++ przez pclolowicz Użytkownik (500 p.)

86,448 zapytań

135,207 odpowiedzi

300,348 komentarzy

57,196 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.

...