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

Program dokonujący zamiany elementów w tablicy parami (pierwszy z ostatnim itd.)

Object Storage Arubacloud
0 głosów
1,106 wizyt
pytanie zadane 6 października 2019 w C i C++ przez ShikamaruBrain Nowicjusz (130 p.)
Nie mam pojęcia jak to zrobić, jeśli ktoś miałby chwilę, żeby napisać i ewentualnie wytłumaczyć taki kod, byłbym bardzo wdzięczny :(
komentarz 6 października 2019 przez tkz Nałogowiec (42,000 p.)
Mając tablice bierzesz pierwszy i ostatni indeks. Następnie możesz wykorzystać funkcję swap do zamiany ich miejscami.

2 odpowiedzi

0 głosów
odpowiedź 6 października 2019 przez Inn Gaduła (4,300 p.)

Używamy metody reverse() - Odwraca kolejność elementów w zakresie [first, last).

#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
    int tab [10] = {1,2,3,4,5,6,7,8,9,10};

    reverse(tab, tab+10);

    for(int i = 0; i < 10; i++)
    {
        cout << tab[i] << " ";
    }

    return 0;
}

Więcej możesz poczytać tutaj:

http://cpp0x.pl/dokumentacja/standard-C++/reverse/331
https://www.techiedelight.com/reverse-an-array-cpp/

0 głosów
odpowiedź 6 października 2019 przez DawidK Nałogowiec (37,910 p.)

Rozwiązanie Inn jest lepsze, ale możesz również zrobić coś takiego (na przykładzie JS - w innych językach będzie podobnie):

const array = ['pierwszy','drugi','trzeci','czwarty','piąty'];

console.log('Array : ' + array);

for(i=0;i<array.length/2;i++) {
    let temp = array[i];
    array[i] = array[(array.length-1) - i];
    array[(array.length-1) - i] = temp;
}

console.log('Reversed array : ' + array);

Iterujesz (przechodzisz) przez połowę tablicy:

1) array.length/2 zadziała zarówno dla parzystej i nieparzystej ilości elementów w tablicy, ponieważ środkowego i tak nie podmieniasz.

2) iteracja po całej tablicy sprawiłaby, że zamienisz kolejność 2 razy i w efekcie dostaniesz to co na początku

Tworzysz sobie zmienną na 'tymczasowe' przechowywanie jednej z podmienianych wartości

1) gdybyś tego nie zrobił skopiowałbyś wartość tzn:

a=b ('a' podmienił na 'b')

b=a (później 'b' na 'a', które zostało już zamienione na 'b' w poprzednim kroku)

w efekcie dostałbyś 'b' 'b'   

Wartości które zamieniasz to:

pierwszy element [i]      //     (dla i=0 jest zero)

drugi element [(array.length - 1) - i]     // (dla i=0 jest to ostatni element od długości tablicy odejmujesz 1 bo indexy są liczone od zera)

Po iteracji pętli:

pierwszy element do zamiany jest pierwszym elementem tablicy [0], później się drugim [1], trzecim[2] itd

drugi element do zamiany jest ostatnim elementem tablicy [n-1 -0] , później przedostatnim elementem [n-1-1], następnie przed przedostatnim [n-1-2] itd

 

ale jak pisałem pomysł z reverse() uważam za lepszy.

Podobne pytania

0 głosów
2 odpowiedzi 586 wizyt
+1 głos
4 odpowiedzi 1,759 wizyt
0 głosów
1 odpowiedź 360 wizyt
pytanie zadane 29 listopada 2017 w Java przez Grossman Nowicjusz (170 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!

...