Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Programma C++ per la gestione di una matrice dinamica - Prof. Tramontana, Esercizi di Fondamenti di informatica

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

2018/2019

Caricato il 07/10/2021

boom-baby
boom-baby 🇮🇹

4.5

(91)

230 documenti

1 / 3

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
#include <iostream>
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;
pf3

Anteprima parziale del testo

Scarica Programma C++ per la gestione di una matrice dinamica - Prof. Tramontana e più Esercizi in PDF di Fondamenti di informatica solo su Docsity!

#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;