Multidimensionali. Array Multidimensionali. Tipi di array. Matrice: array bidimensionale. Array multidimensionale. Dichiarazione di una matrice
|
|
|
- Bernadetta Manca
- 8 anni fa
- Просмотров:
Транскрипт
1 Tipi di array Array Multidimensionali Antonella Santone Monodimensionali (vettore) Multidimensionali Array multidimensionale Un array multidimensionale è un array, i cui elementi sono a loro volta degli array, i cui elementi ecc.. fino ad esaurire le dimensioni volute Matrice: array bidimensionale Facciamo riferimento per semplicità al caso degli array bidimensionali: le matrici I dati sono organizzati per righe e per colonne, come se fossero inseriti in una tabella Dichiarazione di una matrice tipo NomeVariabile[dim_costante][dim_costante]; tipo è il tipo degli elementi della matrice Esempio int mat[][] La variabile mat contiene righe e colonne, per un totale di elementi dim_costante, dim_costante costanti che indicano il numero di componenti per ciascuna delle due dimensioni Riga Riga Colonna Colonna mat[][] mat[][] mat[][] mat[][] Colonna mat[][] mat[][] Colonna mat[][] mat[][] Riga mat[][] mat[][] mat[][] mat[][] 5 6
2 Rappresentazione interna Le matrici in C sono locazioni di memoria contigue che contengono i dati memorizzati per righe La matrice, anche se viene pensata come un oggetto a due dimensioni del tipo ad es. righe per colonne, cioè come un vettore di righe, ciascuna delle quali è un vettore,,,,,,,,,, è in realtà un oggetto disposto linearmente in memoria, riga dopo riga, come un vettore,,,,,,,,,,,,,,,, Rappresentazione interna (cont(,,,,,,, *+=9, r,c, NR= NC=, Indicizzando righe e colonne a partire da, se NR è il numero di righe, ed NC è il numero di colonne, allora l'elemento in posizione (r,c) della matrice sta fisicamente nella posizione r*nc+c del vettore, 7 8 Inizializzazione di un array All'atto della dichiarazione è possibile inizializzare le matrici come di seguito indicato: int matrice [][] =,,,,5,6 ; L'inizializzazione viene fatta scrivendo tra parentesi graffe il valore di ciascun elemento, separati da virgole. Come si vede, essendo la matrice un vettore di righe, ciascuna riga viene inizializzata in modo analogo, scrivendo tra parentesi graffe i valori di ciascun elemento separati da virgole Accedere ad un elemento di una matrice La funzione di accesso ad un elemento è del tipo nomearray[espressione][espressione] L'accesso al dato in posizione r,c della matrice viene effettuato mediante l'operatore [] già usato per i vettori Esempi matrice[][]=7; scrive il valore 7 nell'elemento che sta nella seconda riga in quarta colonna int i=; matrice[][i+]=7; scrive il valore 7 nell'elemento che sta nella seconda riga in sesta colonna 9 Accedere ad un elemento (cont( int mat[][]; mat[][]= ; Errore tipico Far riferimento all elemento mat[i][j] di una matrice usando la forma mat[i,j] mat[][]= ; mat[][]= ; mat[][]= ;
3 Esempi di uso di matrici Riempire un matrice dall esterno #include<stdio.h> #define NR #define NC main() int mat[nr][nc], i, j; for (i=; i<nr; i++) for (j=; j<nc; j++) scanf("%d", &mat[i][j]); Visualizzazione for (i=; i<nr; i++) for (j=; j<nc; j++) printf("%d \t ", mat[i][j]); Esercizi sulle matrici link nella home page esercizi sulle matrici 5 6 Inserire in una tabella la tavola pitagorica e poi stamparla main() int tabellina[][]; int i, j; for (i = ; i < ; i++) for (j = ; j < ; j++) tabellina[i][j] = (i + ) * (j + ); // stampa for (i=; i<; i++) for (j=; j<; j++) printf("%d", tabellina[i][j]); Dimensione di campo 7 8
4 Visualizzazione Senza printf("% ("%d", main() int tabellina[][]; int i, j; for (i = ; i < ; i++) for(j = ; j < ; j++) tabellina[i][j] = (i + ) * (j + ); // stampa for (i=; i<; i++) for (j=; j<; j++) printf("%d", tabellina[i][j]); 9 Visualizzazione Un quadrato magico è una matrice quadrata n n tale che la somma degli elementi su ogni riga, ogni colonna ed ognuna delle diagonali principali sia la stessa I II III I è un quadrato magico. II non è: la somma degli elementi sulla prima colonna (8) è diversa dalla somma degli elementi su ognuna delle righe (5). III non è: la somma degli elementi su una delle diagonali principali (6) è diversa dalla somma degli elementi su ognuna delle righe e colonne (5). Scrivere un programma che, data una matrice quadrata nxn di interi positivi stampi "magico" se questa rappresenta un quadrato magico,"no magico" altrimenti Soluzione #define N main() int mat[n][n]; int i,j,somma,s,magico; printf("caricamento matrice\n"); for (i=; i<n; i++) for (j=; j<n; j++) scanf("%d", &mat[i][j]); /* Verifica se la matrice è un quadrato magico, appena trova una riga o una colonna o una diagonale con una somma diversa esce */ // Verifica Orizzontale: somma Prima Riga i=; magico=; somma = ;, for (j = ; j < N; j++), somma += mat[i][j];, // Controllo altre righe, i=;, while (i<n && magico) s = ; for (j = ; j < N; j++) s += mat[i][j]; if (s!= somma) magico=; i++;,,,,,,,,,,,,,,,,,,,,
5 // Verifica Verticale // Verifica I Diagonale j=; while (j<n && magico) s = ; for (i = ; i < N; i++) s += mat[i][j]; if (s!= somma) magico=; j++; s = ; i = ; while (i<n && magico) s += mat[i][i]; i++; if (s!= somma) magico=;,,,,,,,,,,,,,,,,,,,,,,,,, 5 6 // Verifica II Diagonale s = ; i = ; while (i<n && magico) s += mat[i][n-i-]; i++; if (s!= somma) magico=; // Stampa del risultato,,,,,,,,,,,,,,,,,,,, N = 5,,,,, Date due matrici mat[n][p] e mat[p][m], calcolare la matrice prodotto in cui ogni elemento è dato da: pmat[i][j] = P mat[i][k] * mat[k][j] k= Per i =..N, j=..m pmat è una matrice costituta da N righe ed M colonne if (magico) printf("magico"); else printf("non magico"); // chiude il main 7 8 Esempio N == P == M == mat: NxP (x) * + * +*5 = * + * +* = ecc. 5 mat: PxM (x) pmat: NxM (x) 9 Soluzione #define N #define P #define M main() int mat [N][P]; int mat [P][M]; int pmat [N][M]; int i, j,k; printf("caricamento I matrice\n"); for (i=; i<n; i++) for (j=; j<p; j++) scanf("%d", &mat[i][j]);
6 printf("caricamento II matrice\n"); for (i=; i<p; i++) for (j=; j<m; j++) scanf("%d", &mat[i][j]); /* Calcolo del prodotto */ for (i=; i<n; i++) for (j=; j<m; j++) pmat[i][j]=; for(k=; k<p; k++) pmat[i][j] = pmat[i][j]+mat[i][k]*mat[k][j]; printf("matrice prodotto\n"); for (i=; i<n; i++) for (j=; j<m; j++) printf("%5d", pmat[i][j]); /* chiude il main */ for (i=; i<n; i++) for (j=; j<m; j++) pmat[i][j]=; for(k=; k<p; k++) pmat[i][j] = pmat[i][j]+mat[i][k]*mat[k][j]; N == P == M == mat: NxP (x) 5 mat: PxM (x) i= 6 j= j= k= k= k= k= k= pmat: NxM (x)
Esercitazione 8. Array multidimensionali
Esercitazione 8 Array multidimensionali Prodotto di due matrici Una matrice può essere rappresentata in C con un array bidimensionale. Consideriamo il seguente problema: date due matrici mat1[n] [P] mat2[p]
Linguaggio C: Array Valeria Cardellini
Linguaggio C: Array Valeria Cardellini Corso di Calcolatori Elettronici A.A. 2018/19 Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Array in C q Dichiarazione
Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di
ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere
Array Tipi di dato semplici e strutturati strutturati array elementi omogenei numero d ordine indice lunghezza dimensione
Array Tipi di dato semplici e strutturati i tipi di dato visti finora erano tutti semplici: int, char, float,... i dati manipolati sono spesso complessi (o strutturati) con componenti elementari o strutturate
I tipi strutturati e i record in C++
I tipi strutturati e i record in C++ Docente: Ing. Edoardo Fusella Dipartimento di Ingegneria Elettrica e Tecnologie dell Informazione Via Claudio 21, 4 piano laboratorio SECLAB Università degli Studi
Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.
Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;
Esercitazione 8. Array come puntatori. Aritmetica dei puntatori. Array multidimensionali. Ricapitolazione su Ricorsione e Array.
Esercitazione 8 Array come puntatori Aritmetica dei puntatori Array multidimensionali Ricapitolazione su Ricorsione e Array Stringhe Array come puntatori Gli array e i puntatori in C sono strettamente
Problema. Vettori e matrici. Vettori. Vettori
e matrici Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Problema Si vuole un programma che chieda 10 numeri dalla tastiera e li visualizzi dall ultimo al primo Soluzione attuale (con le
Esercitazione 4. Comandi iterativi for, while, do-while
Esercitazione 4 Comandi iterativi for, while, do-while Comando for for (istr1; cond; istr2) istr3; Le istruzioni vengono eseguite nel seguente ordine: 1) esegui istr1 2) se cond è vera vai al passo 3 altrimenti
Programmazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Tipi Strutturati Parte 1 Introduzione G. Mecca M. Samela Università della Basilicata Tipi Strutturati: Introduzione >> Sommario Sommario Panoramica Alcuni Esempi
Cicli annidati ed Array multidimensionali
Linguaggio C Cicli annidati ed Array multidimensionali Cicli Annidati In C abbiamo 3 tipi di cicli: while(exp) { do { while(exp); for(exp;exp;exp3) { Cicli annidati: un ciclo all interno del corpo di un
Array multidimensionali e stringhe
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Array uni-dimensionali (richiami) Dichiarazione: int vet[100]; float x[50]; Gli elementi
Esercitazione di Reti degli elaboratori
Esercitazione di Prof.ssa Chiara Petrioli Christian Cardia, Gabriele Saturni Cosa vedremo in questa lezione? Gli Array Gli array multidimensionali Le stringhe I puntatori Esercizi Pagina 1 Gli Array Definizione
C: panoramica. Violetta Lonati
C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati
Gli Array. Dichiarazione di un array
Gli Array Un array rappresenta una variabile indicizzata (ovvero contenente un indice) che viene utilizzata per contenere più elementi dello stesso tipo. Ogni array ha un nome al quale viene associato
Array di array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 03. A. Miola Febbraio 2008
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa Array di array A. Miola Febbraio 8 http://www.dia.uniroma.it/~java/fondinf/ Array di array Contenuti Array bidimensionali creazione
Fondamenti di Informatica
Fondamenti di Informatica AlgoBuild: Strutture iterative e selettive Prof. Christian Esposito Corso di Laurea in Ingegneria Meccanica e Gestionale (Classe I) A.A. 2016/17 AlgoBuild: Strutture iterative
Liste di Liste Matrici
Liste di Liste Matrici Una lista annidata è una lista che compare come elemento di un'altra lista. Nell'esempio seguente il quarto elemento della lista (elemento numero 3 dato che il primo ha indice 0)
Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.
Cicli e array Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione all ambiente
Array Bidimensionali in Java. Esempi di Elaborazioni su Matrici
Fondamenti di Informatica Array Bidimensionali in Java Esempi di Elaborazioni su Matrici Fondamenti di Informatica - D. Talia - UNICAL 1 Oggetti e array bidimensionali Sviluppiamo un programma Java che
C array. Problema: scrivere un programma che, ricevuto in input un intero n ed n interi positivi, li stampi in ordine inverso.
Problema: scrivere un programma che, ricevuto in input un intero n ed n interi positivi, li stampi in ordine inverso. Non sappiamo a priori quante variabili dobbiamo definire per contenere gli interi.
Fondamenti di Informatica
Fondamenti di Informatica AlgoBuild: Strutture selettive, iterative ed array Prof. Arcangelo Castiglione A.A. 2016/17 AlgoBuild : Strutture iterative e selettive OUTLINE Struttura selettiva Esempi Struttura
Dati aggregati. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica - in breve: Definizione di tipi Array Stringhe Strutture
Programmazione I - Laboratorio
Programmazione I - Laboratorio Esercitazione 3 - Array Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2. Dipartimento
Esercizi C su array e matrici
Politecnico di Milano Esercizi C su array e matrici Massimo, media e varianza,, ordinamento, ricerca e merge, matrice simmetrica, puntatori Array Array o vettore Composto da una serie di celle int vett[4]
18. Matrici. Andrea Marongiu Paolo Valente
18. Matrici Andrea Marongiu ([email protected]) Paolo Valente Stringhe Struct Operazioni Progettazione strutture dati e passaggio parametri Matrici statiche Implementazione Passaggio alle funzioni
Algoritmi su Matrici. int const R=40; int const C=8; int A[R][C]; int n=32; int m=5; Compito Studente N O
Algoritmi su Matrici Esempio: 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
4 GLI ARRAY E LE STRINGHE
13 4 GLI ARRAY E LE STRINGHE 4.1 Gli array monodimensionali Un array è un insieme di variabili dello stesso tipo, cui si fa riferimento mediante uno stesso nome. L accesso ad un determinato elemento si
