====== Esercitazione 5 bis ======
===== Esercizio 0: Equazioni di secondo grado =====
Scrivere un programma C che legge da standard input i coefficienti ''a,b,c'' di una equazione di secondo grado
a * x^2 + b * x + c = 0
ne calcola le radici seguendo la traccia in {{:fisica:informatica:201415:esercitazioni:eserciziopolinomio.pdf|questo documento}}
===== Esercizio 1: Eco =====
Scrivere un programma C che legge una stringa che non contiene spazi da standard input la ristampa sullo standard output come in
$ ./eco
Inserisci una stringa:
se digito ''pippo'' e ritorno carrello (''\n'') ottengo
$ ./eco
Inserisci una stringa: pippo
Ho letto : pippo
Inserisci una stringa:
l'elaborazione termina digitando End OF File (CTRL-D).
===== Esercizio 2: Stampa cifre decimali =====
Scrivere un programma C che legge dallo standard input un numero intero positivo ''X'' e stampa le cifre decimali del numero, una per linea (separate da ''\n'') sullo standard output.
===== Esercizio 3: Stampa cifre binarie =====
Scrivere un programma C che legge un intero ''X'' (tipo ''int'') da standard input e stampa sullo standard output le cifre della sua rappresentazione in complemento a due.
//Suggerimento//: utilizzare gli operatori bit a bit di shift (<<,>>), complemento(~), and(&), or(|), xor (^) per ricavare le cifre dalla rappresentazione interna di ''X'' come ''int'' senza ricalcolarla.
===== Esercizio 4: Bilanciamento delle parentesi =====
Scrivere un programma C che legge dallo standard input una sequenza di caratteri (terminata da EOF) e stabilisce se l'insieme dei caratteri utilizza in modo appropriato le parentesi graffe tonde e quadre ovvero
* se il numero delle parentesi aperte e chiuse coincide e
* se la parentesi aperta precede sempre la parentesi chiusa.
Ad esempio:
{lkshaj[nnnn()]}{}
e' una sequenza corretta, mentre
{lkshaj][nnnn()}{}
e' scorretta.
Utilizzare ''getchar()'' per leggere i caratteri uno ad uno, la funzione restituisce EOF quando lo stream e' finito (vedi ''man getchar'').
Inserendo manualmente i caratteri EOF puo' essere generato utilizzando la combinazione di tasti CONTROL-D.
Quando il programma e' funzionante, verificare il bilanciamento delle parentesi del programma stesso utilizzando la redirezione. Ad esempio, se l'eseguibile relativo al mio programma si chiama ''checkpar'', e il sorgente si trova nel file checkpar.c, provare ad eseguire
bash$ ./checkpar < checkpar.c
===== Esercizio 5: Operatori logici =====
Fornire delle espressioni logiche equivalenti alle seguenti senza usare la negazione (''!'')
!(a > b)
!(a <= b && c <= d )
!(a + 1 == b + 1)
!(a < 1 || b < 2 && c < 3)
Verificare la bontà della soluzione fornita stampando sullo standard output le [[http://it.wikipedia.org/wiki/Tabella_della_verit%C3%A0 | tabelle di verità ]] per tutte le coppie di espressioni equivalenti.
===== Esercizio 6: Calcolo delle potenze di 2 =====
Scrivere un programma C che legge da standard input un numero intero positivo ''n'' (''n<=30'') e calcola l'n-esima potenza di 2 (2 elevato ad n) utilizzando gli operatori di shift (''<<'' o ''>>'').