Salve, potreste dirmi cosa c'è di sbagliato in questo codice? quando lo eseguo mi viene stampato solo il return delle prime due funzioni, ma non la matrice di creaMatrice. Grazie in anticipo
#include<iostream>
#include <vector>
using namespace std;
/*1. sommaMultipli che riceve una matrice di interi A ed un intero k, e
restituisce un vettore V il cui i-esimo elemento contiene la somma degli
elementi multipli di k presenti sulla i-esima colonna di A.*/
vector<int> sommaMultipli (int** A, int k, int r, int c)
{
vector<int>v(c);
for (int i=0; i<c; i++)
v[i] = 0;
for (int i=0; i<c; i++)
{
int somma = 0;
for (int j=0; j<r; j++)
if (A[j][i] % k == 0)
{
somma += A[j][i];
v[i] = somma;
}
}
return v;
}
/* 2. verificaMedia che riceve una matrice di interi A avente n righe (con n
pari) e restituisce true se e solo se nessun elemento nelle prime n/2 righe di
A ha un valore maggiore della media degli elementi presenti nelle ultime n/2
righe di A.*/
bool verificaMedia (int** A, int n, int c)
{
int somma = 0;
for (int i=(n-1)/2; i<n; i++)
{
for(int j=0; j<c; j++)
somma += A[i][j];
}
double media = somma/(n/2 * c);
for(int i=0; i<n; i++)
for(int j=0; j<c; j++)
if (A[i][j] > media)
return false;
return true;
}
/*3. creaMatrice che riceve una matrice di interi A e restituisce una matrice M
delle stesse dimensioni di A. La iesima riga di M sarà uguale alla i-esima riga
di A se i è pari, mentre sarà uguale all’inverso della i-esima riga di A se i è
dispari.*/
int** creaMatrice (int** A, int r, int c)
{
int** M = new int*[r];
for (int i=0; i<r; i++)
M[r] = new int[c];
for (int i=0; i<r; i++)
{ for (int j=0; j<c; j++)
{
if (i % 2 == 0)
M[i][j] = A[i][j];
else
M[i][j] = A[r-i-1][j];
}
}
return M;
}
/*4. main nel quale si legge una matrice di interi, e si invocano opportunamente
le funzioni definite ai punti 1, 2 e 3.*/
int main()
{
int** A = new int*[4];
for (int i=0; i<4; i++)
A[i] = new int[5];
int y [4][5] = {
{1, 0, 3, 18, 1},
{1, 3, 0, 0, 3},
{0, 1, 6, 2, 12},
{9, 2, 4, 0, 1}
};
for (int i=0; i<4; i++)
for(int j=0; j<5; j++)
A[i][j] = y[i][j];
vector<int>v = {sommaMultipli (A, 3, 4, 5)};
cout << "v = [";
for (int i=0; i<5; i++)
cout << v[i] << " ";
cout << "] " << endl;
cout << verificaMedia (A, 4, 5) << endl;
int** M = new int*[4];
for(int i=0; i<4; i++)
M[i] = new int[5];
M = {creaMatrice (A, 4, 5)};
cout << "M = [ ";
for(int i=0; i<4; i++)
{
for (int j=0; j<5; j++)
cout << M[i][j] << " ";
cout << endl;
}
cout << "]";
return 0;
}