A lezione abbiamo visto la classe SecondoGrado che, letti in input tre valori a, b e c che descrivono un'equazione di secondo grado espressa nella forma
a·x²+b·x+c=0,
calcola e stampa le relative radici, nel caso queste siano reali.
La soluzione consta di due passi: si calcola il determinante delta=b²-4·a·c, poi si calcolano le soluzioni in funzione della radice quadrata di delta. Ovviamente nel caso delta risultasse negativo la radice quadrata non potrebbe essere estratta. In questo caso si fa riferimento al concetto di numero complesso per poter esprimere le soluzioni dell'equazione. In particolare si introduce il simbolo i per indicare la radice quadrata di -1, pertanto la radice quadrata di un numero negativo risulta uguale ad i moltiplicato per la radice quadrata dell'opposto del numero (che quindi risulterà positivo).
In altre parole, se il delta è negativo, il primo risultato può essere scritto nella forma -b/(2a)+i*sqrt(-delta)/(2a), e la stessa cosa vale per il secondo risultato, dove sqrt codifica l'estrazione della radice quadrata.
Il modo in cui è stato espresso il risultato, tenuto conto che il simbolo i non indica il nome di una variabile bensì un carattere da stampare, suggerisce come ricavare e stampare i risultati: calcolando separatamente le quantità che precedono e seguono il simbolo i e poi stampandole avendo cura di fare comparire la stringa "+i" tra di esse.
Tenuto conto di questi suggerimenti, progettate e realizzate una classe simile a SecondoGradoComplesso, che permetta di calcolare le radici anche quando il determinante risulta negativo.
A lezione abbiamo visto come troncare un numero alla seconda cifra decimale. Scrivete una classe Tronca che legge in input un numero decimale d e un numero naturale n e stampa in output il valore d troncato alla n-esima cifra decimale.
A lezione abbiamo visto come troncare un numero alla seconda cifra decimale. Scrivete una classe Arrotonda che arrotondi un numero alla seconda cifra decimale (suggerimento: usate lo stesso approccio della classe che tronca un numero, ma memorizzate e utilizzate anche la parte di numero "scartata" per verificare se è necessario arrotondare o meno il valore finale).
Scrivete una classe MinMax che legga una sequenza di numeri reali, e al termine (cioè quando si introduce 0) visualizzi il numero più grande e quello più piccolo tra quelli introdotti tramite tastiera. Si osservi che per risolvere l'esercizio non è necessario memorizzare la sequenza dei numeri letti.
Scrivete una classe ToNumber che legga delle sequenze di caratteri (sono ammessi solo i caratteri da 0 a 9, - e .), il meno può essere SOLO ad inizio sequenza mentre il punto può apparire ovunque nella sequenza ma al più una volta. Le sequenze sono terminate dal carattere di spaziatura.
Letta una sequenza ricostruire il numero corrispondente, convertirlo da String al tipo appropriato ed assegnarlo ad una variabile col tipo corretto, stampare il valore contenuto nella variabile. Nota, occorre riconoscere il tipo corretto non solo dalla presenza o meno di un punto ma anche dal range in cui cade, ad es. 250000 sarà un long mentre 1 sarà un int.
Suggerimento usare i type-wrapper.