

Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Un programma c++ per la gestione di una matrice quadrata dinamica, con funzioni per inserire, leggere, visualizzare, azzerare e cercare elementi. La matrice è rappresentata come una lista collegata, con ogni nodo della lista che contiene i dati riga, colonna e valore dell'elemento.
Tipologia: Esercizi
1 / 3
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!


#include
using namespace std;
struct elemento{ int riga; int colonna; int valore; struct elemento *prossimo; };
typedef struct elemento* matrice;
const int DIM= 3 ; //dimensione della matrice quadrata
void visualizza(matrice m){ for (int i= 0 ;i<DIM;i++){ for (int j= 0 ;j<DIM;j++){ //se l'elemento è nella lista ne scrivo il valore altrimenti è zero bool trovato=false; for (struct elemento *p=m;((p!=NULL)&&(!trovato));p=p-
prossimo) if ((p->riga==i)&&(p->colonna==j)){ cout<<p->valore<<" "; trovato=true; } if (!trovato) cout<<"0 "; } cout<<endl; } }
void inserisci (matrice &m, int riga, int colonna, int valore){ bool trovato=false; //controllo prima che l'elemento non ci sia già for (struct elemento *p=m;((p!=NULL)&&(!trovato));p=p->prossimo) if ((p->riga==riga)&&(p->colonna==colonna)){ p->valore=valore; trovato=true; } if (!trovato){ struct elemento *p=new struct elemento; p->riga=riga; p->colonna=colonna; p->valore=valore; p->prossimo=m; m=p;
return; }
void azzeraTutto (matrice &m){ m=NULL; }
int leggi (matrice m, int riga, int colonna){ //se l'elemento c'è restituisco il valore altrimenti restituisco zero for (struct elemento *p=m;((p!=NULL));p=p->prossimo) if ((p->riga==riga)&&(p->colonna==colonna)) return p->valore; return 0 ; }
bool cerca (matrice m, int valore, int &riga, int &colonna){ //se l'elemento c'è restituisco true altrimenti restituisco false //è inutile che cerco tra gli elementi nulli for (struct elemento *p=m;((p!=NULL));p=p->prossimo) if (p->valore==valore){ riga=p->riga; colonna=p->colonna; return true; } return false; }
int main() { int scelta= 0 ; int r,c,v; matrice m=NULL;
do{ cout<<"Opzioni : "<<endl; cout<<"1 - Modifica un elemento "<<endl; cout<<"2 - Azzera tutto "<<endl; cout<<"3 - Visualizza tutti gli elementi "<<endl; cout<<"4 - Leggi un elemento data la posizione "<<endl; cout<<"5 - Cerca un elemento (diverso da zero) dato il valore"<<endl; cout<<"6 - Fine"<<endl; cin>>scelta;
switch (scelta){ case 1 : cout<<"Inserisci riga colonna valore"<<endl; cin>>r>>c>>v;