Informatică, întrebare adresată de infomatrix, 8 ani în urmă

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

Răspuns de AfloareiAndrei
0

#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);

}


infomatrix: Fără vector suplimentar era cerința
AfloareiAndrei: eu am folosit array nu vector
Alte întrebări interesante