Matrici come array di puntatori a righe

Slides:



Advertisements
Presentazioni simili
Uso avanzato di C.
Advertisements

Politecnico di Milano Esercizi Preparazione alla prima prova intermedia.
Esercizi C su array e matrici
AN Fondam98 Puntatori Azioni e procedure Assegnamenti, indirizzi e puntatori.
void binario(int n); …………………
Ricerca sequenziale in un array di interi
Algoritmo che viene utilizzato per elencare gli elementi di un insieme secondo una sequenza stabilita da una relazione d'ordine, in modo che ogni elemento.
Metodologia Sperimentale Agronomica / Metodi Statistici per la Ricerca Ambientale Marco Acutis a.a CdS.
#include void main() { int a,b,c,; float s, x,x1,x2,delta,alfa,beta; int num[3]; int i; printf("La forma classica dell'equazione di 2° grado è: a*x^2+b*x+c=0\n.
ALGORITMO Un algoritmo è un procedimento che risolve un determinato problema attraverso un numero finito di passi. Un formalismo che permette di rappresentare.
Definizione di algoritmo: Un algoritmo è un procedimento che risolve un determinato problema attraverso un numero finito di passi. Un problema risolvibile.
Laboratorio di Linguaggi... altre D O M A N D E ! Marco Tarini Università dell’Insubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array n-dimensionali e tipi di dati strutturati Marco D. Santambrogio – Ver. aggiornata.
Linguaggio C: Funzioni e Puntatori Laboratorio di Programmazione Gruppo 1.
I circuiti elettrici.
IL GOLD STANDARD: INTRODUZIONE
Campi di gravità e topografia: analisi con QGIS
Generalità Laboratorio Arduino.
La struttura dei materiali
ESSERE HOMELESS: PERCORSI DI VITA E FATTORI DETERMINANTI
…. modello di Solow?.
L’economia monetaria Corso di Economia delle Istituzioni Finanziarie
L’infiltrazione LM-75: 2016/2017
UN NUOVO MODO DI GUARDARE IL MONDO
LE NOVITÀ DEL BILANCIO 2016 …………………………………………………………………………………………………………..
Le unità territoriali per le analisi socio-economiche
Università di Roma Tor Vergata
ATIPICITA’ DEL FATTORE UMANO NEL PILOTAGGIO DEI DRONI
RAEE è l’acronimo di Rifiuti da Apparecchiature Elettriche ed Elettroniche; ogni elettrodomestico ha un ciclo di vita terminato il quale, sia per malfunzionamento.
Appunti per ostetriche e non solo
Il secondo principio.
L’evoluzione del Diritto delle Assicurazioni Continuità o rottura con il passato? Avv. Giuseppe Ranieri Studio Legale Tributario Ranieri Comitato Esecutivo.
e l’associazione in partecipazione
Profilo biografico e opere
Asl Vco – Direzione Generale
Assunzioni, Attività, Investimenti
Nota AIFA 75 Determinazione 18 novembre 2010 (GU 29 novembre 2010, n. 279): modifiche, con riferimento alla nota AIFA 75,  alla determinazione del 4 gennaio.
PIANO DI RIORDINO PRESIDI DI FOLIGNO E SPOLETO
SINTOMI DEL BASSO APPARATO URINARIO 4 MARZO 2017
Pietro Cecchinato LA Politica Agricola Comunitaria
Corso di Astronomia avanzato 2014/15
Università di Roma Tor Vergata
Art 6 comma 2 Legge regionale N.19 del 25 novembre 2016 (vaccinazioni)
PROTOCOLLO AUTOVALUTAZIONE D’ISTITUTO
Valutazione delle prestazioni di programmi paralleli
Materiali. Logica: tutorials e slides power point in rete.
Le Geometrie
L'alternanza scuola-lavoro
Rappresentazione dei campi di gravità
Grafi Moreno Marzolla
Gianni Betti | Università di Siena Alessandra Masi | Istat
GAPS: General AntiParticle Spectrometer
Laboratorio di Statistica
“BLAISE PASCAL”- Voghera-
Dalle aspettative degli imprenditori un indicatore dell’incertezza economica Luciana Crosilla Solange Leproux 8 Maggio 2017.
MICROCIRCOLAZIONE Moduli microvascolari: arteriole di resistenza, capillare preferenziale, capillari veri, cellule mioepitaliali, venule, anastomosi artero-venose.
Psicopatologia del linguaggio Corso di laurea in scienze della formazione primaria, insegnamento di Neuropsichiatria infantile, a.a. 2017/18 dottoressa.
Festa: 13 maggio Vergine di Fatima fuente: ewtn.org.
Introduzione al linguaggio C
Gli array Moreno Marzolla
Il linguaggio C Strutture Moreno Marzolla
Array n-dimensionali e tipi di dati strutturati
Array n-dimensionali e tipi di dati strutturati
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Programmazione e Laboratorio di Programmazione
Array n-dimensionali e tipi di dati strutturati
Programmazione e Laboratorio di Programmazione
APPUNTI SUL LINGUAGGIO C
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

Matrici come array di puntatori a righe Una rappresentazione che risolve il problema di passare array multidimensionali a funzioni

Problema :funzione per sommare matrici m per n #include <stdio.h> #define M 2 #define N 3 void somma_mat(int a[][M], int b[][M], unsigned n ) { int i, j; for (i=0; i<n; i++) for (j=0; j<M; j++) a[i][j]+= b[i][j]; } void new_mat(int a[][M], unsigned n ) { int i,j; for (j=0; j<M;j++) scanf("%d",&(a[i][j]));} }

void stampa(int a[][M], unsigned n ) { int i,j; for (i=0; i<n; i++) for (j=0; j<M;j++) printf("%d ",a[i][j]); printf("\n"); } }} int main (void){ int a[N][M]; int b[N][M]; new_mat(a,N); new_mat(b,N); somma_mat(a,b, N); stampa(a,N); }

Esempio: matrice n per m A[0][m-1] A[1][0] A[1][1] A[1][m-1] A[n-1][0] A[n-1][1] A[n-1][m-1]

Cosa vogliamo poter fare /* somma di matrici */ void somma_mat(double** a, double ** b, unsigned n, unsigned m ) { int i, j; for (i=0; i<n; i++) for (j=0; j<m; j++) a[i][j]+= b[i][j]; }

Esempio: matrice 4 per 3 A A000 A004 A008 A00C AB00 AB04 AB08 BB10 AB0C AB10 AB14 A[3][0] A[3][1] A[3][2]

Esempio: matrice 4 per 3 A Il nome della matrice È il puntatore A double ** AB00 AB04 AB08 A000 A[0][0] A[0][1] A[0][2] A004 BB10 BB14 BB18 A008 A[1][0] A[1][1] A[1][2] A00C 1B00 1B04 1B08 L'accesso a un elemento avviene correttamente con l' usuale operatore [...][...] A[2][0] A[2][1] A[2][2] AB0C AB10 AB14 A[3][0] A[3][1] A[3][2]

Esempio: matrice 4 per 3 A Esempio di accesso A000 A[2][2] A004 AB00 AB04 AB08 A000 A[0][0] A[0][1] A[0][2] A004 A[2][2] (A[2])[2] BB10 BB14 BB18 A008 A[1][0] A[1][1] A[1][2] A00C 1B00 1B04 1B08 A[2][0] A[2][1] A[2][2] AB0C AB10 AB14 A[3][0] A[3][1] A[3][2]

Esempio: matrice 4 per 3 A Esempio di accesso A000 A[2][2] A004 AB00 AB04 AB08 A000 A[0][0] A[0][1] A[0][2] A004 A[2][2] (A[2])[2] (*(A + 2))[2] BB10 BB14 BB18 A008 A[1][0] A[1][1] A[1][2] A00C 1B00 1B04 1B08 A[2][0] A[2][1] A[2][2] AB0C AB10 AB14 A[3][0] A[3][1] A[3][2]

Esempio: matrice 4 per 3 A Esempio di accesso A000 A[2][2] A004 AB00 AB04 AB08 A000 A[0][0] A[0][1] A[0][2] A004 A[2][2] (A[2])[2] (*(A + 2))[2] *(1B00 + 2) BB10 BB14 BB18 A008 A[1][0] A[1][1] A[1][2] A00C 1B00 1B04 1B08 A[2][0] A[2][1] A[2][2] AB0C AB10 AB14 A[3][0] A[3][1] A[3][2]

Esempio: allocazione /* creazione di una matrice (nXm) */ void new_mat(int ***a, unsigned n, unsigned m ) { int i,j; *a=malloc(n*sizeof(int * )); for (i=0; i<n; i++) {(*a)[i]=malloc(m*sizeof(int)); for (j=0; j<m;j++) { printf("immetti intero\n"); scanf("%d",((*a)[i])+j);} }

Esempio: deallocazione /* deallocazione di una matrice */ void free_mat(int*** a, unsigned n ) { int i; for (i=0; i<n; i++) free((*a)[i]); free(*a); *a=NULL; }

Esempio: somma di matrici void somma_mat(int** a, int ** b, unsigned n, unsigned m ) { int i, j; for (i=0; i<n; i++) for (j=0; j<m; j++) a[i][j]+= b[i][j]; } void new_mat(int *** a, unsigned n, unsigned m ) { int i,j; *a=malloc(n*sizeof(int * )); {(*a)[i]=malloc(m*sizeof(int)); for (j=0; j<m;j++) { printf("immetti intero\n"); scanf("%d",((*a)[i])+j);}} }

void stampa(int ** a, unsigned n, unsigned m ) { int i,j; for (i=0; i<n; i++) {for (j=0; j<m;j++) printf("%d ",a[i][j]); printf("\n");}} void free_mat(int*** a, unsigned n ) { int i; free((*a)[i]); free(*a); *a=NULL; } int main (void){ int ** a; int ** b; new_mat(&a,N,M); new_mat(&b, N,M); somma_mat(a,b,N,M); stampa(a,N,M); free_mat(&a ,N); if (a==NULL) printf(“Lista vuota”);}