# STRUTTURE DATI COMPLESSE: VETTORI E STRINGHE Argomenti: vettori di tipi primitivi, accesso agli elementi, esplorazione di un vettore, vettori parzialmente riempiti, ordinamento di vettori, le stringhe: definizione, utilizzo, funzioni predefinite (puts e gets) per il loro uso; vettori multidimensionali (matrici); passaggio di vettori alle funzioni. ### Esercizio 5.1 Scrivere queste funzioni di utilità e un main per provarle: - a) una funzione riempi che dato un vettore di numeri reali e la sua dimensione chiede all’utente di inserire tanti valori quanti sono necessari a riempirlo. - b) una funzione riempiRandom che riempie un vettore di dimensione data di valori casuali compresi tra min e max (passati pure loro) - c) una funzione che dato un numero intero lo scopone nei suoi fattori primi e riempie con essi un vettore di dimensioni adeguate - d) una funzione che riempie un vettore di 100 numeri interi con i primi 100 numeri primi - e) una funzione che dato un vettore di 100 numeri interi ne stampa il contenuto ORDINATAMENTE su cinque colonne - f) una funzione che dato un vettore lo riordina in senso crescente con il metodo del selection sort (cerca il più piccolo e lo mette al primo posto, poi cerca il più piccolo tra i rimanenti e lo mette al secondo posto...) - g) una funzione che calcola la media degli elementi presenti in un vettore. - h) una funzione che dato un vettore restituisce quanti elementi sono maggiori della loro media - i) una funzione che scompone un numero intero nei suoi fattori primi e li memorizza in un vettore fornito in input alla funzione stessa assieme al numero. Restituisce quanti fattori sono stati memorizzati (ad esempio: se il numero è 36 memorizza 2, 2, 3, 3 nelle prime quattro celle del vettore e restituisce 4. - j) una funzione che dati due numeri calcola il loro MCD, usando la funzione del punto precedente - k) una funzione che dati due numeri calcola il loro mmc, usando la funzione del punto i) - l) una funzione che dato un numero intero fornisce il numero di fattori primi e il numero di fattori primi distinti (attenzione: deve restituire in qualche modo DUE valori. ### Esercizio 5.2 Scrivere un programma che richiede l'introduzione di 20 numeri interi e produce due vettori, uno che contiene i numeri primi che sono stati introdotti e l'altro gli altri. Dopo richiede all'utente quale dei due vettori deve stampare e produce la visualizzazione richiesta. ### Esercizio 5.3 Scrivere queste funzioni di utilità e un main per provarle: - a) data una stringa restituisce quante vocali contiene. - b) data una stringa ne rovescia il contenuto - c) data una stringa la copia su una seconda stringa rovesciata - d) date due stringhe copia la seconda sulla prima; restituisce quanti caratteri ha copiato; - e) date due stringhe copia la seconda sulla prima ma omettendo le ripetizioni di caratteri; - f) date due stringhe copia la seconda sulla prima mettendo però i caratteri in ordine crescente di codice ASCII; - g) date due stringhe accoda la seconda sulla prima; restituisce la nuova lunghezza della prima stringa. - h) date due stringhe cerca se la seconda è presente all’interno della prima. Se sì restituisce la posizione del primo carattere, altrimenti -1; - i) date due stringhe cerca se la seconda è presente all’interno della prima e restituisce il numero di occorrenze; - j) date due stringhe cerca se la seconda è presente all’interno della prima e la elimina da essa. > Attenzione: possono esserci più occorrenze. - k) Data una stringa e un vettore di 256 interi lo riempie con le occorrenze di ciascuno dei codici ASCII nella stringa. - l) Data una stringa converte tutte le lettere minuscole nelle corrispondenti maiuscole - m)Data una stringa contenente solo cifre restituisce il corrispondente valore intero - n) Dato un numero intero produce una stringa con i separatori delle migliaia (1234 diventa “1.234”). ### Esercizio 5.5 Scrivere una funzione criypt che codifica una stringa in modo da renderla illeggibile a chi non conosce la parola d’ordine di cifratura: ogni lettera della stringa iniziale viene codificata aggiungendo: alla prima la prima lettera della parola d’ordine (es: ‘a’ + ‘c’ diventa ‘d’, ‘y’ + ‘b’ diventa ‘a’); alla seconda la seconda lettera della parola d’ordine e così via. Finita la parola d’ordine si ricomincia. In una prima versione spazi, virgole e caratteri non alfabetici non si toccano. Scrivere poi l’algoritmo e la funzione di decodifica dell’esercizio precedente.