VA ROG MULT!!
De la tastatura se citesc cele n elemente ale unui sir de numere. Sa se scrie un program care interschimba doua secvente de lungimi l1 si l2 care incep din pozitiile p1,respectiv p2. Elementele care nu sunt cuprinse intre cele doua pot fi mutate astfel incat interschimbarea sa se poata face. NU se vor folosi vectori auxiliari.
Exemplu: pentru n=9, sirul 1,2,3,4,5,6,7,8,9, p1=2, l1=2, p2=6, l2=3, rezultatul este 1,6,7,8,4,5,2,3,9
Răspunsuri la întrebare
#include <iostream>
using namespace std;
void interschimba(int sir[], int n, int p1, int l1, int p2, int l2)
{
int rezultat[n] = {};
int index=1;
for(int i=1; i<n; i++)
{
if(i == p1)
{
i = p2;
rezultat[index++] = sir[i];
}
else if(i == p2 + l2)
{
i = p1 + l1;
rezultat[index++] = sir[i];
}
else if(i == p2)
{
i = p1;
rezultat[index++] = sir[i];
}
else if(i == p1 + l1)
{
i = p2 + l2;
rezultat[index++] = sir[i];
}
else
{
rezultat[index++] = sir[i];
}
}
for(int i=1; i<index; i++)
{
cout << rezultat[i];
}
cout << endl;
}
int main()
{
int n, p1, p2, l1, l2;
cout << "n: ";
cin >> n;
int sir[n];
for(int i=1; i<=n; i++)
{
cout << "element: ";
cin >> sir[i];
}
cout << "pozitie1: ";
cin >> p1;
cout << "lungime1: ";
cin >> l1;
cout << "pozitie2: ";
cin >> p2;
cout << "lungime2: ";
cin >> l2;
interschimba(sir, n+1, p1, l1, p2, l2);
return(0);
}