Se consideră un vector a cu elemente numere întregi, cu lungimea n, n fiind un număr par. Lungimea vectorului, un număr natural K (1<=k<=n-2) şi elementele sale a[0], a[1], a[2], …, a[n-1] se citesc de la tastatură. Să se rearanjeze elementele vectorului şi să se afişeze astfel: 10
a) a[n-1], a[0], a[1], a[2], …, a[n-2];
b) a[1], a[2], a[3], …, a[n-1], a[0];
c) a[1], a[0], a[3], a[2], …, a[n-1], a[n-2];
d) a[n-2], a[n-1], a[n-4], a[n-3], …, a[2], a[3], a[0], a[1];
e) a[k], a[k+1], a[k+2], …, a[n-2], a[n-1], a[0], a[1], …, a[k-2], a[k-1].
Pentru punctul a:
a) Pentru a rearanja vectorul a după regula dată, putem folosi o variabilă auxiliară temp pentru a stoca temporar ultimul element al vectorului, apoi putem muta fiecare element cu o poziție spre dreapta, iar la final putem plasa elementul temp pe prima poziție a vectorului.
#include <iostream>
using namespace std;
int main() {
int n, temp;
cout << „Introduceti lungimea vectorului (n, par): „;
cin >> n;
int a[n];
cout << „Introduceti elementele vectorului: „;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
// transpunem vectorul
for (int i = 0; i < n/2; i++) {
for (int j = i; j < n/2; j++) {
temp = a[i*n/2+j];
a[i*n/2+j] = a[j*n/2+i];
a[j*n/2+i] = temp;
}
}
// oglindim vectorul
for (int i = 0; i < n/2; i++) {
temp = a[i];
a[i] = a[n-i-1];
a[n-i-1] = temp;
}
// afisam vectorul obtinut
cout << „Vectorul obtinut este: „;
for (int i = 0; i < n; i++) {
cout << a[i] << ” „;
}
cout << endl;
return 0;
}
Pentru punctul b:
b) Pentru a rearanja vectorul a după regula dată, putem folosi o variabilă auxiliară temp pentru a stoca temporar primul element al vectorului, apoi putem muta fiecare element cu o poziție spre stânga, iar la final putem plasa elementul temp pe ultima poziție a vectorului.
int temp = a[0];
for(int i = 0; i < n-1; i++){
a[i] = a[i+1];
}
a[n-1] = temp;
Pentru punctul c:
c) Pentru a rearanja vectorul a după regula dată, putem folosi o variabilă auxiliară temp pentru a stoca temporar al doilea element și al patrulea element al vectorului, apoi putem muta fiecare element cu o poziție spre dreapta, iar la final putem plasa elementele temp pe pozițiile corespunzătoare din vectorul a.
int temp1 = a[1], temp2 = a[3];
for(int i = 3; i < n-2; i+=2){
a[i] = a[i+2];
}
a[n-2] = temp2;
for(int i = n-4; i > 0; i-=2){
a[i] = a[i-2];
}
a[0] = temp1;
Pentru punctul d:
d) Pentru a rearanja vectorul a după regula dată, putem folosi două variabile auxiliare start și end pentru a stoca începutul și sfârșitul secvențelor de elemente din vectorul a, apoi putem muta fiecare element într-un vector auxiliar în ordinea dată, după care vom copia elementele din vectorul auxiliar înapoi în vectorul a.
#include <iostream>
using namespace std;
int main() {
int n, k;
cout << „Introduceti lungimea vectorului (n): „;
cin >> n;
cout << „Introduceti valoarea lui k (1 <= k <= n – 2): „;
cin >> k;
int a[n];
cout << „Introduceti elementele vectorului:\n”;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
// Rearanjarea elementelor vectorului
for (int i = 0; i < n/2; i += 2) {
int temp = a[i];
a[i] = a[n-2-i];
a[n-2-i] = temp;
temp = a[i+1];
a[i+1] = a[n-1-i];
a[n-1-i] = temp;
}
// Afisarea vectorului rearanjat
cout << „Vectorul rearanjat dupa regulile date este:\n”;
for (int i = 0; i < n; i++) {
cout << a[i] << ” „;
}
return 0;
}