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

Dominanta C++

Object Storage Arubacloud
0 głosów
469 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 389 wizyt
pytanie zadane 21 października 2015 w C i C++ przez pclolowicz Użytkownik (500 p.)

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 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!

...