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
codice:
Input: 4x^2 + 4x + 4
Output: 8x + 4 +
Vi posto il mio codice
codice:
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);
}
}
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'output
Qualcuno mi può dare una mano??? Per Favore! Help...grazie