Kleiner Denkfehler

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo, hätte mal eine kurze Fragte und zwar will ich in Java eine Klasse realiaieren die es möglich macht induktive Mengen wieder zugeben, sprich das 10000te element von irgendwas, nur komme ich nicht auf die Methode, hab bis jetzt folgendes gemacht.

Code:
public class InduktiveMenge {
    
 private int[] menge; 
 
public InduktiveMenge() {

}

public int gibElement(int zahl) {
    
    int element = 0;
    
    for (int i = 0; i <= zahl; i++) {
        
    }
    
    
}

Also sprich den Konstruktor, weil ich mir überlegt habe das es wohl sinvoll ist das als Array zu machen.

Jetzt weiß ich nur nicht wie ich am besten an die Methode gibElement ran gehen soll.

Könntet ihr mir weiter helfen?

grüße
 
G

Guest

Gast
Hatte noch etwas vergessen, und zwar werden folgende Regeln verwendet.

€ = element von

1. 1 € M
2. Falls n € M , dann ist auch 2n+1 € M .
3. Falls n € M , dann ist auch 3n € M .

Also z.b ist das 100te element von 1; 819

grüße
 

Jango

Gesperrter Benutzer
Bin ich denn der/die einzige hier, die das nicht begreift?
Was hat denn dein Code da oben mit dem 10000.teil eines Elements zu tun?
Ich weiß nicht was du vorhast, aber warum Teilst du nicht das Element, von dem du diesen Teil haben willst nicht einfach durch 10000?
sm_18.gif

Und was soll denn das Array da mit einem Element? Das ist ja gar nicht initialisiert - nur deklariert.
eusa_whistle.gif
 
S

SlaterB

Gast
wer spricht denn hier gegen wen?

mir scheint die Aufgabe schon recht sinnvoll,
bei gibElement(10000) berechnet man erst das 1. Element, dann das 2. usw.
bis zum 10.000den,
wie man das berechnet besagt die Vorschrift,
mit der Reihenfolge wirds noch bisschen schwerer, vielleicht zum testen eine einfachere Vorschrift wählen


wenn man Platz im Speicher hat, cacht man die bereits berechneten Elemente in dem Array,
das evtl. bei wachsenden Anforderungen öfter mal neu zu erstellen ist,
klingt alles machbar,

was ist das Problem? bei 1 anfangen, dann 2, dann 3 usw.
 

Leroy42

Top Contributor
SlaterB hat gesagt.:
was ist das Problem? bei 1 anfangen, dann 2, dann 3 usw.

Ich denke mal, das genau das das Problem ist!

Welches ist denn bitteschön das 2., 3., ... Element?

Genau diese Entscheidung ermöglicht die gegebene
Definition doch gar nicht. :shock:

Ich würde versuchen eine lernende (ArrayList) Methode
zu implementieren die beide Stränge (n->2n+1, n->3n)
alternierend erzeugt und, geordnet, dann eine ArrayList
mit list.get(n) "liefert das n-te Element" erzeugt.
 

Yzebär

Bekanntes Mitglied
Angelehnt an Kollege SlaterB, sollte es etwa so aussehen...
Code:
public class InduktiveMenge {
   
private int[] menge;

public InduktiveMenge() {
    // Menge mit erstem Element erzeugen.
    menge = new int[]{1};
}

public int gibElement(int index) {
    // Prüfen, ob das Element schon im Array 
    // vorhanden ist.
    if( index < menge.length )
        // Arrayindex beginnt bei 0,
        // deswegen -1
        return menge[index - 1];

    // Element noch nicht vorhanden,
    // Array erweitern.
    // Größeres Array erzeugen.
    int[] tmpArray = new int[index];
    // Vorhandene Elemente kopieren
    for (int i = 0; i < menge.length; i++) {
        tmpArray[i] = menge[i];
    } 
    // Letztes Element als Ausgangspunkt für
    int letztesElement = menge[menge.length -1];
    int zaehler = menge.length;
    // Nächste Elemente bis zum Element index ermitteln
    for( i = letztesElement + 1; zaehler < index; i++){
        boolean checkOk = pruefeRegel(i);
        if( checkOk ){
            tmpArray[zaehler] = i;
            zaehler++;
        }
    }
    // Referenz der erweiterten Menge übergeben.
    menge = tmpArray;

    return menge[index - 1];
}

public boolean pruefeRegel( int zahl ){
    // Regeln anwenden
    // true zurückgeben, 
    // wenn alle Regeln eingehalten wurden
}

Die Menge wird immer bis zu dem Element berechnet, das von der Methode gibElement gefordert wird. Ist das Element schon berechnet worden, wird es einfach zurückgegeben. Bei Neuberechnungen wird das Array erweitert, dabei werden vorhandene Werte kopiert und dann die neu ermittelten Elemente eingefügt.[/quote]
 
S

SlaterB

Gast
also mit pruefeRegel( int zahl ) für jede Zahl praktisch wieder von vorne anzufangen,
das scheint mir nicht effektiv, dann lieber wie von Leroy42 vorgeschlagen
 

Yzebär

Bekanntes Mitglied
SlaterB hat gesagt.:
also mit pruefeRegel( int zahl ) für jede Zahl praktisch wieder von vorne anzufangen,
das scheint mir nicht effektiv, dann lieber wie von Leroy42 vorgeschlagen
Nein, wenn ich bereits 5 Elemente ermittelt habe und möchte jetzt das 7. haben. Werden die ersten 5 kopiert, vom letzten Element der (Wert + 1) als Startwert für die Suche nach Element 6 und 7 benutzt. In der Methode pruefeRegel wird nur die übergebene Zahl untersucht, ob diese den Regeln (ungerade und durch 3 teilbar) entspricht und damit zur Menge gehört.
 
S

SlaterB

Gast
> In der Methode pruefeRegel wird nur die übergebene Zahl
> untersucht, ob diese den Regeln (ungerade und durch 3 teilbar) entspricht

dann könnte man ja gleich 10000 prüfen und wäre fertig ;)
ach ne, es kommt ja noch auf die Anzahl an

aber jedenfalls ist die Regel nicht "ungerade und/ oder durch 3 teilbar"
sondern "das Dreifache oder Doppelt+erste von irgendeinem ANDEREN Element in der Liste",

wenn man eine Zahl prüft müsste man also die ganze bisherige Liste durchschauen nach entsprechenden Voraussetzung-Zahlen,

obwohl, das wäre ja auch gar nicht so aufwendig, zumal die bisherige Liste ja sortiert ist,
also durchaus denkbar, hast recht
 

Yzebär

Bekanntes Mitglied
SlaterB hat gesagt.:
jedenfalls ist die Regel nicht "ungerade und/ oder durch 3 teilbar"
sondern "das Dreifache oder Doppelt+erste von irgendeinem ANDEREN Element in der Liste"
Das steht nicht so da, aber mit ein bißchen Sinn für Mathematik kann man das so zusammenfassen. 2n + 1 ist die allgemeine Beschreibung für eine ungerade Zahl, 3n ist die Beschreibung einer durch 3 teilbaren Zahl, weil ein vielfaches von 3 garantiert immer durch 3 teilbar ist. Analog wäre die Beschreibung einer geraden Zahl 2n, weil ein vielfaches von 2 immer eine gerade Zahl ergibt. Die Regeln sind keine Formeln die man ausrechnen kann, sondern Beschreibungen der Eigenschaften der Elemente der Menge.

Ergo, setzt sich die hier gesuchte Menge aus allen durch 3 teilbaren ungeraden Zahlen und 1 zusammen.
 
S

SlaterB

Gast
okok, wenn das so ginge, gut dann kann man das machen,
wiederspricht ein bisschen der 'InduktiveMenge', aber vor mir aus,

nach meinem Sinn für Mathematik ist das aber in diesem Beispiel nicht der Fall, oder? ;)

die ersten Zahlen sind:
1, 3, 7, 9, 15, 19, 21, 27, 31

da ein System zu erkennen wird schwierig,

7 ist drin, da 3 drin ist und 7 = 2*3+1,
aber 7 ist nicht durch 3 teilbar..
 
S

SlaterB

Gast
hehe, ich lese zwar in zwei Zitaten

> ob diese den Regeln (ungerade und durch 3 teilbar) entspricht

> setzt sich die hier gesuchte Menge aus allen durch 3 teilbaren ungeraden Zahlen und 1 zusammen.

ein UND,
wechsle aber gerne von der 7 zur 11, die nicht drin ist obwohl sie ungerade, also "Ungerade oder durch 3 teilbar" ist ;)

aber ohne Fragensteller eigentlich kein Thread oder? ;)
 

Yzebär

Bekanntes Mitglied
de.wikipedia.org/wiki/Induktive_Menge

Kann da nicht besonderes erkennen, außer, daß diese Menge vielleicht gar keine induktive Menge ist, weil die 0 gar nicht enthalten ist.

Nochmal, die Regeln sind KEINE Berechnungsformeln, sondern Beschreibungen von Eigenschaften 2n == gerade, 2n + 1 == ungerade, 3n == durch 3 teilbar, 4n == durch 4 teilbar usw.
Ansonsten müßtest du ja im unendlichen anfangen, denn ob eine Zahl(n) Element der Menge ist, kannst du nur wissen, wenn (nach deiner Theorie) eine berechnete Zahl(x = 3n) Element der Menge ist, ob diese berechnete Zahl Element der Menge ist, weißt du nur, wenn eine weitere berechnete Zahl(y = 3x) Element der Menge ist... usw

Ob die Regeln UND- oder ODER-verknüpft sind könnte uns ja der Originalposter sagen, weil sein Beispiel 819 beide Regeln erfüllt, bin ich zunächst von einer UND-Verknüpfung ausgegangen (ist ja für den von mir geposteten Code unerheblich).
 
S

SlaterB

Gast
weiß jetzt nicht was der Link sagen soll, außer meine Position zu bestätigen,

das ist doch alles eindeutig? die Menge beginnt bei einem Element und baut sich von dem aus auf,
1 (oder mehrere) Start-Elemente und Regeln besagen was daraus wird


da steht nicht
für n aus den natürlichen Zahlen ist 2n+1 in M
da steht
für n aus M ist 2n+1 in M
induktiv!


anderes Beispiel:
die Menge der Sätze der deutschen Sprache:
das sind die 30 Buchstaben + ein paar Satzzeichen (~40 Startelemente)
sowie beliebige Hintereinanderausführungen davon

+ die Regel:
x e M wenn x = a hinter b und a e M und b e M

-> unendlich viele Kombinationen, alle Sätze der deutschen Sprache
unendlich große Menge
 

Leroy42

Top Contributor
SlaterB hat gesagt.:
da steht nicht
für n aus den natürlichen Zahlen ist 2n+1 in M
da steht
für n aus M ist 2n+1 in M
induktiv!

:shock: Stimmt ja! Das habe auch ich übersehen;

(Kann man da jetzt eine einfache Testbedingung angeben?)
 
G

Guest

Gast
Achsooooooo verstehe... ich hatte hinter dem ganzen Gedöns etwas viel komplizierteres vermutet... sowas in Richtung Grammatik und feststellen ob ein Element mit der Grammatik gebildet werden kann... dabei ist das einfach sozusagen ne mathematische Kettenreaktion. Man läßt die Regeln auf sein Startelement los und ab geht er... der Peter... ähh die Post.

Zwar meldet sich der OP nicht mehr, aber dafür kann ich jetzt die Aufgabe lösen. Danke Slati!
 
M

MrChance

Gast
... wenn die Reihe von SlaterB stimmt, fehlt aber die 12 - die durch 3 teilbar wäre. ;-)
 
M

MrChance

Gast
will sagen: Die Abbildungsregel ist nicht bijektiv. Man kann nicht von der rechten Seite wieder auf die linke Seite schliessen.
Es gibt kein n € M -> 12. Also ist 12 nicht Element von M.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Eine Methode die erkennt ob die ein gegebene zahl größer oder kleiner sein muss Java Basics - Anfänger-Themen 2
KogoroMori21 Java Datum Differenz (kleiner Fehler) Java Basics - Anfänger-Themen 10
A jar File kleiner bekommen Java Basics - Anfänger-Themen 3
O Vererbung Ueben mit kleiner Datenstruktur von Räumen Java Basics - Anfänger-Themen 10
P String größer kleiner gleich vergleichen Java Basics - Anfänger-Themen 6
Q Variablen If Anweisung, kleiner fehler Java Basics - Anfänger-Themen 8
F Kleiner Formatierungsfehler Java Basics - Anfänger-Themen 3
J Kleiner Taschenrechner! Anfänger braucht Hilfe :( Java Basics - Anfänger-Themen 2
S GUI kann im WindowBuilder nicht mehr (größer kleiner ziehen) Java Basics - Anfänger-Themen 2
D kleiner Taschenrechner mit switch fehlerhaft Java Basics - Anfänger-Themen 1
H Erste Schritte Ergebniss soll kleiner als 1000 sein Java Basics - Anfänger-Themen 4
DStrohma Operatoren Kleiner-Zeichen in Größer-Zeichen ändern wenn boolen true? Java Basics - Anfänger-Themen 6
M Kleiner unauffindbarer Fehler im Programm Java Basics - Anfänger-Themen 6
E Erste Schritte Array soll kleiner werdenden String erstellen Java Basics - Anfänger-Themen 5
J Vererbung Kleiner Fehler, weiß aber nicht warum und wo Java Basics - Anfänger-Themen 9
R Inhalt vom String größer oder kleiner als Java Basics - Anfänger-Themen 16
J kleiner Fehler im FAQ Parser für mathematische Formeln Java Basics - Anfänger-Themen 5
F Objekte vergleichen kleiner/größer? Java Basics - Anfänger-Themen 4
L Kleiner erster p2p-Chat Problem Java Basics - Anfänger-Themen 2
K Kleiner Fehler bei Methoden Implementierung Java Basics - Anfänger-Themen 6
R Primzahl kleiner 3 Java Basics - Anfänger-Themen 2
O Ist diese Zahl größer oder kleiner 0? Java Basics - Anfänger-Themen 6
M Kleiner Fehler im Array... Java Basics - Anfänger-Themen 2
E BubbleSort kleiner Fehler? Java Basics - Anfänger-Themen 14
T kleiner fehler mit der "Zählvariable" Java Basics - Anfänger-Themen 6
S Kleiner Palindromtest Java Basics - Anfänger-Themen 4
C Größer - Kleiner - Zeichen in Strings Java Basics - Anfänger-Themen 3
M Kleiner Vokabeltrainier Java Basics - Anfänger-Themen 45
V Kleiner Wecker mit Gui (Brauche Tipps) Java Basics - Anfänger-Themen 5
A JButton wird kleiner mit Border Java Basics - Anfänger-Themen 3
A Kleiner Fehler Java Basics - Anfänger-Themen 4
G Kleiner Währungsrechner - Probleme ! Java Basics - Anfänger-Themen 16
H Fenster größer kleiner machen(Inhalt soll mitziehen) Java Basics - Anfänger-Themen 4
F Kleiner Fehler, den ich aber leider nicht finde. Java Basics - Anfänger-Themen 4
G gerade zahlen größer und kleiner null Java Basics - Anfänger-Themen 6
Neuling47 Denkfehler? Hilfe Java Basics - Anfänger-Themen 11
EinNickname9 Denkfehler bei einfacher Schleife Java Basics - Anfänger-Themen 83
T Klassen Denkfehler im Klassen "dynamisch" instanzieren? Java Basics - Anfänger-Themen 4
CptK Methoden Timer & Mathematischer Denkfehler Java Basics - Anfänger-Themen 7
DanielsLPecke Denkfehler in kA Java Basics - Anfänger-Themen 8
m²labs Denkfehler in verschachteltem for Java Basics - Anfänger-Themen 2
D Denkfehler in der If-Anweisung Java Basics - Anfänger-Themen 3
C OOP Verwaltungssystem von MP3 Dateien/ Strukturfehler bzw. Denkfehler Java Basics - Anfänger-Themen 5
I OOP This-Referenzs > wo liegt mein Denkfehler? Java Basics - Anfänger-Themen 24
R Java Reiter Denkfehler Java Basics - Anfänger-Themen 4
D denkfehler, bereich verschieben awt Java Basics - Anfänger-Themen 3
D Denkfehler Singleton Java Basics - Anfänger-Themen 53
S Denkfehler? bei Sortiertem einfügen? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben