12) Vettori e matrici - PowerPoint PPT Presentation

About This Presentation
Title:

12) Vettori e matrici

Description:

Title: Laboratorio di Calcolo I: vettori e matrici Author: Domizia Orestano - Dipartimento di Fisica – PowerPoint PPT presentation

Number of Views:38
Avg rating:3.0/5.0
Slides: 23
Provided by: Domiz8
Category:
Tags: matrici | vettori

less

Transcript and Presenter's Notes

Title: 12) Vettori e matrici


1
12) Vettori e matrici
2
Vettori
  • Dichiarazione di un vettore di oggetti del tipo
    Tipo
  • Tipo identificatoredimensione
  • Uso di un elemento del vettore
  • identificatoreelemento
  • Dove dimensione e elemento sono degli oggetti di
    tipo int

3
NB
  • Contrariamente ad altri linguaggi in C e C il
    primo elemento di un vettore ha indice 0 e
    l'ultimo, se n è la dimensione del vettore, ha
    indice n-1.
  • Come in tutti i linguaggi la dichiarazione del
    vettore ed il suo dimensionamento comportano
    lallocazione della memoria necessaria per la
    dimensione dichiarata se si prova ad usare un
    elemento con indice superiore a n-1 si ha uno
    sfondamento della memoria, errore che comporta
    problemi in punti imprevedibili del programma!

4
Esempi di dichiarazioni
  • int V25 //dichiarazione di un vettore V
  • //con 25 elementi integer
  • //V0,V1V24.
  • double vector3 //dichiarazione di un vettore
  • //vector con 3
    elementi double //vector0,vector1,vector
    2.
  • char word50 //dichiarazione di un vettore
    word
  • //con 50 elementi
    character
  • //word0,,word49.

5
Stringhe
  • Una stringa è un vettore di caratteri
  • include ltstringgt //definizione degli
    oggetti
  • // stringa di
    caratteri
  • string studenti54 // dichiarazione del
    vettore
  • //studenti con
    54 elementi
  • // di tipo
    stringa di
  • //caratteri
  • //
    studenti0studenti53.

6
NB
  • una stringa contenente n caratteri visibili e
    un vettore di caratteri di dimensione n1,
    infatti lultimo carattere, \0, indica la fine
    della stringa.

7
Inizializzazione
  • int V25 3, 5, 6, 1
  • double vector3 -1.2, 4.7, 5.9
  • char word50 's' , 'p', 'o', 't'
  • string student54 "Chris Berkley",
  • "Kevin Chao", "Missy Mesfin","Joel Triemstra"
  • int M 1, 4, 15, 2
  • char Name "Michael Bird"

8
Inizializzazione
  • Queste tre dichiarazioni sono equivalenti
  • char Name "Michael Bird"
  • char Name 'M','i','c','h','a','e','l',' ',
  • 'B','i','r','d','\0'
  • char Name13 'M','i','c','h','a','e', 'l','
    ',
  • 'B','i','r','d','\0'
  • Ovvero
  • Name0 'M' , Name1 'i' Name11 'd' ,
    Name12 '\0'

9
Esempi di inizializzazione e uso
  • double A20 4.1,5.3,10.6,100.9,23,-12
  • double sum 0
  • for(int j 0 jlt20 j j 1) sum sum Aj
  • cout ltlt "la somma vale "ltltsumltlt"."ltltendl

10
Esempi uso di
  • int A 0,10,20,30,40,50,60,70,80,90
  • int j 5
  • coutltlt "j vale "ltltjltltendl
  • coutltlt "Aj vale "
  • ltlt Ajltltendl
  • cout ltlt "j ora vale "ltltj
  • ltltendl

11
Esempi uso di --
  • int A 0,10,20,30,40,50,60,70,80,90
  • int j 5
  • coutltlt "j vale "ltltjltltendl
  • coutltlt "Aj-- vale "
  • ltlt Aj--ltltendl
  • cout ltlt "j ora vale "ltltj
  • ltltendl

12
Esempi uso di
  • int A 0,10,20,30,40,50,60,70,80,90
  • int j 5
  • coutltlt "j vale "ltltjltltendl
  • coutltlt "Aj vale "
  • ltlt Ajltltendl
  • cout ltlt "j ora vale "ltltj
  • ltltendl

13
Esempi uso di --
  • int A 0,10,20,30,40,50,60,70,80,90
  • int j 5
  • coutltlt "j vale "ltltjltltendl
  • coutltlt "A--j vale "
  • ltlt A--jltltendl
  • cout ltlt "j ora vale "ltltj
  • ltltendl

14
Vettori multidimensionali (matrici)
  • Dichiarazione di una matrice con rDim righe e
    cDim colonne
  • Tipo identificatorerDimcDim
  • Esempio
  • double tabella3 4

15
Dichiarazione ed inizializzazione
  • Per l'inizializzazione si elencano gli elementi
    della prima riga, poi della seconda etc
  • int M34 1,2,3,4,
  • 5,6,7,8,
  • 9,10,11,12
  • oppure
  • int M34 1,2,3,4,5,6,7,8,9,10,11,12

16
Esempio prodotto scalare
  • include ltiostream.hgt
  • int main( )
  • double A3,B3
  • double pScal0.
  • cout ltlt"inserisci gli elementi del vettore
    A"ltlt endl
  • cin gtgt A0gtgt A1gtgtA2
  • cout ltlt"inserisci gli elementi del vettore
    B"ltlt endl
  • cin gtgt B0gtgt B1gtgtB2
  • for(int j0 jlt3 j) pScal
    AjBj
  • cout ltlt" A scalare B vale "ltlt pScalltltendl
  • return 1

17
Esempio prodotto vettoriale
  • include ltiostream.hgt
  • int main( )
  • double A3 1.,0.,0.
  • double B3 0.,1.,0.
  • double C3
  • int permutazioni32 1,2, 2,0,
    0,1
  • for(int j0 jlt3 j) //loop sulle 3
    componenti di C
  • int kpermutazionij0
  • int mpermutazionij1
  • CjAkBm-AmBk
  • coutltlt"C"ltltjltlt""ltltCjltltendl
  • return 1

18
Esempio modulo di un vettore
  • include ltiostream.hgt
  • include ltmath.hgt // funzioni matematiche
    (libreria C)
  • int main( )
  • double A3
  • double mod0.
  • cout ltlt"inserisci gli elementi del vettore
    A"ltlt endl
  • cin gtgt A0gtgt A1gtgtA2
  • for(int j0 jlt3 j) mod AjAj
  • cout ltlt" il modulo quadro di A vale "ltlt
    modltltendl
  • if( mod gt 0 )
  • mod sqrt(mod)
  • cout ltlt" il modulo di A vale "ltlt
    modltltendl
  • return 1

19
Esempio prodotto di matrici
  • include ltiostream.hgt
  • // calcolo di M3M1M2
  • int main( )
  • int M132 1,0, 2,1, 0,2
  • int M223 0,1,2, 1,2,1
  • int M333
  • for(int j0 jlt3 j) //loop sulle
    righe di M1
  • for(int k0 klt3 k) //loop sulle
    colonne di M2
  • M3jk0
  • for(int l0 llt2 l ) //loop sulle colonne
    di M1
  • M3jk M1jlM2lk
  • return 1

20
Dimensionamento dinamico
  • int intptr new int50
  • è equivalente a int intptr50
  • ma ci sono dei casi, qualora la dimensione
    di un vettore non sia nota a priori, in cui si
    può usare solo la prima forma. Possiamo infatti
    scrivere
  • int n
  • int intptr
  • cin ltlt n
  • intptr new intn
  • ma non
  • cin ltlt n
  • int intptrn // errore!

21
Allocazione dinamica della memoria
  • L'operatore new alloca la quantità di memoria
    richiesta per un oggetto di tipo o classe tipo e
    restituisce l'indirizzo dell'area di memoria
    riservata (puntatore).
  • Forma generale
  • new tipo

22
Delete
  • Per liberare memoria allocata dinamicamente si
    usa la keyword delete, ovvero
  • int intPtr
  • intPtr new int50
  • delete intPtr
Write a Comment
User Comments (0)
About PowerShow.com