Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    51

    [JAVA] Problema calcolo potenza

    Salve ragazzi,sono nuovo, e come da titolo ho un piccolo problema nel codice:
    In pratica ho scritto un codice che mi permette di calcolare le potenze a base ed esponente intero..Il problema è che finchè l'esponente è 0 o maggiore di 0 non ci sono problemi per esponenti minori di zero mi esce come risultato sempre la variabile inizializzata precedentemente,cioè double c=1; per dettagli vi posto il codice intero,se fosse possibile vorrei:
    1)Capire l'errore,2)avere qualche aiuto per risolvere il problema...Grazie mille dell'attenzione

    codice:
    public static void main(String[] args) {        // Fase di input
            Scanner sc= new Scanner(System.in);
            System.out.println("Inserisci la base");
            int x=sc.nextInt();
            System.out.println("Inserisci l'esponente");
            int n=sc.nextInt();
            double c=1;
            for(int i=0;i<n;i++) 
            {if(n>0){c*=x;}
            else if(n==0){c=1;}        
            else if (n<0){c=1/(c*x);
            }}
            System.out.println("Il valore della potenza è"+c); 
            }
            }
    P.S.spero che la formattazione vada bene...
    Ultima modifica di hhh6; 19-08-2014 a 14:34

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Potresti rendere il codice più leggibile?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    51
    dimmi in che modo e lo farò senza problemi

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    mi sembra di capire che cerchi di risolvere tutto in un ciclo for, però se l'esponente è negativo, in quel ciclo non ci entrerai mai, quindi ti ritorna correttamente c, che è stata inizializzata ad 1

    EDIT:
    prova qualcosa del genere
    codice:
    int k = (n > 0 ? n : -n);
    for(int i=0; i < k; i++) {
        if (n > 0) {
            c*=x;
        }
        else {
            c /= x;
        }
    }
    ovvero ci affidiamo ad una variabile per far funzionare il ciclo for.
    Ultima modifica di Andrea1979; 19-08-2014 a 17:14
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    51
    ah avevo dimenticato la variabile "disgiuntiva" che può assumere due valori,comunque hai capito tutto quello che chiedevo.Mi manca sempre il quid per finire il programma

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Se sostituisci quello che hai scritto tu dopo la definizione di "c" con quello che ti ho postato io dovrebbe andare.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    51
    grazie mille amico per la dritta sto facendo decine di esercizi ma dimentico sempre questi piccoli trucchetti

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.