Zum Inhalt springen

Polynom berechnen


Empfohlene Beiträge

Geschrieben

Hallo,

ich habe einige Verständnisprobleme mit einer Teilaufgabe, die ich in Auszügen mal niederschreibe:

Es soll eine Anwendungsklasse PolyM programmiert werden, die aus einer main()-Methode und mehreren statischen Methoden besteht. Die main()-Methode führt folgende Schritte aus: mit der statischen Methode einnat() soll der Polynomgrad n des Polynoms p(x) eingelesen werden.

Anschließend wird mit der Methode einPoly() (Prototyp lautet: static double[]einPoly(int n) ) das Koeffizientenfeld a[] des Polynoms eingelesen.

Wenn das Polynom den Grad n hat, dann hat das Feld a[] (n+1) Komponenten.

Erste Schwierigkeit ist, dass ich nicht genau weiß was ich mit den Methoden einnat() und einPoly() anfangen soll. Ich nehme mal an, dass ich zu den Methoden selber eine Klasse programmieren muss, oder?

Zweite Schwierigkeit: ich weiß nicht so genau, wie ich mehrere Methoden in einem Programm anordnen soll, ich kannte bisher nur Programme mit einer main()-Methode.

Ich habe das Teilprogramm mal programmiert, läuft auch, aber ohne die vorgegebenen Methoden (IO1 ist eine solche selbst programmierte Klasse)...


class PolyM 

{

 public static void main(String [] args) 

 {

  int n=0;

  double a[];

  int i;


  /* Tastatureingabe von n       */

  System.out.println("Bitte Polynomgrad n angeben");

  n=IO1.einint();


  a = new double[n+1];

  for ( i = 0; i < a.length; i++)

  {

   System.out.println("Bitte Koeffizienten angeben:");

   a[i]=IO1.eindouble();

  }

 }

}

Geschrieben

zu deinem ersten Problem:

dies sind Eingabemethoden wenn ich das richtig herauslese in denen du die benötigten Werte einlesen sollst/kannst

zu deinem zweiten Problem:

main() ist genauso eine Methode wie einnat() und einpoly(), du kannst die Methoden einnat() und einpoly() also vor oder hinter die Deklaration der Methode main() setzen in die selbe Klasse

Ich hoffe ich konnte dir etwas helfen ;)

Geschrieben (bearbeitet)

Also für die Eingabe des Polynomgrades n habe ich eine Klasse EingNat definiert, mit der Eingabemethode einnat() kann man jetzt eine Zahl einlesen.

class PolyM

{

 public static void main(String [] args)

 {

  int n=0;

  double a[];

  int i;


    /* Tastatureingabe von n       */

  System.out.println("Bitte Polynomgrad n angeben");

  n=EingNat.einnat();

 }

}

Das Einlesen des Feldes a[] gestaltet sich aber immer noch schwierig. Kann ich dann für meine Eingabemethode einPoly z.B. eine Klasse mit Namen Poly definieren, und dann in mein Programm schreiben: a[]=Poly.einPoly() ? würde das so gehen? also analog zu der oberen Variante.

Bearbeitet von freshes
Geschrieben

da komme ich aber nicht weiter. static int einnat() ist ein illegal start of expression

class PolyM

{

 public static void main(String [] args)

 {

  int n=0;

  {

   static int einnat()

   {

    System.out.println("Bitte Polynomgrad n eingeben");

    n=IO1.einint();

    return n;

   }

  }

 }

}

Geschrieben

so geht's leider auch nicht:

class PolyM

{

 public static void main(String [] args)

 {

  int n=0;

 }

 static int einnat()

 {

  System.out.println("Bitte Polynomgrad n eingeben");

  n=IO1.einint();


  return n;

 }

}

public static void main(String [] args)

^

1 error

Geschrieben

wenn ich in beiden deklariere und sie benutze, läuft das Programm zwar, aber dann wäre einnat() ja sinnlos. Wenn ich nur in main deklariere und sonst nichts, dann öffnet sich die Konsole, aber mehr auch nicht. Es kommt keine Eingabeaufforderung. Es scheint so, als würde unten stehendes Programm die Methode static int einnat() einfach ignorieren.

class PolyM

{

 public static void main(String [] args)

 {

  int n=0;

 }

 static int einnat()

 {int n=0;

  System.out.println("Bitte Polynomgrad n eingeben");

  n=IO1.einint();


  return n;

 }

}

Geschrieben
Es scheint so, als würde unten stehendes Programm die Methode static int einnat() einfach ignorieren.
Natürlich tut es das. Du rufst einnat ja auch nicht auf. Wenn du in main nichts weiter tust, tut das Programm eben nichts.
Geschrieben (bearbeitet)

etwa so? es läuft zwar, aber ich verstehe den Sinn dahinter nicht, wenn ich das jetzt so richtig gemacht haben sollte. Ist doch sehr umständlich. Im Eingangspost habe ich das sehr einfach innerhalb von main() gemacht.

class PolyM

{

 public static void main(String [] args)

 { double s;

   s=einnat();

 }

 static int einnat()

 { int n;

  System.out.println("Bitte Polynomgrad n eingeben");

  n=IO1.einint();


  return n;

 }

}

Bearbeitet von freshes
Geschrieben

wenn ich jetzt versuche, obiges Modell für das Feld zu benutzen, bekomme ich folgende Fehlermeldung:

PolyM.java:11:6: einPoly(int) in PolyM cannot be applied to ()

t=einPoly();

^

PolyM.java:24:11: incompatible types

found : int

required: double[]

return n;

^

2 errors

class PolyM

{

 public static void main(String [] args)

 {

  double t;

  t=einPoly();

 }

 static double[] einPoly(int n)

 {

  double a[];

  int i;


  a = new double[n+1];

  for ( i = 0; i < a.length; i++)

  {

   System.out.println("Bitte Koeffizienten angeben:");

   a[i]=IO1.eindouble();


   return n;

  }

 }

}

Geschrieben

so in etwa? irgendwas ist aber immer noch falsch.

class PolyM

{

 public static void main(String [] args)

 {


  double[] t;

  t=einPoly(0);


 }

 static double[] einPoly(int n)

 {

  double a[];

  int i;


  a = new double[n+1];

  for ( i = 0; i < a.length; i++)

  {

   System.out.println("Bitte Koeffizienten angeben:");

   a[i]=IO1.eindouble();

  }

 }

}

Geschrieben
return hab ich hinzugefügt
Und der Compiler beklagt sich immer noch über die fehlende return-Anweisung? Dann hast du es wohl falsch hinzugefügt -> Code zeigen.

Oder ist jetzt alles gut? Lass dir doch nicht andauernd jedes bißchen hilfreiche Information aus der Nase ziehen. Glaubst du wirklich, aus einer einzelnen geschweiften Klammer kann man irgendwie erkennen, was du falsch gemacht hast?

Geschrieben

ja hab's, hab die return-Anweisung falsch angeordnet.

Wenn's interessiert:

class PolyM

{

 public static void main(String [] args)

 {


  double[] t=einPoly(0);


 }

 static double[] einPoly(int n)

 {

  double a[];

  int i;


  a = new double[n+1];

  for ( i = 0; i < a.length; i++)

  {

   System.out.println("Bitte Koeffizienten angeben:");

   a[i]=IO1.eindouble();



  }  return a;

 }

}

Danke fürs Helfen.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...