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 >
Text File  |  1999-05-10  |  2KB  |  63 lines

  1. Esercizi di programmazione
  2. --------------------------
  3.  
  4. Scrivere dei programmi C per risolvere i seguenti problemi (in ordine di difficolt\`a).
  5. 1) Studiate i vari casi particolari delle istruzioni C (ad esempio while e for senza istruzioni
  6.    nel corpo) e trovate esempi in cui si possono utilizzare. 
  7. 2) Studiate il comportamento delle assegnazioni all'interno di espressioni 
  8.    (ad esempio, definire un programma di prova per verificare la  differenza tra 
  9.    ((a=c++)>0) e ((a=++c)>0) ecc.). Studiate il funzionamemnto delle 
  10.    espressioni booleane (short circuit).           
  11. 3) Data una sequenza di N  numeri in input, produrre una tabella con il 
  12.    numero di  occorrenze di ogni componente nell'input  
  13.    Se l'input \`e 12 9 4 9: 
  14.          12 --> 1 
  15.           9 --> 2
  16.           4 --> 1
  17. 4) Leggere una stringa di caratteri e produrre come output la stringa
  18.    ottenuta togliendo tutti i caratteri compresi tra due '*' (scorrendo la lista da sinistra a destra).
  19.    Ad esempio: "abc*fgh*ert*il*koo*" ---> "abcertkoo*" (commenti tra '*'). 
  20. 5) Aggiungere il controllo di bilanciamento di '*'. 
  21. 6) Data una stringa in input controllare se ha la seguente forma:
  22.    a1 a2...ai a{i+1} ai...a2 a_1 (palindrome).
  23. 7) Data una matrice di 0(casella vuota) e 1(casella libera) che 
  24.    rappresenta un  
  25.    labirinto, e date le coordinate dell'entrata e dell'uscita, definire un programma 
  26.    che trova il cammino dall'entrata all'uscita (se esiste) e stampa in successione
  27.    le coordinate delle caselle che compongono il cammino. 
  28. 8) Dato un array A di N elementi, e un array S (da 1..N a 1..N) che 
  29.    rappresenta una permutazione degli indici 1..N, applicare la  
  30.    permutazione S ad A possibilmente senza l'ausilio di un array di appoggio.               
  31. 9) Mergesort(k): definite una versione generalizzata di mergesort nella 
  32.    quale si spezza l'array da ordinare in k-parti (k>=2 intero).         
  33. 10) Dato n>= 2 intero in input produrre il seguente output:
  34.  
  35. Per n=1
  36.     
  37.      1 
  38.  
  39. Per n=2  
  40.      
  41.       2
  42.      212
  43.     22222
  44.  
  45. Per n=3
  46.  
  47.       3
  48.      323
  49.     32123     
  50.    3222223
  51.   333333333     
  52.  
  53. ecc. 
  54. Cioe' dato il triangolo interno costruito al passo i-esimo, al passo i+1-esimo 
  55. occorre aggiungere un ulteriore triangolo che ha come lati sequenze del 
  56. numero i+1.  
  57.  
  58.  
  59. 11) Ridefinite l'algoritmo di mergesort utilizzando 
  60.    la compatibilit'a tra array e puntatori e l'aritmetica dei puntatori:
  61.    invece di operare sugli indici operate sui puntatori. 
  62.  
  63.