[C++] Odwrotna kolejność liter w tablicy


(Pinkfetish) #1
#include

using namespace std;

int main()

{

    int n=7;

    char bum[15] = {'A' , 'B' , 'D' , 'G' ,'K' , 'W'};

    cout<
    int buf;

    for (n=0; n<6; n++)

    {

       bum[4-n]=buf;

       buf=bum[6+n];


}





    system ("pause");

    return 0;

}

Witam. Muszę zamienić kolejność liter w tej tablicy na odwrotną, aby powstało WKGDBA. Mój tok myślenia polegał na tym, że przedostatnią literę przechowuje w jakiejś zmiennej, a potem ją 'przesuwam' za ostatnią literę, ale to nie działa. Mógłby ktoś pomóc?


(Drobok) #2

Zamieniasz element n z elementem rozmiar-n, a ilość przebiegów ma być rozmiar/2


(Pinkfetish) #3
bum[n]=buf;

       buf=bum[6-n];

Tak to zrozumiałem, ale nie działa. Dopiero rozpoczynam przygodę z programowaniem i jeszcze nie łapie wszystkiego do końca. To length to się domyślam długość ciągu. Mógłbyś jeszcze prościej to wyjaśnić?


(system) #4

length sprawdza długość ciągu w zmiennej string, w przypadku char używa się strlen(ch)


(Krzychu91prog) #5
char Bufor;

unsigned uPair = strlen(bum) / 2; // Ile mamy par do zamiany, bo środkowy element będzie tam gdzie jest

// Założenie jest takie że bum jest zakończone znakiem zerowym jak tradycyjny napis C

// Jeśli nie to zamiast strlen(bum) musisz podać ilość znaków w napisie

for (unsigned i = 0; i < uPair; ++i)

{

    Bufor = bum[i];

    bum[i] = bum[strlen(bum) - i - 1]; // odejmujemy jeden bo tablice sa numerowane od 0 do długość tablicy - 1

    bum[strlen(bum) - i - 1] = Bufor;

}