online: 6; azi: 770; total: 52776 Manual clasa a ix a - Implementarea structurilor de date - Structuri de date

Probleme Rezolvate



Manual clasa a IX a

Implementarea structurilor de date

Structuri de date

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 :
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 ;
}