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

Informatiker Board » Themengebiete » Praktische Informatik » array die zweite » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen array die zweite
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Grisu
unregistriert
array die zweite Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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..
04.12.2013 22:58
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 
*/


__________________
Syntax Highlighting fürs Board (Link)
05.12.2013 07:08 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Grisu
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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...
05.12.2013 08:41
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Da geht es weiter.

__________________
Syntax Highlighting fürs Board (Link)
05.12.2013 19:04 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » array die zweite