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

question-closed Cykliczne przesuwanie elementów tablicy

0 głosów
2,287 wizyt
pytanie zadane 28 lutego 2017 w C i C++ przez Kasztan Dyskutant (8,080 p.)
zamknięte 28 lutego 2017 przez Kasztan
Witam, mógłby mi ktoś dać wskazówki jak napisać algorytm przesuwania elementów cyklicznie o zadaną ilość w lewo i w prawo ? Chciałbym aby przesunięcie wykonywało się bez pomocy dodatkowej tablicy, gdyż w taki sposób umiem to rozwiącać
komentarz zamknięcia: uzyskałem odp

2 odpowiedzi

0 głosów
odpowiedź 28 lutego 2017 przez Magicone Nałogowiec (45,480 p.)
wybrane 28 lutego 2017 przez Kasztan
 
Najlepsza

Nie wiem na ile poprawny, ale może spróbuj to załatwić swap'em:

pętla z ilością iteracji zależną od długości tablicy, każda iteracja ma inkrementowany licznik, dla pięcioelementowej tablicy wygląda to tak:

[0]: swap [0] z [1]

[1]: swap [1] z [2]

[2]: swap [2] z [3]

[3]: swap [3] z [4]

z przesuwaniem w prawo analogicznie, tylko, że od drugiej strony zaczynasz

komentarz 28 lutego 2017 przez Kasztan Dyskutant (8,080 p.)
No a jak będę chciał przesunąć o 2 pozycje w prawo lub w lewo ? :)
komentarz 28 lutego 2017 przez Magicone Nałogowiec (45,480 p.)
to owijasz to w pętlę z dwiema iteracjami :P
komentarz 28 lutego 2017 przez koczurekk Gaduła (3,420 p.)

std::swap(tab[n], tab[n + shift])? Tyle, że to nie jest przesunięcie cykliczne, wypadałoby jeszcze gdzieś tam dowalić %tab.size().

komentarz 28 lutego 2017 przez Kasztan Dyskutant (8,080 p.)
można zrobić zagnieżdzoną pętlę i pierwsza pętla będzie się wykonywać tyle razy o ile trzeba przestawić element. Spoko opcja ;)
komentarz 28 lutego 2017 przez koczurekk Gaduła (3,420 p.)
@up Mistypnąłeś „wolna i okropna” tak hardo, że wyszło Ci „spoko”. D:
komentarz 28 lutego 2017 przez Kasztan Dyskutant (8,080 p.)
??? to jakaś gwara ? Bo ja z Mazowsza na osiedlu się tak nie mówi :)
komentarz 28 lutego 2017 przez koczurekk Gaduła (3,420 p.)

Brakowało mi ładnego słówka po polsku, więc nie zważając na wszelkie zasady wplotłem w zdanie mistype.

komentarz 28 lutego 2017 przez Kasztan Dyskutant (8,080 p.)
No a wracając do tego algorytmu no to wolny ale robiąc z modulo i rozmiarem tablicy nie będzie mniej czytelny ?
komentarz 28 lutego 2017 przez Magicone Nałogowiec (45,480 p.)
jak opakujesz w sensowny wrapper to nie

a tak nawiasem, skoro masz metodę w libce standardowej, która do tego służy, to odpuść pisanie własnych polyfilli :D
+2 głosów
odpowiedź 28 lutego 2017 przez koczurekk Gaduła (3,420 p.)

std::rotate(tab, tab + shift, tab + size);

komentarz 28 lutego 2017 przez Kasztan Dyskutant (8,080 p.)
fajna metoda :)

Podobne pytania

0 głosów
1 odpowiedź 6,727 wizyt
pytanie zadane 4 grudnia 2016 w C i C++ przez Akiro Bywalec (2,910 p.)
0 głosów
2 odpowiedzi 1,262 wizyt
pytanie zadane 15 sierpnia 2016 w C i C++ przez Kasztan Dyskutant (8,080 p.)
0 głosów
1 odpowiedź 860 wizyt

89,082 zapytań

137,669 odpowiedzi

307,605 komentarzy

59,140 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...