Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D Le Miniguide all'orientamento Gli eBook di Federica La Corte in Rete
 
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Silvia Rossi » 19.Algoritmi su matrici


Algoritmi su Matrici

Esempio nella figura a lato: una classe di 32 studenti ha sostenuto durante l’anno 5 compiti in classe. Supponiamo di voler scrivere un programma che stampi per ogni studente la somma e la media dei voti ottenuti


Algoritmi su Matrici (segue)

Allorché occorre ricavare dell’informazione da una matrice A occorre sempre ricordare cosa rappresenta una riga, cosa rappresenta un array e che cosa rappresenta un generico elemento a[i][j].
Come nella figura a lato, in genere il problema da risolvere cade in uno dei quattro schemi seguenti:


Algoritmi su Matrici (segue)

In alcuni casi i due algoritmi sono equivalenti.

Ritornando alla matrice contenente i voti riportati ai compiti dai singoli studenti, se si volesse calcolare la media dei voti su tutti i compiti svolti dagli studenti si potrebbe adoperare uno qualsiasi dei due.
Se invece, come nel nostro esempio, si vuole conoscere il voto medio riportato da ogni singolo studente è indispensabile adoperare il primo.
Una elaborazione colonna per riga ci fornirebbe il voto medio riportato dalla classe per ogni compito.


Algoritmi su Matrici (segue)

Esempio: riprendiamo l’esercizio del voti dei compiti di una classe di studenti

  • Calcolare la media dei voti per ogni studente (elaboraz. riga per colonna)
  • Calcolare la il voto medio della classe su ogni compito (elaboraz. colonna per riga)

Algoritmi su Matrici (segue)

Esempio: riprendiamo l’esercizio del voti dei compiti di una classe di studenti

  • Calcolare la media dei voti di tutta la classe su tutti i compiti (elaboraz. riga per colonna oppure colonna per riga)

Algoritmi su Matrici (segue)

Ritornando al nostro esempio, trovare le insufficienze riportate dallo studente numero k comporta una elaborazione sulla riga k, mentre trovare lo studente col voto migliore nel compito r, comporta una elaborazione sulla colonna r.


Algoritmi su Matrici (segue)

Esempio: riprendiamo l’esercizio del voti dei compiti di una classe di studenti

  • Calcolare la media dei voti dello studente “k” (elaborazione di una riga)
  • Calcolare la media della classe sul compito “c” (elaborazione di una colonna)

Esercizi

Sono dati i numeri di pezzi prodotti ogni giorno (dal lunedì al venerdì) da una ditta in n settimane lavorative. Scrivere una funzione per ottenere:

a) La somma settimana per settimana della produzione visualizzata in forma di diagramma di asterischi (un asterisco corrisponde a 10 pezzi prodotti);

b) il numero medio di pezzi prodotti giornalmente;

c) l’elenco dei giorni suddivisi nelle varie settimane, in cui la produzione è stata inferiore alla media con il relativo valore.

  • Esempio: n=4, disponiamo i dati in modo che le righe siano le settimane e le colonne i giorni lavorativi della settimana.

Esercizi (segue)

Sia dato una matrice A di interi positivi di dimensione n _ n. Scrivere una funzione che restituisca true se e solo se nell’array A:

  • c’è almeno un numero pari in ogni riga
  • c’è almeno un numero dispari in ogni riga
  • ci sono almeno “i” numeri pari nella riga i-esima
  • ci sono esattamente “i” numeri dispari nella riga i-esima
  • ci sono almeno “i” numeri pari consecutivi nella riga i-esima
  • ci sono esattamente “i” numeri dispari nella colonna i-esima

Esercizi (segue)

Scrivere un programma che, assegnata una matrice quadrata di ordine n di reali, risolva i seguenti problemi con una funzione o procedura:

  • restituisce la somma di tutti i suoi elementi;
  • restituisce la somma di tutti gli elementi per cui è pari la somma degli indici;
  • calcola la somma ed il prodotto degli elementi della diagonale principale e secondaria;
  • restituisce true se la matrice è triangolare superiore od inferiore, false altrimenti;
  • restituisce true se la matrice è unitaria, false altrimenti;
  • restituisce true se la matrice è simmetrica, false altrimenti

Il programma deve essere strutturato con procedure e funzioni e con un menù che le richiami.

Esercizi (segue)

Scrivere un programma che, dopo aver letto tutti i dati del file studenti.txt (riportato nella pagina seguente) ed averli inseriti in una matrice, risolva i seguenti passi:

  • stampi la media di ogni esame;
  • stampi i numeri di matricola degli studenti che hanno ottenuto il voto più alto per ogni esame;
  • stampi il numero di studenti che, per ogni esame, hanno superato la media già calcolata;
  • conservi in un file, uno per riga, il numero di matricola degli studenti che in almeno un esame, hanno ottenuto un voto maggiore di un valore prefissato

Esercizi (segue)

Supponiamo di avere sul un file di testo studenti.txt, i seguenti dati:


Matrici e while – Esercizio

Rappresentiamo una palude con un array bidimensionale di 0 e 1, in cui 1 rappresenta un punto attraversabile della palude, mentre 0 rappresenta un punto inaccessibile.

Scriviamo una programma che, data la mappa di una palude, ne cerca un attraversamento e, se esiste, lo visualizza.


Matrici e while – Esercizio

Consideriamo una matrice int palude[R][C] riempita di 0 o 1

Cerchiamo un cammino ‘da sinistra a destra’ cioè dalla colonna 0 alla colonna C-1

Assumiamo che siano possibili solo movimenti in avanti, cioè partendo dalla posizione ci si può spostare in

  • <riga-1, colonna+1> (solo se la riga non è la prima)
  • <riga, colonna+1>
  • <riga+1, colonna+1> (solo se la riga non è l’ultima)

Memorizziamo il cammino costruito in un array int cammino[C] che contiene gli indici delle righe corrispondenti ad ogni pezzo del percorso.
Es, nel caso in figura il cammino sarà 1 2 3 3 3 2

Matrici e while – Esercizio


Matrici e while – Esercizio


Matrici e while – Esercizio


Matrici e while – Esercizio


  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion