Salve a tutti...Potreste darmi una mano col seguente problema? è un pomeriggio che ci sto sbattendo la testa!
E' un programma che calcola la derivata di un polinomio, tipo ax^(2) + bx + c : l'input è esattamente così come ho postato, spazi compresi.
L'output generato dovrebbe essere a*2x + b
Per chi non si ricorda, posto la regola generale delle derivate XD Su un polinomio generico ax^(n) + bx^(n-1) + c
la derivata è a*n*x^(n-1) + b*(n-1)*x^(n-2) ... le costanti come c non hanno derivata!
Il mio problema è proprio questo, ovvero nel mio output rimane uno "spazio voto" al posto dello zero diciamo, ma viene postato anche l'operatore! Esempio
Vi posto il mio codicecodice:Input: 4x^2 + 4x + 4 Output: 8x + 4 +
Il mio problema è che non riesco a capire come verificare se il token che sto esaminando non ha un incognita, e di conseguenza la sua derivata è zero o meno...Quindi mi rimane"un buco" nell'outputcodice:import java.io.*; import java.util.*; public class Derivata { public static void main( String [] args ) throws IOException { BufferedReader in = new BufferedReader( new InputStreamReader( System.in ) ); String operatore, monomio, s = in.readLine(); StringTokenizer stk = new StringTokenizer( s ); StringBuilder b = new StringBuilder(); while( stk.hasMoreTokens() ) { monomio = stk.nextToken(); int N = monomio.length(); char iniz = monomio.charAt(0); // caso in cui il parametro è nullo if( iniz == 0 ) break; // caso in cui è l'operatore if( !Character.isLetterOrDigit( iniz ) ) b.append(monomio + " "); for( int i = 0; i < N; i++ ) { char x = monomio.charAt( i ); // caso "ordinario" if( Character.isLetter( x ) ) { // se l'incognita è di grado uno ( tipo ax ), non stamparla if( i == N-1 ) { int a = Integer.parseInt( monomio.substring( 0, i ) ); b.append(a + " "); } // altrimenti continua col regolare caso ordinario else { int n = Integer.parseInt( monomio.substring( i+2 ) ); int a = Integer.parseInt( monomio.substring( 0, i ) ); int pref = a*n; int esp = n-1; if( esp == 1 ) b.append(pref + "" + x + " "); else b.append(pref + "" + x + "^" + esp + " "); } } } } System.out.println(b); } }
Qualcuno mi può dare una mano??? Per Favore! Help...grazie

Rispondi quotando