Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Polynom berechnen

Empfohlene Antworten

Veröffentlicht

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();

  }

 }

}

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 ;)

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

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;

   }

  }

 }

}

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

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;

 }

}

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

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;

  }

 }

}

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();

  }

 }

}

ich wollte nur den zweiten Programmteil behandeln, das Einlesen des Feldes sollte doch auch seperat gehen.

Die return-Anweisung hab' ich vergessen. Der Fehler liegt aber beim Deklarieren denke ich

PolyM.java:13:14: ';' expected

int einPoly(0);

^

1 error

sorry hab was Falsches kopiert.

PolyM.java:29:2: missing return statement

}

^

1 error

return hab ich hinzugefügt

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?

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.