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

Dominanta C++

VPS Starter Arubacloud
0 głosów
457 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,540 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 375 wizyt
pytanie zadane 21 października 2015 w C i C++ przez pclolowicz Użytkownik (500 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...