Algorithms in C++ example_06

Can anyone explain a bit closer to meg what does the function roterVenstre()do, or actually how does it do it, I understand that it moves it back to what it was before the function bytt() change places, but I lose track of it. And I am not sure how to hold control on how to follow it. Please help, guide. Se the following:

#include <iostream>
using namespace std;


const int N = 6; // Arrayens lengde.

int arr[N]; // Global array av int'er.


void display(int a[]) { // Viser arrayens innhold.
cout << "\n";
for (int i = 0; i < N; i ++)
cout << a[i] << ' ';
}


void bytt(int & a1, int & a2) { // Bytter om to array-elementer.
int aa = a1;
a1 = a2;
a2 = aa;
}


void roterVenstre(int a[], int i) { // Roterer elementer mot venstre.
int x, k;
x = a[i]; // Tar vare p† f›rste.
for (k = i+1; k < N; k++) // Roterer:
a[k-1] = a[k];
a[N-1] = x; // Legger f›rst inn bakerst.
}


void perm(int i) {
int t;
if (i == N-1) // N†dd en ny permutasjon:
display(arr); // Skriver ut arrayens innhold.
else { // Skal permutere:
perm(i+1); // Beholder n†v‘rende nr.'i'.
// Permuterer resten.
for (t = i+1; t < N; t++) {
bytt(arr[i], arr[t]); // Bytter nr.'i' etter tur med alle
// de andre etterf›lgende.
perm(i+1); // For hver av ombyttene: permuterer
} // resten av de N etterf›lgende.
roterVenstre(arr, i); // Gjenoppretter opprinnelig array.
}
}


int main() {
for (int i = 0; i < N; i++) // Fyller array med: 1, 2, 3, ..., N
arr[i] = i+1;

perm(0); // Lager/skriver permutasjon av ALLE
// sifrene/arrayelementene.
cout << '\n';
display(arr); // Skriver array etter at ferdig (for
cout << "\n\n"; // † se om orginal er gjenopprettet).
return 0;
}
void roterVenstre(int a[], int i) { // Roterer elementer mot venstre.
int x, k;
x = a[i]; // Tar vare p† f›rste.
for (k = i+1; k < N; k++) // Roterer:
a[k-1] = a[k];
a[N-1] = x; // Legger f›rst inn bakerst.
}

you have an array of 1,2,3,4..
save 1 for a moment.
move 2 to 1 //this is the loop part
move 3 to 2
move 4 to 3
and use that 1 you saved, move 1 to 4
result: 2,3,4,1

this is sometimes known as a rotation, which is what I think the words mean.


Last edited on
Topic archived. No new replies allowed.