home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.disi.unige.it
/
2015-02-11.ftp.disi.unige.it.tar
/
ftp.disi.unige.it
/
pub
/
.person
/
CataniaB
/
teach-act
/
esercizi
/
esercizi-progr.txt
< prev
next >
Wrap
Text File
|
1999-05-10
|
2KB
|
63 lines
Esercizi di programmazione
--------------------------
Scrivere dei programmi C per risolvere i seguenti problemi (in ordine di difficolt\`a).
1) Studiate i vari casi particolari delle istruzioni C (ad esempio while e for senza istruzioni
nel corpo) e trovate esempi in cui si possono utilizzare.
2) Studiate il comportamento delle assegnazioni all'interno di espressioni
(ad esempio, definire un programma di prova per verificare la differenza tra
((a=c++)>0) e ((a=++c)>0) ecc.). Studiate il funzionamemnto delle
espressioni booleane (short circuit).
3) Data una sequenza di N numeri in input, produrre una tabella con il
numero di occorrenze di ogni componente nell'input
Se l'input \`e 12 9 4 9:
12 --> 1
9 --> 2
4 --> 1
4) Leggere una stringa di caratteri e produrre come output la stringa
ottenuta togliendo tutti i caratteri compresi tra due '*' (scorrendo la lista da sinistra a destra).
Ad esempio: "abc*fgh*ert*il*koo*" ---> "abcertkoo*" (commenti tra '*').
5) Aggiungere il controllo di bilanciamento di '*'.
6) Data una stringa in input controllare se ha la seguente forma:
a1 a2...ai a{i+1} ai...a2 a_1 (palindrome).
7) Data una matrice di 0(casella vuota) e 1(casella libera) che
rappresenta un
labirinto, e date le coordinate dell'entrata e dell'uscita, definire un programma
che trova il cammino dall'entrata all'uscita (se esiste) e stampa in successione
le coordinate delle caselle che compongono il cammino.
8) Dato un array A di N elementi, e un array S (da 1..N a 1..N) che
rappresenta una permutazione degli indici 1..N, applicare la
permutazione S ad A possibilmente senza l'ausilio di un array di appoggio.
9) Mergesort(k): definite una versione generalizzata di mergesort nella
quale si spezza l'array da ordinare in k-parti (k>=2 intero).
10) Dato n>= 2 intero in input produrre il seguente output:
Per n=1
1
Per n=2
2
212
22222
Per n=3
3
323
32123
3222223
333333333
ecc.
Cioe' dato il triangolo interno costruito al passo i-esimo, al passo i+1-esimo
occorre aggiungere un ulteriore triangolo che ha come lati sequenze del
numero i+1.
11) Ridefinite l'algoritmo di mergesort utilizzando
la compatibilit'a tra array e puntatori e l'aritmetica dei puntatori:
invece di operare sugli indici operate sui puntatori.