Strumenti Utente

Strumenti Sito


fisica:informatica:201617:esercitazione4

Esercitazione 5 bis

Esercizio 1: 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 2: Ancora equazioni di secondo grado

Scrivere una funzione che ha come parametri i coefficienti a,b,c di una equazione di secondo grado

a * x^2 + b * x + c = 0

e restituisce come valore -1 se l'equazione non ha radici reali, 0 se ha radici reali coincidenti e 1 se ha due radici reali distinte. Provare la funzione con un opportuni programma main.

Esercizio 3: 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 4: Stampa cifre decimali

Scrivere una funzione C che prende come parametro un numero intero positivo e stampa le cifre decimali del numero su standard output, una per linea (separate da \n). Provare la funzione con un opportuno programma main(). Ad esempio 510 provoca la seguente stampa:

5
1
0

Esercizio 5: Operatori logici

Stampare su standard output la tabelle di verità delle seguenti espressioni booleane

!(a > b)
!(a <= b && c <= d )
!(a + 1 == b + 1)
!(a < 1 || b < 2 && c < 3)

Sapete trovare delle formulazini equivalenti che non usano il not (!) ? In caso verificate la bontà della soluzione fornita stampando sullo standard output le tabelle di verità per tutte le coppie di espressioni equivalenti che avete trovato..

Esercizio 6: 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 7: (avanzato) Calcolo delle potenze di 2

Scrivere una funzione C che ha come parametro un numero intero positivo n (n⇐30) e calcola l'n-esima potenza di 2 (2 elevato ad n) utilizzando esclusivamente gli operatori di shift (« o »).

Esercizio 8: (avanzato) Stampa cifre binarie

Scrivere una funzione C che ha come paramento un intero 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.

fisica/informatica/201617/esercitazione4.txt · Ultima modifica: 16/03/2017 alle 16:55 (7 anni fa) da Susanna Pelagatti