50 lines
4.4 KiB
Markdown
50 lines
4.4 KiB
Markdown
# 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. |