Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Con gli Array Prof. Carla Fanchin a.s. 2009/10
ALGORITMI NOTEVOLI Con gli Array Prof. Carla Fanchin a.s. 2009/10
2
RICERCA ZORRO STREGA MAGO ROSPO ZUCCA GNOMO
ARRAY DEI COSTUMI PRESENTI ALLA FESTA Qualcuno alla festa ha il costume da … ZORRO STREGA MAGO ROSPO ZUCCA GNOMO COSTUMECERCATO (dato in input)
3
RICERCA ZUCCA STREGA MAGO ROSPO ZUCCA GNOMO 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]
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");
6
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");
7
ELENCO senza RIPETIZIONI
STREGA MAGO Quanti sono i costumi (diversi) che si sono presentati alla festa ?
8
ELENCO senza RIPETIZIONI
j=0 STREGA MAGO 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++ }
9
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 ] )
10
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
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.