File input ambiguo

di il
40 risposte

File input ambiguo

Salve a tutti sono, vi scrivo perchè tra qualche giorno ho esame di programmazione in c++ ed esercitandomi con uno degli esami degli anni passati è uscita fuori qualcosa di strano. Mi spiego meglio:
devo fare la somma tra polinomi, e il file di input mi si presenta in questo modo:
2 (9) + (x^3+2x^2)
e sono presenti le seguenti note:
-Tutti i polinomi nella lista fornita in input sono polinomi non nulli ed hanno un grado maggiore o uguale a zero e minore di 20.
-"x^1" viene sempre rappresentato con "x".
-"x^0" non viene rappresentato.
-"1x" viene sempre rappresentato con "x".
-I coefficienti di ciascun monomio componenti un polinomio possono avere segno positivo o negativo.
il mio problema sorge nel caso di "1x" poiche non devo importare alcun intero e non so come gestire la cosa.
l'esame è di tipo algoritmico quindi oltre la libreria <iostream> e <fstream> non penso di poterne importare altre.
spero possiate aiutarmi!

40 Risposte

  • Re: File input ambiguo

    Questo esercizio non lo risolvi, se non in modo decisamente arzigogolato, con la sola manipolazione di stringhe: dovresti usare un parser ricorsivo discendente.

    La sintassi delle tue estressioni e':

    <expr> ::= <term> ('+' l | '-' <term>)*
    <term> ::= <coeff>? '(' <polinomio> ')'
    <polinomio> ::= <polyterm> ( '+' | '-' <polyterm>)*
    <polyterm> ::= <const> | <powerx> | <const><powerx>
    <powerx> ::= <var> | <var> '^' <exp>

    <coeff> ::= <integer>
    <const> ::= <integer>
    <exp> ::= <integer>

    <integer> ::= [0-9]+


    con questo converti l'espressione in una serie di vettori, dove ogni vettore rappresenta I coefficienti di un polinomio. Quindi implementi le 4 operazioni tra vettori, e generi il risultato.

    se non sai che cosa e' sta robba, dovrai ingegnarti non poco.
  • Re: File input ambiguo

    Innanzitutto grazie per la risposta!
    Sei sicuro che non ci siano altre vie? a lezione non abbiamo mai neanche nominato questa cosa
  • Re: File input ambiguo

    Le vie sono infinite, milioni di milioni, come la stella di Negroni

    https://www.youtube.com/watch?reload=9&v=CnIvFBdnrX

    Il fatto che non la abbiano mai nominato NON VUOL DIRE che uno non debba imparare qualcosa di nuovo.

    O magari anche si:

    studiare e' fatica, la fatica fa venir il mal di schiena, il mal di schiena puo' anche far morire
  • Re: File input ambiguo

    Giusto per capire, cosa intendi con 2 (9) + (x^3+2x^2)? E' un esempio di input? Se si, di quanti polinomi si tratta? 2, cioè 2 (9) e (x^3+2x^2)? Per quanto riguarda il secondo ok, ma 2 (9) cosa significa?

    Se non capisco bene la struttura dell'input non so come aiutarti.

    EDIT: forse il primo numero indica il numero di polinomi da sommare, mentre quelli tra parentesi tonde sono i polinomi?
  • Re: File input ambiguo

    È un esercizio troppo difficile per me consiglio di fare a casaccio
  • Re: File input ambiguo

    È un esercizio troppo difficile per me consiglio di fare a casaccio
  • Re: File input ambiguo

    @Nippolo:

    2 (9)

    sara' come come scrivere "2*(9)" (cioe' "18"): la moltiplicazione e' implicita se non c'e' un'altro operatore (+ - / ^).

    "9" e' un polinomio di grado 0!
  • Re: File input ambiguo

    migliorabile ha scritto:


    @Nippolo:

    2 (9)

    sara' come come scrivere "2*(9)" (cioe' "18"): la moltiplicazione e' implicita se non c'e' un'altro operatore (+ - / ^).
    L'avevo pensato anche io all'inizio, ma ragionando un po' credo che la seguente ipotesi sia più probabile:

    Nippolo ha scritto:


    ...
    EDIT: forse il primo numero indica il numero di polinomi da sommare, mentre quelli tra parentesi tonde sono i polinomi?
    Magari fantasia potrà fugare ogni dubbio!
  • Re: File input ambiguo

    Guarda che è più facile di quello che sembra.
    spezza in tronconi, da 1 a 21, i singoli monomi
    Parsa la presenza di una lettera (che è una incognita) poi cerca lo esponente (altrimenti lo poni a 1)
    Poi nello array da 1 a 21 (inizialozzato a zero) sommerai algebricamente i coefficienti.
    finito.
    volendo puoi verificare se ci sono più incognite eccetera
    2x+3y
    Diciamo un 15 minuti di lavoro
  • Re: File input ambiguo

    Sisi il primo numero quindi "2" indica il numero dei polinomi in questione. Pensavo di averlo scritto scusate!
    Per quanto riguarda settare l'esponente e quindi anche l'assenza della "x" non ho problemi.
    il mio dubbio sorge nel caso in cui non abbia coefficiente. Avevo pensato di fare una stringa e aggiungere tutti gli elementi finché non arrivo alla "x" o ad un "+","-" o ")" e poi convertire il tutto con una atoi. Ma il codice mi si sporca un casino.

    Il problema è che però non so se avrò possibilità di utilizzare la atoi all'esame, quindi con una roba del genere mi inizierei ad incasinare
  • Re: File input ambiguo

    Come si sporca il codice? Prende la polvere?
  • Re: File input ambiguo

    No, assolutamente!
    La "atoi" non la puoi usare all'esame!
    Scherzi?
    Rischi che il prof ti annulli il compito.
    La "atoi" la devi assolutamente evitare.
  • Re: File input ambiguo

    È un esercizio troppo difficile per me consiglio di fare a casaccio
  • Re: File input ambiguo

    Allora sono completamente senza idee..
Devi accedere o registrarti per scrivere nel forum
40 risposte