Visualizzazione dei risultati da 1 a 1 su 1
  1. #1
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177

    [java]costruire un monomio

    Ciao devo costruire un monomio della forma: c * X ^ n;dove c (coefficiente del monomio) e` un intero e n (grado del monomio).Ho costruito la classe Monomio:

    codice:
    import java.math.*;
    class Monomio{
    int coefficiente;
    int grado;
    static String esponente;
    static String prodotto;
    
    /**La classe possiede un solo costruttore che costruisce un monomio
    di cui vengono specificati il coefficiente c e il grado n.
    Si assume che c e n siano interi e che n>=0.*/
    Monomio(int coefficiente,int grado){
        this.coefficiente=coefficiente;
        this.grado=grado;
        this.esponente="^"; //è di default
        this.prodotto="*"; // è di default
    }/** valuta(a)
    
      Dato un intero a, restituisce l'intero ottenuto valutando il monomio in a
      (ossia, ponendo X uguale ad a).
      
      Ad esempio, il monomio
      
        3 * X ^ 2   
    
     valutato in 4 da` come risultato
    
       3 * (4^2) = 3 * 16 = 48*/
       public int valuta(int a){
          int risultato=0;
          risultato=coefficiente*((int)Math.pow(a,grado));
          return risultato;
      }
      /** per(m)
    
      Restituisce un nuovo monomio corrispondente al prodotto di questo monomio per
      il monomio m specificato dall'argomento.
      Ad esempio, il prodotto fra i monomi 
    
        3 * X ^ 2        7 * X ^ 10
    
       e` il monomio 21 * X ^ 12*/
        public String per(Monomio m){
            String s="";
            int coefficientetot=m.coefficiente*coefficiente;
            int gradotot=m.grado+grado;
            s+=coefficientetot+Monomio.getprodotto("*")+" X "+Monomio.getesponente("^")+ gradotot;
            return s;
        }
        /**static getprodotto(s)
     
      Stabilisce che il simbolo per rappresentare il prodotto e` la stringa s*/
          static String getprodotto(String p){
            prodotto=p;
            return prodotto;
    }
    static String getesponente(String e){
      esponente=e; 
      return esponente;
    }
    /**toString()
     Restituisce la stringa che rappresenta il monomio. 
      Ad esempio, se i simboli del prodotto e dell'elevamento a potenza non sono stati modificati
      la stringa ha la forma 
    
        3 * X ^ 12
    
      Se il simbolo di prodotto e' stato modificato in "per" e l'elevamento a potenza in "esp",
      la striga restituita deve avere la forma
    
       3 per X esp 12
    */
    public String toString(){
        String s="";
            s+=coefficiente+" "+Monomio.getprodotto(prodotto)
            +" X "+Monomio.getesponente(esponente)+" "+grado;    
    return s;
    }
    }
    e fin qui tutto bene...il problema sta nel metodo main;il problema vuole che leggo da input una sequenza di
    linee della forma( c1, n1, c2, n2 e a sono interi, ed s e' una stringa):
    1) Linee della forma PER c1 n1 c2 n2
    Stampa il monomio ottenuto moltiplicando i monomi c1 * X ^ n1 e c2 * X ^ n2.
    2) Linee della forma VAL c1 n1 a
    Stampa il risultato della valutazione del monomio c1 * X ^ n1 in a
    3) Linee della forma PROD s
    Stabilisce che il simbolo per rappresentare il prodotto e' la stringa s
    3) Linee della forma ESP s
    Stabilisce che il simbolo per rappresentare l'elevamento a potenza e' la stringa s.

    es:da input digito
    PER 3 5 2 10
    PER -2 6 5 8
    PROD .
    PER 10 20 -3 12
    ESP ^^
    PER -7 8 -2 10

    l'output produce:
    6 * X ^ 15
    -10 * X ^ 14
    -30 . X ^ 32
    14 . X ^^ 18

    Il mio(incompleto,perchè ho provato a farne solo un pezzo) codice da main:

    codice:
    import java.util.*;
    class ProvaMonomio{
    public static void main(String args[]){
        Scanner sc=new Scanner(System.in);
        String y=sc.nextLine();
        String d="";
        while(!y.equals("q")){
            StringTokenizer st=new StringTokenizer(y," ");
            String s=st.nextToken();
            
        if(s.equals("PER")){
            int coeff1=Integer.valueOf(st.nextToken());
            int esp1=Integer.valueOf(st.nextToken());
            Monomio m=new Monomio(coeff1,esp1);
            int coeff2=Integer.valueOf(st.nextToken());    
            int esp2=Integer.valueOf(st.nextToken());
            Monomio m1=new Monomio(coeff2,esp2);
            
            System.out.println(m.toString());
    }else if(s.equals("PROD")){
        String i=st.nextToken();
        String u=Monomio.getprodotto(i);
        y=sc.nextLine();
    }
    y=sc.nextLine();
    }
    
    }
    }
    Questo caspita di metodo main non mi stampa niente...come posso fare a memorizzare PROD . ed a stampare il monomio,contente il punto?è giusto utilizzare string tokennizer? scusate per la domanda troppo lunga
    Ultima modifica di el92; 01-04-2015 a 10:59

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.