66
1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

Embed Size (px)

Citation preview

Page 1: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

1

Corso di Informatica

(Programmazione)Esercitazione 3 (5 dicembre 2008)

Page 2: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

2

Esercizi sugli arrayEsercizio 1

dato un array A di N interi calcolare la

media e contare gli elementi > della media

Esempio (N=10)

8011020 40 46 60 4 92 15121

Risultato 58 (in realtà 58.8) e ci

sono 5 elementi superiori a 58

A

Page 3: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

3

Esercizi sugli arrayAlgoritmo: eseguo la somma S di tutti gli elementi

di A scandendo gli elementi di A dal primo (in

posizione 0) all’ultimo (in posizione N-1).

Divido poi S per la dimensione N ottenendo

la media M dei valori.

Esamino di nuovo uno alla volta gli elementi di A

dal primo all’ultimo e incremento di 1 un contatore

(variabile conta) ogni volta che la posizione i...

Page 4: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

4

Esercizi sugli array… contiene un valore A[i] > M.

Page 5: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

5

Esercizi sugli array

A

Esecuzione dell’algoritmo per l’array A di 10interi dell’esempio precedente:

- all’inizio ho somma=0- step 1 i=0 (i è l’indice che scandisce gli elementi di A)

somma = somma+A[0] = 0 + 80 = 80

8011020 40 46 60 4 92 15121

Page 6: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

6

Esercizi sugli array

A

- step 2 i=1

- step 3 i=2

8011020 40 46 60 4 92 15121

somma = somma+A[1] = 80 + 110 = 190

A 8011020 40 46 60 4 92 15121

somma = somma+A[2] = 190 + 20 = 210

Page 7: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

7

Esercizi sugli array

A

- step 4 i=3

- step 5 i=4

8011020 40 46 60 4 92 15121

somma = somma+A[3] = 210 + 40 = 250

A 8011020 40 46 60 4 92 15121

somma = somma+A[4] = 250 + 46 = 296

Page 8: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

8

Esercizi sugli array

A

- step 6 i=5

- step 7 i=6

8011020 40 46 60 4 92 15121

somma = somma+A[5] = 296 + 60 = 356

A 8011020 40 46 60 4 92 15121

somma = somma+A[6] = 356 + 4 = 360

Page 9: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

9

Esercizi sugli array

A

- step 8 i=7

- step 9 i=8

8011020 40 46 60 4 92 15121

somma = somma+A[7] = 360 + 92 = 452

A 8011020 40 46 60 4 92 15121

somma = somma+A[8] = 452 + 15 = 467

Page 10: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

10

Esercizi sugli array

A

- step 10 i=9

8011020 40 46 60 4 92 15121

somma = somma+A[9] = 467 + 121 = 588

- step 11calcolo la media:

M=somma / 10 = 588 /10 = 58 (arrotondoperché uso variabili intere)

Page 11: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

11

Esercizi sugli array

A

- step 12 conta = 0- step 13 i=0 (nuova inizializzazione di i)

- step 14 i=1

8011020 40 46 60 4 92 15121

A[0] è > 58? Sì! Quindi conta = conta + 1 = 0 + 1 = 1

A 8011020 40 46 60 4 92 15121

A[1] è > 58? Sì! Quindi conta = conta + 1 = 1 + 1 = 2

Page 12: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

12

Esercizi sugli array

A

- step 15 i=2

- step 16 i=3

8011020 40 46 60 4 92 15121

A[2] è > 58? NO! Quindi conta rimane a 2

A 8011020 40 46 60 4 92 15121

A[3] è > 58? NO! Quindi conta rimane a 2

Page 13: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

13

Esercizi sugli array

A

- step 17 i=4

- step 18 i=5

8011020 40 46 60 4 92 15121

A[4] è > 58? NO! Quindi conta rimane a 2

A 8011020 40 46 60 4 92 15121

A[5] è > 58? SI’! Quindi conta = conta + 1 = 2 +1 = 3

Page 14: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

14

Esercizi sugli array

A

- step 19 i=6

- step 20 i=7

8011020 40 46 60 4 92 15121

A[6] è > 58? NO! Quindi conta rimane a 3

A 8011020 40 46 60 4 92 15121

A[7] è > 58? SI’! Quindi conta = conta + 1 = 3 +1 = 4

Page 15: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

15

Esercizi sugli array

A

- step 21 i=8

- step 22 i=9

8011020 40 46 60 4 92 15121

A[8] è > 58? NO! Quindi conta rimane a 4

A 8011020 40 46 60 4 92 15121

A[9] è > 58? SI’! Quindi conta = conta + 1 = 4 +1 = 5

Page 16: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

16

Esercizi sugli arraypublic class CalcoloMedia {

public static void main(String arg[]) {int[] A={4,15,20,21,40,6,7,9,10,1};int i;int length;int somma=0, media=0, conta=0;

length=10;i=0;while(i <= lentgth-1){

somma=somma+A[i];i=i+1;

}media=somma/length;i=0;while(i <= lentgth-1){

if(A[I] > media){conta=conta+1;

}i=i+1;

}

System.out.println(conta+” elementi sono > di “+media);}

}

Page 17: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

17

Esercizi sugli arrayEsercizio 2

dato un array A di N interi verificare se A

contiene almeno 3 elementi consecutivi

Esempio (N=10)

Risultato il vettore contiene almeno

3 elementi consecutivi

8011040 40 40 60 4 92 15121A

Page 18: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

18

Esercizi sugli arrayAlgoritmo: dichiaro la variabile booleana

threeElements che all’inizio ha valore false (cioè

parto dall’ipotesi che l’array non abbia almeno 3

elementi consecutivi). Poi scandisco l’array dal

primo elemento (in posizione 0) a quello in

posizione N-3 (ovvero l’ultimo elemento dell’array

che è seguito da almeno 2 elementi), dove N è

la lunghezza dell’array.

Page 19: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

19

Esercizi sugli array…Se trovo che, per la posizione generica i,

A[i] è uguale a A[i+1] e A[i+1] è uguale a

A[i+2], allora posso dire che nell’array ci sono

almeno 3 elementi consecutivi. In tale caso

assegno true alla variabile threeElements e

interrompo la scansione dell’array.

Page 20: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

20

Esercizi sugli array

A

Esecuzione dell’algoritmo per l’array A di 10interi dell’esempio precedente:

- all’inizio threeElements è false- step 1 i=0 (i è l’indice che scandisce gli elementi di A)

A[0] è uguale a A[1] e A[1] è uguale a A[2]?NO! Allora proseguo

8011040 40 40 60 4 92 15121

Page 21: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

21

Esercizi sugli array

A

- step 2 i=1

- step 3 i=2

A[1] è uguale a A[2] e A[2] è uguale a A[3]?NO! Allora proseguo

A

A[2] è uguale a A[3] e A[3] è uguale a A[4]?SI’! Allora assegno true a threeElementse interrompo la scansione

8011040 40 40 60 4 92 15121

8011040 40 40 60 4 92 15121

Page 22: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

22

Esercizi sugli arraypublic class ThreeElements {

public static void main(String arg[]) {int[] A={4,15,20,21,40,6,7,9,10,1};int i;int length;boolean trhreeElements=false;

length=10;i=0;while(i <= lentgth-1 && threeElements == false){

if(A[i]==A[i+1] && A[i+1]==A[i+2]){threeElements=true;

}i=i+1;

}

System.out.print(“Ci sono 3 elementi consecutivi: “);System.out.println(trhreeElements);

}}

Page 23: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

23

Esercizi sugli arrayEsercizio 3

dato un array A di N interi e un intero k

verificare se A contiene k

Esempio (N=10, k=40)

Risultato il vettore contiene 40

8011039 12 40 60 4 92 15121A

Page 24: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

24

Esercizi sugli arrayAlgoritmo: dichiaro la variabile booleana

found che all’inizio ha valore false (cioè

parto dall’ipotesi che l’array non contenga l’intero

k). Poi scandisco l’array dal primo elemento

(in posizione 0) all’ultimo (in posizione N-1). Se

trovo una posizione i tale che A[i] è

uguale a k, allora assegno alla variabile found

il valore true e interrompo la scansione

Page 25: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

25

Esercizi sugli array

A

Esecuzione dell’algoritmo per l’array A di 10interi dell’esempio precedente:

- all’inizio found è false- step 1 i=0 (i è l’indice che scandisce gli elementi di A)

A[0] è uguale a 40? NO! Allora proseguo

8011039 12 40 60 4 92 15121

Page 26: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

26

Esercizi sugli array

A

- step 2 i=1

- step 3 i=2

A[1] è uguale a 40? NO! Allora proseguo

A

A[2] è uguale a 40? NO! Allora proseguo

8011039 12 40 60 4 92 15121

8011039 12 40 60 4 92 15121

Page 27: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

27

Esercizi sugli array

A

- step 4 i=3

- step 5 i=4

A[3] è uguale a 40? NO! Allora proseguo

A

A[2] è uguale a 40? SI’! Allora assegno true afound e interrompo la scansione

8011039 12 40 60 4 92 15121

8011039 12 40 60 4 92 15121

Page 28: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

28

Esercizi sugli arraypublic class SearchK {

public static void main(String arg[]) {int[] A={4,15,20,21,40,6,7,9,10,1};int i, k;int length;boolean found=false;

length=10;i=0;k=40;while(i <= lentgth-1 && found == false){

if(A[i]==k){found=true;

}i=i+1;

}

System.out.print(“Trovato: “+found);}

}

Page 29: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

29

Esercizi sugli arrayNOTA BENE: il programma precedente vale

anche nel caso in cui A sia un array di caratteri

e al posto dell’intero k ci sia un carattere c.

La modifica del codice è contenuta nella

slide successiva.

Page 30: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

30

Esercizi sugli arraypublic class SearchChar {

public static void main(String arg[]) {char[] A={‘a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’,’i’,’l’};int i;char c;int length;boolean found=false;

length=10;i=0;c=‘b’;while(i <= lentgth-1 && found == false){

if(A[i]==c){found=true;

}i=i+1;

}

System.out.print(“Trovato: “+found);}

}

Page 31: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

31

Esercizi sugli arrayEsercizio 4

dato un array A di N interi e un intero k

contare le occorrenze di k in A

Esempio (N=10, k=40)

Risultato 40 compare 3 volte

80 40 39 12 40 60 4 92 40121A

Page 32: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

32

Esercizi sugli arrayAlgoritmo: dichiaro la variabile intera

count che alla fine conterrà il numero di

occorrenze di k in A. Poi scandisco l’array

dal primo elemento (in posizione 0) all’ultimo

(in posizione N-1) e incremento di 1 la variabile

count ogni volta che incontro una posizione i

in cui A[i] è uguale a k.

Page 33: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

33

Esercizi sugli array

A

Esecuzione dell’algoritmo per l’array A di 10interi dell’esempio precedente:

- all’inizio count è 0- step 1 i=0 (i è l’indice che scandisce gli elementi di A)

A[0] è uguale a 40? NO! Allora proseguo

80 40 39 12 40 60 4 92 40121

Page 34: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

34

Esercizi sugli array

A

- step 2 i=1

- step 3 i=2

A[1] è uguale a 40? SI’! Allora count = count +1= 0 + 1 = 1

A

A[2] è uguale a 40? NO! Allora count rimane a 1

80 40 39 12 40 60 4 92 40121

80 40 39 12 40 60 4 92 40121

Page 35: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

35

Esercizi sugli array

A

- step 4 i=3

- step 5 i=4

A[3] è uguale a 40? NO! Allora count rimane a 1

A

A[4] è uguale a 40? SI’! Allora count = count + 1= 1 + 1 = 2

80 40 39 12 40 60 4 92 40121

80 40 39 12 40 60 4 92 40121

Page 36: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

36

Esercizi sugli array

A

- step 6 i=5

- step 7 i=6

A[5] è uguale a 40? NO! Allora count rimane a 2

A

A[6] è uguale a 40? NO! Allora count rimane a 2

80 40 39 12 40 60 4 92 40121

80 40 39 12 40 60 4 92 40121

Page 37: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

37

Esercizi sugli array

A

- step 8 i=7

- step 9 i=8

A[7] è uguale a 40? NO! Allora count rimane a 2

A

A[8] è uguale a 40? SI’! Allora count = count + 1= 2 + 1 = 3

80 40 39 12 40 60 4 92 40121

80 40 39 12 40 60 4 92 40121

Page 38: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

38

Esercizi sugli array

A

- step 10 i=9

A[9] è uguale a 40? NO! Allora count rimane a 3

80 40 39 12 40 60 4 92 40121

Page 39: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

39

Esercizi sugli arraypublic class CountK {

public static void main(String arg[]) {int[] A={4,15,20,21,40,6,7,9,10,1};int i, k;int length, count;

length=10;i=0;k=40;count=0;while(i <= lentgth-1){

if(A[i]==k){count=count+1;

}i=i+1;

}

System.out.print(“Occorrenze=“+count);}

}

Page 40: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

40

Esercizi sugli arrayNOTA BENE: il programma precedente vale

anche nel caso in cui A sia un array di caratteri

e al posto dell’intero k ci sia un carattere c.

La modifica del codice è contenuta nella

slide successiva.

Page 41: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

41

Esercizi sugli arraypublic class CountChar {

public static void main(String arg[]) {char[] A={‘a’,’b’,’c’,’a’,’e’,’f’,’a’,’h’,’i’,’l’};int i;char c;int length, count;

length=10;i=0;c=‘a’;count=0;while(i <= lentgth-1){

if(A[i]==c){count=count+1;

}i=i+1;

}

System.out.print(“Occorrenze=“+count);}

}

Page 42: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

42

Esercizi sugli arrayEsercizio 5

dato un array A di N interi e un intero k

verificare che tutti gli elementi sono < k

Esempio (N=10, k=40)

Risultato non tutti gli elementi

sono < 40

30 25 39 12 40 60 4 92 40121A

Page 43: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

43

Esercizi sugli arrayAlgoritmo: dichiaro la variabile booleana ok che

inizializzo a true in quanto faccio l’ipotesi che

tutti gli elementi di A siano < k. Poi scandisco

l’array dal primo elemento (in posizione 0)

all’ultimo (in posizione N-1) e se trovo

una posizione i in cui A[i] >= k, allora la mia ipotesi

di partenza è falsa, quindi assegno alla variabile

ok il valore false e interrompo la scansione.

Page 44: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

44

Esercizi sugli array

A

Esecuzione dell’algoritmo per l’array A di 10interi dell’esempio precedente:

- all’inizio ok è true- step 1 i=0 (i è l’indice che scandisce gli elementi di A)

A[0] è < 40? SI’! Allora proseguo

30 25 39 12 40 60 4 92 40121

Page 45: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

45

Esercizi sugli array

A

- step 2 i=1

- step 3 i=2

A[1] è < 40? SI’! Allora proseguo

A

A[3] è < 40? SI’! Allora proseguo

30 25 39 12 40 60 4 92 40121

30 25 39 12 40 60 4 92 40121

Page 46: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

46

Esercizi sugli array

A

- step 4 i=3

- step 5 i=4

A[3] è < 40? SI’! Allora proseguo

A

A[4] è < 40? NO! Allora false a ok e interrompo

30 25 39 12 40 60 4 92 40121

30 25 39 12 40 60 4 92 40121

Page 47: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

47

Esercizi sugli arraypublic class CheckLessThanK {

public static void main(String arg[]) {int[] A={4,15,20,21,40,6,7,9,10,1};int i, k;int length;boolean ok=true;

length=10;i=0;k=40;while(i <= lentgth-1 && ok == true){

if(A[i]>=k){ok=false;

}i=i+1;

}

System.out.print(“Sono tutti < k: “+ok);}

}

Page 48: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

48

Esercizi sugli arrayNOTA BENE: il programma precedente può

essere esteso agli altri tipi di confronto:

- Verifica che tutti gli elementi sono uguali a k

il test dell’if diventa: A[i] != k

- Verifica che tutti gli elementi sono diversi da k

il test dell’if diventa: A[i] == k

- Verifica che tutti gli elementi sono > k

il test dell’if diventa: A[i] <= k

Page 49: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

49

Esercizi sugli array...

- Verifica che tutti gli elementi sono <= k

il test dell’if diventa: A[i] > k

- Verifica che tutti gli elementi sono >= k

il test dell’if diventa: A[i] < k

Page 50: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

50

Esercizi sugli arrayEsercizio 6

dato un array A di N interi scambiare il

l’elemento in posizione I (compresa tra 0

e N-1) con l’elemento in posizione j

(compresa tra 0 e N-1) diversa da i

Page 51: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

51

Esercizi sugli arrayEsempio (N=10, i=0, j=9)

30 25 39 12 40 60 4 92 40121A

12125 39 12 40 60 4 92 40 30

Page 52: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

52

Esercizi sugli arrayAlgoritmo: dichiaro la variabile intera help che

mi serve per conservare il valore di A[i] prima

di sovrascriverlo con A[j]. Poi assegno a A[i]

il valore di A[j] e a A[j] il valore di help a cui

era stato assegnato il valore originale di A[i].

Page 53: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

53

Esercizi sugli array

A

Esecuzione dell’algoritmo per l’array A di 10interi dell’esempio precedente:

- step 1 help = A[0]- step 2 A[0] = A[9]

12125 39 12 40 60 4 92 40121

- step 3 A[9] = help

A 12125 39 12 40 60 4 92 40 30

Page 54: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

54

Esercizi sugli arraypublic class Scambia {

public static void main(String arg[]) {int[] A={4,15,20,21,40,6,7,9,10,1};int i, j;int length, help;

length=10;i=0;j=9;help=A[i];A[i]=A[j];A[j]=help;

}}

Page 55: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

55

Esercizi sugli arrayEsercizio 6

dato un array A di N invertire gli elementi

di A

Esempio (N=10)

30 25 39 12 40 60 4 92 40121A

12140 92 4 60 40 12 39 25 30A

Page 56: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

56

Esercizi sugli arrayAlgoritmo: eseguo uno scambio dell’elemento in

posizione i e del suo simmetrico in posizione

N-i-1. Questo scambio lo faccio per tutte le

posizioni i che vanno da 0 a N/2-1

Page 57: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

57

Esercizi sugli array

A

Esecuzione dell’algoritmo per l’array A di 10interi dell’esempio precedente:

- step 1 i=0 (i è l’indice che scandisce gli elementi di A)

scambio A[0] con A[9]

30 25 39 12 40 60 4 92 40121

12125 39 12 40 60 4 92 40 30

Page 58: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

58

Esercizi sugli array

A

- step 2 i=1

scambio A[1] con A[8]

12125 39 12 40 60 4 92 40 30

12140 39 12 40 60 4 92 25 30

Page 59: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

59

Esercizi sugli array

A

- step 3 i=2

scambio A[2] con A[7]

12140 39 12 40 60 4 92 25 30

12140 92 12 40 60 4 39 25 30

Page 60: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

60

Esercizi sugli array

A

- step 4 i=3

scambio A[3] con A[6]

12140 92 12 40 60 4 39 25 30

12140 92 4 40 60 12 39 25 30

Page 61: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

61

Esercizi sugli array

A

- step 5 i=4 (N/2-1=10/2-1=4)

scambio A[4] con A[5]

12140 92 4 40 60 12 39 25 30

12140 92 4 60 40 12 39 25 30

Risultato finale

Page 62: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

62

Esercizi sugli arraypublic class InvertArray {

public static void main(String arg[]) {int[] A={4,15,20,21,40,6,7,9,10,1};int i;int length;int help;

length=10;i=0;while(i <= lentgth/2-1){

help=A[i];A[i]=A[j];A[j]=help;i=i+1;

}}

}

Page 63: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

63

Esercizi sugli arrayNOTA BENE: il programma precedente vale

anche nel caso in cui N sia dispari. Le posizioni

da scambiare sono sempre I e N-I-1 con

I che va da 0 a N/2-1, in quanto esiste un

elemento centrale in posizione N/2 che rimane

fisso nella stessa posizione.

Page 64: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

64

Esercizi sugli arrayEsercizio 7

dato un array A di N calcolare per ogni A[i]

la somma dei primi A[i] interi (da 1 a A[i])

Esempio (N=10)

30 25 39 12 40 60 4 92 40121A

per i=0, calcolo 1+2+3+…+30per i=1, calcolo 1+2+3+…+25...

Page 65: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

65

Esercizi sugli arrayAlgoritmo: eseguo una scansione di A per i che va

da 0 a N-1 e per ogni A[i] eseguo un ciclo più

interno che calcola la somma 1+2+3+…A[i].

Page 66: 1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

66

Esercizi sugli arraypublic class InvertArray {

public static void main(String arg[]) {int[] A={4,15,20,21,40,6,7,9,10,1};int i, j;int length;int somma;

length=10;i=0;while(i <= lentgth-1){

j=1;somma=0;while(j<=A[i]){

somma=somma+j;j=j+1

}System.out.println(“Somma=“+somma);i=i+1;

}}

}