-
[20] Scrivere una funzione
int sumVect (int s[ ], int n)
che riceva in ingresso un array e la sua lunghezza, e restituisca la
somma degli elementi dell'array. Aggiungere un semplice programma per
testarla.
Soluzione: sumVect.c.
-
[21] Scrivere una funzione void sostituisci(char a[ ], int n, char c, char
d) che riceva come parametri una stringa, la sua
lunghezza, un carattere c
da sostituire ed il carattere
d con cui rimpiazzarlo e sostituisca tutte
le occorrenze del primo carattere nella stringa con il secondo
carattere. Aggiungere un semplice programma per testarla.
-
[22] Scrivere una funzione int binToInt(char a[ ], int n) che
riceva come parametri una stringa che rappresenta un numero in
notazione binaria, la lunghezza della stringa n, e restituisca il corrispondente
valore intero decimale associato alla stringa. Se la stringa passata
come argomento contiene caratteri diversi da '0' e '1' la funzione deve restituire il
valore -1 per segnalare un
errore. Aggiungere un semplice programma per testarla.
Esempio: l'invocazione
binToInt("101011", 6)
deve restituire il valore 43
ottenuto come:
1*25 + 0*24 + 1*23 + 0*22 + 1*21 + 1*20 =
1*32 + 0*16 + 1*8 + 0*4 + 1*2 + 1*1 =
32 + 8 + 2 + 1 =
43
Soluzione: binToInt.c.
-
[23] Scrivere una funzione void ordina(int a[ ], int n) che
riceva come parametri un array di interi e la sua lunghezza, e
sfrutti un algoritmo di ordinamento efficiente per ordinare gli
elementi del vettore in ordine decrescente (alla fine il massimo
deve trovarsi in posizione 0, il minimo in posizione n-1). Aggiungere un semplice
programma per testarla.
-
[24] Sono corrette le seguenti dichiarazioni di
variabili e comandi? E che valore assume tmp alla fine di ogni comando?
int a[4] = {9, 8, 7, 6}, *p = a, tmp;
tmp = *(a + 2);
tmp = p[3];
tmp = (--)p[3];
for (tmp = 0, p = a; p < a + 4; p++) {
tmp += *p;
}
-
[25] Una carta è definita da un valore e
da un seme. Definire un tipo derivato opportuno per rappresentare un
mazzo di 40 carte. Definire una funzione mescola (con opportuni argomenti e
tipo) che simula il mescolamento di un mazzo di carte sfruttando il
generatore di numeri pseudocasuali. Completare l'esercizio scrivendo
un programma che crea un mazzo di carte, lo mescola e stampa tutte le
carte nell'ordine risultante dal mescolamento.
-
[26] Alcuni programmi che abbiamo realizzato
richiedevano l'input di valori positivi, che abbiamo risolto
mediante l'uso di un opportuno ciclo per assicurarci che il valore
letto fosse positivo (e ripetere la lettura in caso
contrario). Scrivere una funzione void
scanpos(int *) che effettua la lettura di un valore
positivo e lo memorizza nella variabile intera il cui indirizzo
è stato passato come parametro. Aggiungere un semplice
programma per testarla.
|