Informatica 2 Liceo Scientifico Scienze Applicate/Es matrici 2
Aspetto
Esercizi Uso Matrici
[modifica | modifica sorgente]Quando si vogliono modificare alcune parti della matrice bisogna pensare agli indici delle celle coinvolte
Es1: inserimento,stampa,calcolo max,posmax, obiettivo: matrici, uso indici e cicli
- dopo aver inserito i dati in una matrice 3*4
- stampala
- calcola il max e la sua posizione(riga,colonna)
- calcola la somma degli elementi della riga 2
- calcola la somma degli elementi della colonna 1
- calcola la somma degli elementi di ciascuna colonna
- calcola la media dei soli numeri dispari della matrice,
- scambia colonna 0 con la colonna 1 e scambia la colonna 2 con la 3
- /
#include <cstdlib>
#include <iostream>
using namespace std;
/*esercizi su matrice: inserimento,stampa,calcolo max,posmax,
somma riga 2,somma colonna 1,somma ciascuna colonna, media dei soli numeri
dispari, scambio colonna 0 con 1 e scambio colonna 2 con 3
obiettivo: matrici, uso indici e cicli
*/
int main(int argc, char *argv[])
{
int mat[3][4];
int i,j;
// inserimento dati matrice 3*4
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{//cout<<"inserisci l'elemento riga "<<i<<" col "<<j;
//cin>>mat[i][j];
mat[i][j]=rand()%100;
}
// visualizzazione stampa matrice
for(i=0;i<3;i++)
{for(j=0;j<4;j++)
cout<<mat[i][j]<<", ";
cout<<endl;
}
//calcolo del num max della matrice e della sua posizione
int max ;
int posmaxriga,posmaxcolonna;
max=mat[0][0];
posmaxriga=0;
posmaxcolonna=0;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if (mat[i][j]>max)
{max=mat[i][j];
posmaxriga=i;
posmaxcolonna=j;
}
cout<<"il max vale "<<max<<endl;
cout<<" e si trova nella riga "<<posmaxriga<<endl;
cout<<" colonna "<<posmaxcolonna<<endl;
// somma di tutti gli elementi della riga 2
int somma ;
somma =0;
for(j=0;j<4;j++)
somma=somma+mat[2][j];
cout<<"la somma della riga 2 vale "<<somma<<endl;
// somma di tutti gli elementi della colonna 1
int sommacolonna ;
sommacolonna =0;
for(i=0;i<3;i++)
sommacolonna=sommacolonna+mat[i][1];
cout<<"la somma della colonna 1 vale "<<sommacolonna<<endl;
//somma di ciascuna colonna
int sommacol[4]={0,0,0,0} ;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
sommacol[j]=sommacol[j]+mat[i][j];
for(j=0;j<4;j++)
cout<<"somma colonna"<< j<<" = "<<sommacol[j]<<endl;
//media dei numeri dispari
int conta=0;
int sommadispari=0;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if((mat[i][j]%2)==1)
{ conta++;
sommadispari += mat[i][j];
}
cout<<"la media dei numeri dispari ="<< sommadispari/conta<<endl;
//scambio colonna 0 con 1 scambio colonna 2 con 3
int temp;
for(j=0;j<4;j=j+2)
for(i=0;i<3;i++)
{temp=mat[i][j];
mat[i][j]=mat[i][j+1];
mat[i][j+1]=temp;
}
cout<<"scambio colonna 0 con 1 scambio colonna 2 con 3"<<endl;
for(i=0;i<3;i++)
{for(j=0;j<4;j++)
cout<<mat[i][j]<<", ";
cout<<endl;
}
system("PAUSE");
return 0;
}
Es2 crea una matrice 20*15, carica il valore 8 nelle celle che costituiscono il bordo della cella e il valore 1 nelle altre Soluzione: