vuoi
o PayPal
tutte le volte che vuoi

Funzione caricamento matrice
Scriviamo una funzione void caricamento_matrice che permetta all'utente di inserire i valori della tabella in questione. Per fare inserire i valori desiderati dall'utente, saranno necessari due cicli for, il primo iterato sul numero di righe e il secondo iterato sul numero di colonne. Così facendo riusciremo a inserire tutti i valori desiderati. Scriviamo quindi:
void caricamento_matrice(int m[massimo][massimo], int nr, int nc)
{
for (int x=0; x<nr; x++)
{
for (int y=0; y<nc; y++)
{
cout<<"Inserisci l'elemento della riga numero "<<x<<" e colonna numero "<<y<<": ";
cin>>m[x][y];
}
}
}
Per approfondimenti sulle matrici in C++, vedi anche qua.
Funzione stampa matrice
Questa funzione è necessaria per poter stampare i valori contenuti nella matrice
void stampa_matrice(int m[massimo][massimo], int nr, int nc)
{
for (int x=0; x<nr; x++)
{
for (int y=0; y<nc; y++)
{
cout<<m[x][y]<<"\t";
}
cout<<endl;
}
}
Così facendo saremo in grado di stampare tutte le celle della tabella (o matrice).
Funzione per elevare la diagonale 2 al cubo
Bisogna prima di tutto trovare una proprietà comune a tutte le celle che si trovano sulla diagonale 2.
Occorre quindi che gli indici di riga e colonna di una certa casella sommino al numero di righe (e di colonne) meno 1. Infatti se avessimo
Se la somma delle coordinate vale
void cubo(int m[massimo][massimo], int nr, int nc)
{
for (int x=0; x<nr; x++)
{
for (int y=0; y<nc; y++)
{
if (x+y==nr-1)
{
m[x][y]=m[x][y]*m[x][y]*m[x][y];
}
}
}
}
Programma principale
Assembliamo il tutto, invocando le funzioni precedentemente create nell'ordine opportuno. Effettueremo le seguenti operazioni:
- Carichiamo la matrice di partenza, stampandola a fine operazione.
- Effettuiamo i calcoli opportuni elevando al cubo i valori della diagonale due.
- Stampiamo la matrice risultato.
int main()
{
int matrice[massimo][massimo];
int righe=dimensione();
int colonne=righe;
cout<<endl;
caricamento_matrice(matrice, righe, colonne);
cout<<endl<<"Matrice caricata: "<<endl;
stampa_matrice(matrice, righe, colonne);
cubo(matrice, righe, colonne);
cout<<endl<<"Risultato: "<<endl;
stampa_matrice(matrice, righe, colonne);
return 0;
}
Codice intero
Ora possiamo assemblare il tutto per ottenere il codice idoneo all'esecuzione del nostro programma, completo di funzioni e un main() che le esegua nell'opportuno ordine, come esplicitato prima.
// Elevare al cubo i valori della seconda diagonale (matrice)
#include <iostream>
using namespace std;
// ----- VARIABILI GLOBALI ----- //
const int massimo=100;
// ----- /VARIABILI GLOBALI ----- //
// ----- PROTOTIPI ----- //
int dimensione();
void caricamento_matrice(int [massimo][massimo], int, int);
void stampa_matrice(int [massimo][massimo], int, int);
void cubo(int [massimo][massimo], int, int);
// ----- /PROTOTIPI ----- //
// ----- FUNZIONI ----- //
int dimensione()
{
int n;
cout<<"Inserisci il numero di righe e colonne: ";
cin>>n;
while (n>massimo)
{
cout<<"Errore. Inserisci il numero di righe: ";
cin>>n;
}
return n;
}
void caricamento_matrice(int m[massimo][massimo], int nr, int nc)
{
for (int x=0; x<nr; x++)
{
for (int y=0; y<nc; y++)
{
cout<<"Inserisci l'elemento della riga numero "<<x<<" e colonna numero "<<y<<": ";
cin>>m[x][y];
}
}
}
void stampa_matrice(int m[massimo][massimo], int nr, int nc)
{
for (int x=0; x<nr; x++)
{
for (int y=0; y<nc; y++)
{
cout<<m[x][y]<<"\t";
}
cout<<endl;
}
}
void cubo(int m[massimo][massimo], int nr, int nc)
{
for (int x=0; x<nr; x++)
{
for (int y=0; y<nc; y++)
{
if (x+y==nr-1)
{
m[x][y]=m[x][y]*m[x][y]*m[x][y];
}
}
}
}
// ----- /FUNZIONI ----- //

// ----- PROGRAMMA PRINCIPALE ----- //
int main()
{
int matrice[massimo][massimo];
int righe=dimensione();
int colonne=righe;
cout<<endl;
caricamento_matrice(matrice, righe, colonne);
cout<<endl<<"Matrice caricata: "<<endl;
stampa_matrice(matrice, righe, colonne);
cubo(matrice, righe, colonne);
cout<<endl<<"Risultato: "<<endl;
stampa_matrice(matrice, righe, colonne);
return 0;
}
// ----- /PROGRAMMA PRINCIPALE ----- //
Per ulteriori approfondimenti sui cicli for, vedi anche qua
// Elevare al cubo i valori della seconda diagonale (matrice)
#include <iostream>
using namespace std;
// ----- VARIABILI GLOBALI ----- //
const int massimo=100;
// ----- /VARIABILI GLOBALI ----- //
// ----- PROTOTIPI ----- //
int dimensione();
void caricamento_matrice(int [massimo][massimo], int, int);
void stampa_matrice(int [massimo][massimo], int, int);
void cubo(int [massimo][massimo], int, int);
// ----- /PROTOTIPI ----- //
// ----- FUNZIONI ----- //
int dimensione()
{ int n;
cout<<"Inserisci il numero di righe e colonne: ";
cin>>n;
while (n>massimo)
{ cout<<"Errore. Inserisci il numero di righe: ";
cin>>n;
}
return n;
}
void caricamento_matrice(int m[massimo][massimo], int nr, int nc)
{ for (int i=0; i<nr; i++)
{ for (int j=0; j<nc; j++)
{ cout<<"Inserisci l'elemento della riga numero "<<i<<" e colonna
numero "<<j<<": ";
cin>>m[i][j];
}
}
}
void stampa_matrice(int m[massimo][massimo], int nr, int nc)
{ for (int i=0; i<nr; i++)
{ for (int j=0; j<nc; j++)
{ cout<<m[i][j]<<"\t";
}
cout<<endl;
}
}
void cubo(int m[massimo][massimo], int nr, int nc)
{ for (int i=0; i<nr; i++)
{