suricata
02-05-2011, 17:57
Salve ho davanti il seguente problema:
Si scriva in C++ una funzione ricorsiva che riceva due array di interi A e B e le loro dimensioni dimA e dimB
(sapendo che dimB = 2*dimA – 1) e riempia B con gli elementi di A di modo da ottenere un array palindromo secondo il
seguente schema: il primo elemento di A dovrà essere l’elemento centrale di B, i successivi riempiranno B dal centro verso i
lati simmetricamente.
ESEMPIO: sia A l’array
1 2 3
allora l’array B dovrà essere riempito come segue
3 2 1 2 3
IL PROBLEMA è che non so come riempire l'array b in tutte due le direzioni (avanti ed indietro), avevo pensato ad utilizare due indici per l'array b che partivano dal centro e uno andava avanti e l'altro indietro mentre si scorreva l'array a, ma non so come farlo , se qualcuno mi potesse dare una mano lo ringrazerei
# include <iostream>
using namespace std;
void ricorsione (int [],int [], int , int ,int );
void stampa (int b[]);
const int n=3;
const int k=5;
int main ()
{
int a[n]={1,2,3};
int b[k]={0};
ricorsione (a,b,0,2,2);
stampa (b);
return 0;
}
void ricorsione (int a[],int b[], int i, int l, int j)
{
if ( (i != n )
{
b[j]=a[i];
b[l]=a[i];
}
return ricorsione (a,b,i+1,l+1,j-1);
}
void stampa (int b[])
{
for (int i=0;i<n;i++)
{
cout<<b[i]<<' ';
cout<<endl;
}
}
Si scriva in C++ una funzione ricorsiva che riceva due array di interi A e B e le loro dimensioni dimA e dimB
(sapendo che dimB = 2*dimA – 1) e riempia B con gli elementi di A di modo da ottenere un array palindromo secondo il
seguente schema: il primo elemento di A dovrà essere l’elemento centrale di B, i successivi riempiranno B dal centro verso i
lati simmetricamente.
ESEMPIO: sia A l’array
1 2 3
allora l’array B dovrà essere riempito come segue
3 2 1 2 3
IL PROBLEMA è che non so come riempire l'array b in tutte due le direzioni (avanti ed indietro), avevo pensato ad utilizare due indici per l'array b che partivano dal centro e uno andava avanti e l'altro indietro mentre si scorreva l'array a, ma non so come farlo , se qualcuno mi potesse dare una mano lo ringrazerei
# include <iostream>
using namespace std;
void ricorsione (int [],int [], int , int ,int );
void stampa (int b[]);
const int n=3;
const int k=5;
int main ()
{
int a[n]={1,2,3};
int b[k]={0};
ricorsione (a,b,0,2,2);
stampa (b);
return 0;
}
void ricorsione (int a[],int b[], int i, int l, int j)
{
if ( (i != n )
{
b[j]=a[i];
b[l]=a[i];
}
return ricorsione (a,b,i+1,l+1,j-1);
}
void stampa (int b[])
{
for (int i=0;i<n;i++)
{
cout<<b[i]<<' ';
cout<<endl;
}
}