[C++ o altro] Esercizi di allenamento

Messaggioda apatriarca » 28/04/2015, 03:19

Siccome non riesco a dormire e si è di recente discusso di problemi di programmazione che escono nei colloqui di lavoro, ecco alcuni esercizi che chi vuole può provare a svolgere. Non fornirò soluzioni, ma commenterò i tentativi come se fosse un esercizio d'esame o un colloquio. Siccome più di un utente potrebbe voler provare a risolvere gli esercizi, credo sia opportuno che le soluzioni siano inserite in spoiler.. Gli esercizi sono pensati per il C o C++, ma potrebbero avere senso anche per altri linguaggi.

1. Siccome l'inversione delle stringhe sembra essere stranamente comune nei colloqui, ecco una sua variante. Scrivere una funzione che data una stringa in UTF-8, restituisca una stringa che ne è l'inversa. Data cioè ad esempio la stringa "ci@o", deve restituire "o@ic". Entrambe le stringhe vengono passate come argomento alla funzione. src sarà la stringa in ingresso e dst quella in uscita.
Codice:
void ut8reverse(char * restrict dst, const char * restrict src);


2. Questo è un problema un po' più lungo e difficile. Scrivere un programma che legge tutte le parole da un file di testo e le stampa ordinate per frequenza in un secondo file. Ogni riga dell'output dovrà contenere una parola e la sua frequenza. Se ad esempio abbiamo come input un file di testo contenente "ciao ciao mondo ciao", l'output dovrà essere
Codice:
ciao 3
mondo 1

I nomi dei due file vanno passati come argomenti da linea di comando.

3. In questa versione dell'esercizio precedente si vuole sapere anche la parola che più comunemente segue quella considerata. Nel caso precedente si dovrà avere come output:
Codice:
ciao 3 ciao
mondo 1 ciao


4. Scrivere un programma che stampi l'ora corrente usando le cifre rappresentate nel modo seguente (o qualcosa di simile):
Codice:
 ###   ###  ####  ##### #   #  ####  #### #####  ###   ###
#   #    #      #     # #   # #     #        ## #   # #   #
#   #    #      #     # #   # #     #        #  #   # #   #
#   #    #   ###   ####  ####  ###  ####    ##   ###   ####
#   #    #  #         #     #     # #   #   #   #   #     #
#   #    #  #         #     #     # #   #  ##   #   #     #
 ###    ###  #### #####     # ####   ###   #     ###  ####


5. La notazione ternaria bilanciata è un sistema numerico in base 3 in cui le cifre sono +1, 0 e -1. Scrivere due funzioni che convertano un numero intero da notazione decimale a notazione ternaria bilanciata e viceversa. Per rappresentare le cifre della notazione ternaria, usare "+-0". Per esempio, \(8 = 3^3 - 3^0 = +0-\).

6. Scrivere un interprete per Brainfuck.

Direi che per il momento mi fermo qui. Per il momento direi che sono abbastanza facili, ma se qualcuno desidera sfide più impegnative posso inventarmene degli altri..
apatriarca
Moderatore
Moderatore
 
Messaggio: 3781 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite