Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
wie schreibe ich ein programm das nach eigabe von n die funktion f(n) ausrechnet.
es soll überprüft werden ob n=0 dann f(n)=0
n>0 und gerade dann f(n) 5(n/2+1)
n>0 und ungerade dann f(n) n³-2n+7;
ich habe folgendes programm geschrieben:
Code:
import java.io.*;
public class Aufgabe3{
public static void main(String[] args)
throws IOException
{int n;
BufferedReader din = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Bitte n von f(n) eingeben : ");
n = Integer.parseInt(din.readLine());
if ( n == 0) { System.out.println(" ergebnis = 0 "); }
if (n%2==0 ) { System.out.println(" test gerade " + 5*(n/2+1) ); }
else { System.out.println(" test ungerade " + ((n*n*n)-2*n+7)); }
if ( n < 0) { System.out.println(" bitte das nächste mal ne positive zahl eingeben !");
}
}
}
das problem ist, dass auch bei eingabe von negativen zahlen eine rechnung gemacht wird mit geraden bzw ungeraden zahlen, obwohl er ja nur ausgeben soll"(" bitte das nächste mal ne positive zahl eingeben !"); ?
um es etwas uebersichtlich zu machen packt man es erstmal in eine funkion
Code:
public static double func(int n) /*static um es aus main aufrufen zu koennen, double da die funktionsbeschreibung Z+->R+*/
{
if(n==0)
return 0;
else
if(n<0)
return -1; // invalid argument
else
{
if((n%2)==0) // gerade
return 5*((n/2)+1);
else //ungerade
return Math.pow(n,3)-(2*n)+7;
}
}
du musst nur den returnwert auf -1 pruefen, um zu sehen ob es ein nicht gueltiges argument war (n<0). leider ist die funktion nicht vollstaendig fuer Z (was integer,short,byte ist) oder R (float,double) beschrieben
ähm kann man das irgendwie auch einfacher schreiben, weil ich die aufgabe für ein praktikum in der uni brauche, wir sind erst in der 2 woche und haben bedingungen kennengelernt. ich brauche es irgendwie simpler, weil wir es auch erklären müssen. außerdem funktioniert es auch nicht bei mir so, wie du es geschrieben hast. also bitte etwas nachsicht, bin blutiger anfänger
naja, ich habe nur bedingungen (if-then-else) benutzt. was ist den nicht richtig an der funktion? liefert sie falsche werte? einfacher geht kaum (ohne es unnoetig zu verkomplizieren), da ansonsten werte <0 ncht ordentlich abgefangen werden oder man redundante pruefungen durchfuehrt.
habe das problem gelöst. mann kann mehrere bedingungen mit einem & bzw && verbinden also
if (n == 0 & (n %=2));
aber trozdem danke vielleicht hilfts ja noch jemanden
cu
if ( n == 0 ) { System.out.println(" Ergebnis : " + n*0 ); }
if ( n > 0 & (n%2)==0) System.out.println(" Ergebnis bei Zahl > 0 und gerader Zahl : " + 5*((n/2)+1) );
if ( n > 0 & (n%2)==1) System.out.println(" Ergebnis bei Zahl > 0 und ungerader Zahl : " + ((n*n*n)-2*n+7));
if ( n < 0 ) System.out.println(" Bei Eingabe einer negativen Zahl wird kein Ergebnis errechnet !" );