Visualizzazione dei risultati da 1 a 5 su 5

Hybrid View

  1. #1
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Quote Originariamente inviata da Mitch96 Visualizza il messaggio
    Ora vi chiedo la cortesia di darci un'occhiata e di aiutarmi a capire dove sia l'errore
    Grazie mille in anticipo!
    Dovresti almeno dire COSA ti fa pensare che vi sia un errore...
    Dà risultati errati? Quali? E con quali input?
    Non compila? Che messaggi dà il compilatore?
    Compila ma non parte? Controllato lo stackTrace di eventuali eccezioni?

    Insomma... almeno sapere COSA cercare, senza costringere a copincollare, compilare, eseguire e fare prove su prove. Aiutaci ad aiutarti.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2016
    Messaggi
    3
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    senza costringere a copincollare, compilare, eseguire e fare prove su prove. Aiutaci ad aiutarti.
    Non pensavo vi togliesse più di 5 minuti di tempo copiare, incollare e fare delle prove...
    Comunque: il programma non da il risultato esatto. O meglio, non sempre da il risultato esatto.
    Il programma funziona con input del tipo "3^2*5-5", "1+1+1+1+1+1" e insomma cose così.. (non so che dirvi su quali input funziona, con alcuni si(la maggiorparte sono espressioni banalissime) e con altri input del tipo "4^2-5*8+3+4" già non funziona più, da un risultato errato (95).)
    Cosa mi fa pensare che vi sia un errore... mmm vediamo... ho inserito dei System.out.println(operandi); ogni volta che viene modificato lo Stack operandi in modo da cercare di capire il perchè dia un risultato errato. Con "4^2-5*8+3+4" come input ho notato che non venivano applicate le giuste priorità agli operatori, ma in realtà non è proprio così, diciamo che a volte applica delle operazioni non desiderate. Di seguito vi riporto l'output :
    codice:
    [4] //aggiunge il primo numero allo stack operandi
    [4, 2] //nel frattempo nello stack operatori viene aggiunto il segno "^" e successivamente viene aggiunto in cima allo stack operandi il secondo numero
    [16] //prende il segno - , lo confronta con la cima di operatori (che è ^), capisce che non è prioritario e perciò esegue 4^2, mette il risultato nella cima di operandi e mette il segno - in cima a operatori
    [16, 5] //legge il numero 5 e lo mette in cima allo stack operandi
    [11] //legge il segno * , lo confronta con la cima di operatori (che è -) e non so per quale motivo, invece di mettere in cima allo stack il segno *, compie l'operazione 16-5 e mette il risultato in cima allo stack operandi! (cioè, non riconosce che * è prioritario rispetto a - , e non capisco il perchè
    [11, 8] // da qui in poi riprende a ragionare e le operazioni (che però non dovrebbero essere queste) sono esatte
    [88]
    [88, 3]
    [91]
    [91, 4]
    [95]
    [95]
    l'output che dovrebbe uscire è invece: (p.s. forse ho sbagliato qualche passaggio)
    codice:
    [4]
    [4, 2]
    [16]
    [16, 5]
    [16, 5, 8]
    [16, 40]
    [-24]
    [-24, 3]
    [-21]
    [-21, 4]
    [-17]
    Non so cosa altro dire per farmi aiutare...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.