www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Dt. Schulen im Ausland: Mathe-Seiten:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Java" - Array schrittweise vergrößern
Array schrittweise vergrößern < Java < Programmiersprachen < Praxis < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Java"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Array schrittweise vergrößern: Idee
Status: (Frage) beantwortet Status 
Datum: 00:12 Di 13.11.2012
Autor: Maurizz

Aufgabe
Das Pascalsche Dreieck stellt die Binomialkoeffizenten n graphisch dar. Ihre Methode getNextPascalRow() soll bei jedem Aufruf die jeweils nächste Zeile des Pascaldreiecks beginnen bei [1] zurückgeben, allerdings nur solange jeder einzelne Eintrag in der Zeile noch mit dem Datentyp des zurückzugebenen Arrays darstellbar ist. Sobald letzteres nicht mehr möglich ist, soll die Methode wieder bei [1] beginnen und so einen „unendlichen zirkulären Strom von Pascaldreieck-Zeilen“ bereitstellen.



Hallo,

meine Frage lautet, ob es möglich ist ein Array Schrittweise zu erhöhen. D.h wenn ich die Methode erneut aufrufe soll er lediglich die Arraylaenge um 1 erhöhen und nicht ein völlig neues erstellen wo die alten Werte nicht mehr vorhanden sind. Jegliche meiner Versuche haben entweder ein komplett neues Array angelegt, oder waren nicht kompilierbar.

Da fällt mir grad ein... es muss doch möglich sein ein Array unbestimmter größe zu erstellen, so dass ich einfach beliebig viele Elemente hinzufügen kann.

        
Bezug
Array schrittweise vergrößern: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 01:10 Di 13.11.2012
Autor: Maurizz

Gut ich habe vorerst eine Lösung gefunden:

public static int[] getNextPascalRow() {
if (pascal.length < 1)
{
       pascal = new int[1];
}
for (p = 0; p < pascal.length; p++)
{
       pascal[0] = 1; pascal[pascal.length - 1] = 1;
}
        truePascal = pascal.clone();
pascal = new int[p+1];
return truePascal;
}

Jetzt stellt sich natürlich die Frage wie ich die Lücken zwischen den [1].....[1] effektiv auffüllen kann. Ob das wohl am besten rekursiv zu lösen wäre?

Bezug
                
Bezug
Array schrittweise vergrößern: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 02:41 Di 13.11.2012
Autor: Maurizz

Das Problem ist gelöst!

public static int pascalscherLueckenfuellerX3000(int[] a) {  // Der Name ist Programm
if (truePascal[p-1] + truePascal[p] < 0) // Ueberprueft ob die Addition nach hinten los geht
{
       return -1;
}
       return truePascal[p-1] + truePascal[p];
}
public static int[] getNextPascalRow() {
  for (p = 0; p < dummyPascal.length; p++)
    {
       if (p == 0 || p == dummyPascal.length - 1)
        {
     dummyPascal[p] = 1;
        } else
     {
dummyPascal[p] = pascalscherLueckenfuellerX3000(truePascal);
if (dummyPascal[p] == -1)
{
     dummyPascal = new int[1]; // Ist die Addition nach hinten losgegangen muessen wir von vorne beginnen.
     return dummyPascal;  // Hier darf der dummy mal den truePascal spielen, wenn auch nur fuer eine Runde:)
}
       }
    }  

truePascal = dummyPascal.clone();
dummyPascal = new int[p+1];
return truePascal;
}

Bezug
                        
Bezug
Array schrittweise vergrößern: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 03:19 Di 13.11.2012
Autor: reverend

Hallo Maurizz,

ich hoffe, ich habe das richtig verstanden, dass Du allein mit dem Problem fertig geworden bist. Daher habe ich Deine Fragen auf den Status Mitteilung geändert.

Wenn das auf einem Missverständnis beruht, sag hier einfach Bescheid. Dann ändert es jemand zurück, vielleicht sogar ich. ;-)

Übrigens: mit dem Datentyp double könntest Du ziemlich große Pascalsche Dreiecke erzeugen...
Um vorher herauszufinden, wie groß, braucht man nicht nur die Formel für die Binomialkoeffizienten, sondern auch die []Stirling-Formel.
Dann kannst Du auch Dein Array gleich in der nötigen Größe anlegen.

Grüße
reverend

PS: Ach ja - der größte Binomialkoeffizient steht immer in der Mitte, in der Hälfte der Fälle sogar gleich zweimal. :-)


Bezug
        
Bezug
Array schrittweise vergrößern: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 14:12 Di 13.11.2012
Autor: Event_Horizon

Hallo!

Ich weiß nicht, ob du auf den Datentyp INT festgelegt bist. Ich würde empfehlen, UNSIGNED INT zu nehmen, dadurch verdoppelst du den möglichen Zahlenbereich, und wirst noch eine weitere Zeile berechnen können.

Den Überlauf kannst du dennoch feststellen: Die Summe der beiden Zahlen ist dann kleiner als die beiden Zahlen.


Bezug
                
Bezug
Array schrittweise vergrößern: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 14:58 Di 13.11.2012
Autor: Valerie20

In Java gibt es kein "unsigned".

Valerie


Bezug
                        
Bezug
Array schrittweise vergrößern: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 15:55 Di 13.11.2012
Autor: reverend

Hallo Valerie,

> In Java gibt es kein "unsigned".

Stimmt. Aber man kann es prima virtuell nachmachen, indem man einfach die passende Konstante addiert oder subtrahiert...

Trotzdem bringt das in der Tat nur eine Zeile mehr, und ein Rekordversuch war in der Aufgabe ja gar nicht gefordert. ;-)

Grüße
reverend


Bezug
                                
Bezug
Array schrittweise vergrößern: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 00:19 Mi 14.11.2012
Autor: Valerie20

Hi Reverend,

> Aber man kann es prima virtuell nachmachen, indem
> man einfach die passende Konstante addiert oder
> subtrahiert...

Stimmt. [winken]

Valerie  

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Java"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.vorhilfe.de