Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » array die zweite » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 4 Beiträge
eulerscheZahl

Da geht es weiter.
Grisu

Hmm, weiß nicht, ich hatte es auch erst wesentlich kürzer, dann dachte ich, mach es mal ausführlich, wenn es nicht hinhaut, jetzt hab ich einfach den Krempel noch mal geschrieben und es funktioniert....
Eigenartig, vielleicht habe ich irgendetwas verpatzt...

Kannst du mir villeicht noch helfen, das ganze rekursiv auszudrücken?

ich habe das Problem, dass, wenn ich die Funktion aufrufe, ja wieder ein Array gefordert wird.

Vielen Dank...
eulerscheZahl

Hast du dein Programm wieder abgetippt und dabei einen Fehler korrigert?
Bei mir funktioniert es, ich habe es dann noch etwas gekürzt

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
	 public static void abl(int[] b){
		int a = b[0];
		for(int i = 1; i < b.length; i++){
			if(b[i] == 1)
				a = (a + 1) % 2;
			b[i] = a;				
		}
	}
	
	public static void main(String[] args) {
		int[] b = {1, 1, 0, 1, 0, 0, 1, 1}; 
		System.out.print("b davor:   ");
		for(int j = 0; j < b.length; j++)
			System.out.print(b[j] + " ");
		abl(b);
		System.out.print("\nb danach:  ");
		for(int j = 0; j < b.length; j++)
			System.out.print(b[j] + " ");
	}

/*
b davor:   1 1 0 1 0 0 1 1 
b danach:  1 0 0 1 1 1 0 1 
*/
Grisu array die zweite

Hi @ all,

ich möchte eine rekursive Folge wiedergeben.

Und zwar, ich lese einen array [latex]b=(b_0, ... ,b_{n-1})[/latex] mit [latex]b_i \in \left\{ 0, 1 \right\}[/latex]

Nun ist der Startwert meiner Folge [latex]a_0=b_0[/latex].

Jeder weiter Wert wird rekursiv ermittelt durch

[latex]a_i=a_{i-1}[/latex] falls [latex]b_i=0[/latex] und [latex]a_i \neq a_{i-1}[/latex], also [latex]a_i=(a_{i-1}+1)\mod 2[/latex], falls [latex]b_i=1[/latex]

Die Veränderung soll in dem vorhandenen array gespeichert werden.

Ich habe das ganze folgendermaßen umgesetzt:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
 public static void abl(int[] b){
		int a=0;
		for(int i=0;i<b.length;i++){
			if(i==0){
				a=b[i];
			}
			if((i>0)&&(b[i]==0)){
				a=a;
			}
			if((i>0)&&(b[i]==1)){
				a=(a+1)%2;
			}
			b[i]=a;
			
		}
		for(int j=0;j<b.length;j++){
			System.out.print(b[j]+" ");
		}
	}


Jetzt nehme ich den Vektor 1,1,0,1,0,0,1,1 entgegen, nach Ablauf sollte es doch sein:

i=0, b_i=1, a=1
i=1, b_i=1, a=0
i=2, b_i=0, a=0
i=3, b_i=1, a=1
i=4, b_i=0, a=1
i=5, b_i=0, a=1
i=6, b_i=1, a=0
i=7, b_i=1, a=1

Da ich am Ende jeder Schleife b[i] mit dem jeweiligen Wert für a überschreibe, sollte der neue Vektor dann doch eigentlich b=(1,0,0,1,1,1,0,1) sein, Ausführen des Programms liefert mir aber 1,1,0,1,0,0,1,1

Nun sehe ich den Fehler nicht.

Eigentlich soll das ganze auch noch ne Rekursion werden...

Schönen Dank schon mal..