100 likes | 350 Views
ALGORITMI NOTEVOLI. Con gli Array Prof. Carla Fanchin a.s. 2009/10. RICERCA. ARRAY DEI COSTUMI PRESENTI ALLA FESTA. Qualcuno alla festa ha il costume da …. COSTUMECERCATO (dato in input). RICERCA. CERCATO. PRIMO TENTATIVO (SBAGLIATO!!!) FOR (i=0;i<5;i++) {
E N D
ALGORITMI NOTEVOLI Con gli Array Prof. Carla Fanchin a.s. 2009/10
RICERCA ARRAY DEI COSTUMI PRESENTI ALLA FESTA Qualcuno alla festa ha il costume da … COSTUMECERCATO (dato in input)
RICERCA CERCATO PRIMO TENTATIVO (SBAGLIATO!!!) FOR (i=0;i<5;i++) { IF ( CERCATO==COSTUMI[i] ) cout << “Trovato” << endl; ELSE cout << “NON Trovato” << endl; } Array COSTUMI[5]
Soluzione 1 (flag TROVATO) #include <iostream> #include <stdio.h> using namespace std; int main() { string COSTUME[5]={"STREGA","MAGO","ROSPO","ZUCCA","GNOMO"}; int i; string CERCATO="ZUCCA"; bool TROVATO=false; for (i=0;i<5;i++) { if ( CERCATO==COSTUME[i] ) TROVATO=true; } // FUORI dal ciclo if ( TROVATO==true ) cout << "Trovato" << endl; else cout << "NON Trovato" << endl; system("pause"); }
Soluzione 2 – Contatore di “non trovato” #include <iostream> #include <stdio.h> using namespace std; int main() { string COSTUME[5]={"STREGA","MAGO","ROSPO","ZUCCA","GNOMO"}; int i; string CERCATO="ZUCCA"; int CONTA=0; for (i=0;i<5;i++) { if ( CERCATO==COSTUME[i] ) cout << "Trovato" << endl; else CONTA++; } // FUORI dal ciclo if ( CONTA==5 ) cout << "NON trovato" << endl; system("pause"); }
ELENCO senza RIPETIZIONI Quanti sono i costumi (diversi) che si sono presentati alla festa ?
ELENCO senza RIPETIZIONI i=0 j=0 Devo utilizzare un array di appoggio, della stessa dimensione di quello originale (nel caso in cui i costumi fossero TUTTI diversi). Devo scorrere il primo array (con indice i) e per ogni elemento effettuare una RICERCA (v. algoritmo precedente) nel secondo If (trovato==false) { vett2[ j] = vett1 [i] ; j++ }
ORDINAMENTO ( algoritmo classico a CICLI FISSI, considerando che il primo elemento abbia indice 1 e che l’array abbia n elementi) FOR i = 1 TO (n – 1) FOR j = (i + 1) TO n if vett [ i ] > vett [ j ] SWAP (vett [ i ] , vett [ j ] )
NB. Cicli FOR annidati FOR i = 1 TO 10 FOR j = 1 TO 10 write ( i , j) Output prodotto: 1,1 – 1, 2 - …… - 1, 10 2,1 – 2, 2 - …… - 2, 10 … 10, 1 - …………..10, 10