Indice
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 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 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 »
).