+m2+ ha scritto:
Gettato la spugna?
Sicuramente non gliela stai rendendo facile, considerando anche qual è la traccia dell'esercizio!
+m2+ ha scritto:
Non devi adattare niente, devi solo fare quello che dico.
Inoltre non mi sembra il massimo come approccio (e non intendo per i modi, ma per il fatto di costringerlo a fare cose senza che lui abbia chiaro qual sia l'algoritmo complessivo), ma è una mia modesta opinione.
Provo a darti anche io un input, se ti convince seguilo, altrimenti ignoralo.
Lasciamo perdere per il momento i polinomi e concentriamoci sul singolo monomio; esso avrà una struttura del genere:
segno(facoltativo) / intero che rappresenta il coefficiente(facoltativo) / variabile(facoltativa) / elevazione a potenza(facoltativa) / intero che rappresenta il grado (facoltativo)
Ipotizziamo di scorrere dall'inizio alla fine la stringa che costituisce il monomio, quello che ci interessa alla fine del ciclo è di conoscere il coefficiente e il grado del monomio. Per farlo dichiariamo due variabili intere: coeff inizializzata a 1 e grad inizializzata a 0. Dichiariamo anche una variabile booleana flag inizializzato a false.
Iniziamo quindi a scorrere la stringa:
- se il primo carattere è + passiamo avanti, se è - prima di andare avanti modifichiamo coeff a -1;
- scorreremo quindi il resto della stringa e se troviamo una cifra salveremo queste cifre consecutive in un vettore, se invece il carattere non è una cifra (quindi sarà o la variabile o l'elevazione a potenza) imposteremo flag a true e grad a 1 (poichè il monomio sicuramente non sarà di grado 0);
- se il suddetto vettore ha dimensione non nulla, convertiremo il suo contenuto in un intero n(per esempio il vettore 3 9 1 diventa l'intero 391); quindi se flag=false sarà coeff*=n, se flag=true sarà grad=n.
Riprendiamo ora la somma dei polinomi. Visto che il loro grado è massimo 20, dichiareremo un array p di 20 interi inizializzato a 0. Nel momento in cui a valle della precedente procedura conosceremo il coefficiente e il grado del generico monomio, basterà fare p[grad]+=coeff.