Muendliche Nachpruefung Informatik

himbeerchen

Grünschnabel
Hey,

ich hab morgen eine muendliche Nachpruefung in Informatik.
Seitdem ich das weiss,versuche ich die Klausur zu rekonstruieren und zu loesen.
Allerdings komme ich bei 2 von den 4 Aufgaben nicht wirklich weiter.

In der ersten geht es darum "Zufallszahlen" zu bilden,also nicht mit random,sondern nach dem Prinzip:

z1=(z0*a)%b
z2=(z1*a)%b
.
.
zn=(zn-1*a)%b

und im zweiten Schritt:

x1=z1/b
x2=z2/b
.
.
xn=zn/b

Am Anfang sollen wir dann Werte fuer a,b und z0 einlesen,sowie eine Anzahl der zu bestimmenden Zufallszahlen eingeben.


public sttaic void main (String [] args)

{

int a= in.readInt ("Bitte geben Sie eine Zahl ein:");
int b=in.readInt ("Bitte geben Sie eine weitere Zahl ein");
int z0 = in.readInt ("Bitte geben Sie eine dritte Zahl ein:");
int anzahl = ("Wieviele Zufallszahlen moechten Sie erstellen?");

for (int i= 0; i < anazhl; i = i+1)

{

out.println ("Die " + (i+1) + ". Zufallszahl lautet ");

}}}

Das sind meine bisherigen Ueberlegungen,ich habe aber keine Ahnung wie ich das weiterfuehren soll..
Bin leider nicht sonderlich versiert auf dem Gebiet..


Aufgabe 2.


Da sollen wir eine Methode erstellen,irgendwie mit boolean.
Wir sollen feststellen,ob eine Zahl durch die andere teilbar ist.

Die Main-Methode ist vorgegeben und soll auch nicht veraendert werden.
Leider weiss ich die nimma ganz genau..

static boolean teiler (int a, int b) {

if(a%b == 0) {

return true;
}
else
{
return false;
}
}


public static void main (String [] args)
{


boolean teiler;

Da komm ich auch null weiter.


Es waer super nett,wenn mir irgendwer helfen koennte!!

Jule
 
Einfach mal etwas eingeben und dein Programm machen lassen

so bitte code posten
Java:
public sttaic void main (String [] args)

{

int a= in.readInt ("Bitte geben Sie eine Zahl ein:");
int b=in.readInt ("Bitte geben Sie eine weitere Zahl ein");
int z0 = in.readInt ("Bitte geben Sie eine dritte Zahl ein:");
int anzahl = ("Wieviele Zufallszahlen moechten Sie erstellen?");

int xn = 0;

for (int i= 0; i < anazhl; i = i+1)

{
    z0 = (z0 * a) % b;
    xn = z0 / b;

    out.println ("Die " + (i+1) + ". Zufallszahl lautet " + xn);

}}}

nur mal ein Schnellschuss von mir

wenn z0 bis zn deine Zufalls zahlen seien sollen musst du nur die formal ins Programm übertragen ausrechnen und ausgaben.

Aufgabe zwei ist ähnlich zu handhaben, die Aufgaben Stellungen sind Mathematischer Natur einfach die Formeln raus suchen in den Code übertragen und fertig
 
Zuletzt bearbeitet von einem Moderator:
Erstmal Danke fuer die schnelle Antwort.

Leider funktioniert es nicht,da hatte ich so auch schon versucht..
Das rein mathematische ist ja nicht das Problem,ich hab nur null Ahnung wie ich das in Java umsetzten soll..
Ist irgendwie nicht meine Welt und hat auch nichts mit meinem Studium zu tun..
 
Hi

Bei Aufgabe 1 könnte man zB einmal die Compilerfehler beseitigen...
sstaic und anazhl müssen nicht sein.

Dann beim println in der Schleife auch wirklich eine Zahl ausgeben, und nicht den Text "i+1"

Dann bleibt nur noch:
1) Vor der Schleife:
C++:
int zufall=z0;
2) In der Schleife vor der Ausgabe
C++:
zufall=(zufall*a)%b;

@wakoz: Warum dividierst du durch b?

Zur Aufgabe 2: Wenn main vorgegeben ist, kann dir nur die Angabe helfen.
Keiner von uns kann den komplett gleichen Code (mit gleichen Variablennamen etc) wissen, den dein Lehrer geschrieben hat.
Vom Prinzip her wird er zwei ints einlesen und dann ausgeben, ob sie teilbar sind...vermute ich mal.

Gruß
 
Funktioniert nicht..

Er dividiert durch b,weil das der zweite Schritt ist.

Hat denn wirklich keiner eine Ahnung,wie man da dann Werte rausbekommt?

So wie es momentan ist,kommt bei jeglicher Zahlenkombination 0 raus..
 
Java:
public static void main (String [] args)
	 
	{
	
	Scanner in = new Scanner(System.in);
	System.out.print("Bitte geben Sie eine Zahl ein: ");
	int a= Integer.parseInt( in.nextLine());
	System.out.print("Bitte geben Sie eine weitere Zahl ein: ");
	int b= Integer.parseInt( in.nextLine());
	System.out.print("Bitte geben Sie eine dritte Zahl ein: ");
	double z0 = Double.parseDouble( in.nextLine());
	System.out.print("Wieviele Zufallszahlen moechten Sie erstellen? ");
	int anzahl = Integer.parseInt( in.nextLine());
	
	System.out.println(" ");
	
	double xn = 0;
	double buffer = 0;
	for (int i= 0; i <= anzahl; i++)
	 
	{
	    buffer = (z0 * a);
	    System.out.println(buffer);
	    z0 = buffer % b;
	    xn = z0 / b;
	 
	    System.out.println ("Die " + (i+1) + ". Zufallszahl lautet " + xn);
	 
	}};

ich dachte etwas arbeit für dich ist hilfreich ;)
Jetzt ist der code ausführbar Quick and Dirty :)
wobei die Formel (jetzt nach dem ich es ausführbar gemacht ab ;) ) für deine Random Zahl mir etwas fehlerhaft vorkommt.

Der Scanner liest die eingaben in der Konsole
die ausgeben werden mit System.out.print ausgegeben
wenn man System.out.println schreibt passiert nach der ausgebe ein zeilen umbruch
Integer.parseInt konvertiert die eingaben die immer vom typ string sind zu einer zahl um eben so das paseDouble
Fehlermeldungen können auftreten sie werden in meinem Code nicht gesondert behandelt (Fehlerhafte eingaben die Leerzeichen oder andere Zeichen)

die ausgabe mit dem buffer ist überflüssig aber ich wollte mir das zwischen Ergebnis ansehen bevor ich modulo rechne
 
Zuletzt bearbeitet von einem Moderator:
Nochmal Danke!

Aber aehm..
Das ist viel zu kompliziert und von einigen Sachen hab ich noch nie was gehoert..
Das soll eigentlich eine relativ simple Aufgabe sein..

Weil hier muesste ich ja erstmal noch eine neue Methode schreiben usw und dann sollen wir da nicht..

Edit: Ich hab das etwas umgeaendert und jetzt geht es.

DANKE!!

Jetzt muss ich nur noch verstehen,warum es geht^^
 
Zuletzt bearbeitet:
Ist die Formel so vorgegeben?

im ersten code haben ich alles aus dem ersten Thread übernommen, nun habe ich es mal bei mir in Eclipse eingetragen und deine Fheler beseitigt.

Jegliche rechnungen habe ich aus den mir gegeben Formeln übernommen.

Das 0 rauskommt ist nur logisch weil % die modulo operation ist und egal welche zahl man angibt die werte werden immer gegen 0 streben!
 
Zuletzt bearbeitet:
Jetzt funktioniert es auch=).

Ja,die Formel war so vorgegeben.

Hab jetzt auch soweit verstanden,wie es geht.
Aber noch nicht ganz warum es bei mir nicht funktioniert hat;).

Das muss ich noch rausfinden.
 
Sorry, das mit dem Dividieren als zweiten Schritt hatte ich überlesen.
Hatte daher auch int statt double genommen.
Der Grund, dass immer 0 herauskam, war, dass bei int sämtliche Kommastellen "abgeschnitten" werden.
Und deine Formel kann eben nur Werte größer gleich 0 und kleiner als 1 produzieren.

Gruß
 
Zurück