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

Informatiker Board » Themengebiete » Praktische Informatik » array a(i) fehler » 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 a(i) fehler
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
neuling96
unregistriert
array a(i) fehler Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
public class Algorithmen {

   
    public static int[] countElements(int[] werte, int max, int numBuckets) {
        int x=0;
  int [] a = new int [numBuckets];

int [] b = new int [numBuckets];
int [] z = new int [numBuckets];
int w=0;

x=(max-numBuckets)/(numBuckets);
    
 for (int i=0;i<numBuckets;i++){
a[i]=i+x*(i);
}
   
 for (int i=0;i<numBuckets;i++){
b[i]=i+(i+1)*(x);
}
 

 for (int i=0;i<numBuckets;i++){
for (int y=0;y<werte.length;y++){
if(werte[y]<=b[i]  && werte[y]>=a[i]    ){
w++;
 }
}
z[i]=w;

}
return z;
}
 public static void main(String[] args) {
               System.out.print("countElements{0, 9, 2, 3, 4, 5, 7, 8, 1},10, 2): { ");
        int[] werte = {0, 9, 2, 3, 4, 5, 7, 8, 1};
        int max = 10;
        int numBuckets = 2;
        int[] counted = countElements(werte, max, numBuckets);
        for (int i = 0; i < counted.length; i++) {
            System.out.print(counted[i] + " ");
        }
        System.out.println("}"); // { 5 4 }
    }

}



auf a(i) wird nicht richtig zugegriffen, aber wies0?
16.12.2014 20:43
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

Je genauer du die Frage stellst, desto höher sind die Chancen auf eine sinnvolle Antwort.
Ich sehe hier ein Programm, dass Arrays erstellt, irgendwas damit tut und dann { 5 9 } ausgibt.

Ich habe keine Ahnung, was die eigentliche Intention ist, also kann ich dir so nicht helfen.
Fangen wir also damit an: was soll das Programm tun?

__________________
Syntax Highlighting fürs Board (Link)
16.12.2014 20:57 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
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

Implementieren Sie eine offentlich sichtbare statische Methode int[] countElements(int[]
werte, int max, int numBuckets) in Java, die das Integer-Intervall [0;max-1] in gleich große
zusammenhängende Teilintervalle unterteilt und in einem Ergebnisarray des Typs int[] die Anzahl der
Array-Elemente aus werte zur¨uckgibt, die in das entsprechende Teilintervall fallen. Sie konnen davon
ausgehen, dass beide Arrays eine L¨ange von mindestens 1 haben, dass max > 0 und max durch
numBuckets teilbar ist. Außerdem konnen Sie annehmen, dass alle Zahlen in werte im Intervall
[0;max-1] liegen.
16.12.2014 21:00
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

Könnte man zwar deutlich kürzer machen, aber du hast es ja schon fast.
Lösche die Variable w. Zeile 26 wird zu z[i]++; Und Zeile 29 fliegt raus. feritg.

__________________
Syntax Highlighting fürs Board (Link)
16.12.2014 21:08 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
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

vielen dank hat funktioniert, aber was genau war falsch an

w++;
}
}
z[i]=w;
?

"Könnte man zwar deutlich kürzer machen"

wie?
16.12.2014 21:13
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

Du hast den Wert zu jedem Bucket hinzugefügt, solange der Mindestwert passt. Alternativ kannst du auch nach z[i]=w;[/“] ein [b]w=0; einfügen, dann geht es auch. Du hattest nämlich den Zähler nicht zurückgesetzt.

Das, woran ich beim Lesen der Aufgabe als ersten gedacht habe, ist das hier:
code:
1:
2:
3:
4:
5:
6:
7:
public static int[] countElements(int[] werte, int max, int numBuckets) {
	int[] result = new int[numBuckets];
	for (int i = 0; i < werte.length; i++) {
		result[werte[i] * numBuckets / max]++;
	}
	return result;
}


__________________
Syntax Highlighting fürs Board (Link)
16.12.2014 21:19 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
neuling96
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

wow das ist kurz! Daumen hoch
16.12.2014 21:34
neuling96
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

(istquadrat prüft ob zahl eine quadratzahl ist
int fib gibt ein n elmenten array mit den werten der fib reihe)
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:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
public class Algorithmen {

    
    public static boolean istQuadratzahl(int zahl) {
int n=0;
while ( n*n< zahl){
n++;       
}
if (n*n==zahl){
return true;
}else {
return false;
}

    }

    public static int[] fib(int n) {
        int[] a= new int [n];
           a[0]=0;
           a[1]=1;
    for (int i=2; i<n;i++){
    a[i]=a[i-1]+a[i-2];
    }
 }
    public static int[] countElements(int[] werte, int max, int numBuckets) {
     int x=0;
  int [] a = new int [numBuckets];

int [] b = new int [numBuckets];
int [] z = new int [numBuckets];
int w=0;

x=(max-numBuckets)/(numBuckets);
    
 for (int i=0;i<numBuckets;i++){
a[i]=i+x*(i);
b[i]=i+(i+1)*(x);
}
 

 for (int i=0;i<numBuckets;i++){
for (int y=0;y<werte.length;y++){
if((werte[y]<=b[i]  && werte[y]>=a[i] )   ){
z[i]++;
 }
   }
 return z;
}

    
  

    public static void main(String[] args) {
        System.out.println("istQuadratzahl(1337): " + istQuadratzahl(1337)); // false

        System.out.print("fib(6): { ");
        int[] fibonacci = fib(6);
        for (int i = 0; i < fibonacci.length; i++) {
            System.out.print(fibonacci[i] + " ");
        }
        System.out.println("}"); // { 0 1 1 2 3 5 }

        System.out.print("countElements({0,9,2,3,4,5,7,8,1}, 10, 2): { ");
        int[] werte = {0, 9, 2, 3, 4, 5, 7, 8, 1};
        int max = 10;
        int numBuckets = 2;
        int[] counted = countElements(werte, max, numBuckets);
        for (int i = 0; i < counted.length; i++) {
            System.out.print(counted[i] + " ");
        }
        System.out.println("}"); // { 5 4 }
    }

}


illegal start of expression

beim public static void

wie kann es beheben?
16.12.2014 23:50
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

Du hast schon wieder die Klammern falsch gesetzt.
Versuche dich am Einrücken, dann findest du den Fehler auch schneller.

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:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
    public static boolean istQuadratzahl(int zahl) {
		int n=0;
		while ( n*n< zahl){
			n++;       
		}
		if (n*n==zahl){
			return true;
		} else {
			return false;
		}

    }

    public static int[] fib(int n) {
        int[] a= new int [n];
        a[0]=0;
        a[1]=1;
	    for (int i=2; i<n;i++){
    		a[i]=a[i-1]+a[i-2];
	    }
	    return a;
    }
    
    public static int[] countElements(int[] werte, int max, int numBuckets) {
		int x=0;
		int [] a = new int [numBuckets];

		int [] b = new int [numBuckets];
		int [] z = new int [numBuckets];
		int w=0;
		
		x=(max-numBuckets)/(numBuckets);
	    
		for (int i=0;i<numBuckets;i++){
			a[i]=i+x*(i);
			b[i]=i+(i+1)*(x);
		}
 

		for (int i=0;i<numBuckets;i++){
			for (int y=0;y<werte.length;y++){
				if((werte[y]<=b[i]  && werte[y]>=a[i] )){
					z[i]++;
				}
			}
		}
		return z;
	}
    
  

    public static void main(String[] args) {
        System.out.println("istQuadratzahl(1337): " + istQuadratzahl(1337)); // false

        System.out.print("fib(6): { ");
        int[] fibonacci = fib(6);
        for (int i = 0; i < fibonacci.length; i++) {
            System.out.print(fibonacci[i] + " ");
        }
        System.out.println("}"); // { 0 1 1 2 3 5 }

        System.out.print("countElements({0,9,2,3,4,5,7,8,1}, 10, 2): { ");
        int[] werte = {0, 9, 2, 3, 4, 5, 7, 8, 1};
        int max = 10;
        int numBuckets = 2;
        int[] counted = countElements(werte, max, numBuckets);
        for (int i = 0; i < counted.length; i++) {
            System.out.print(counted[i] + " ");
        }
        System.out.println("}"); // { 5 4 }
    }


istQuadratzahl gefällt mir nicht, ist viel zu langsam.

code:
1:
2:
3:
4:
public static boolean istQuadratzahl(int zahl) {
	int wurzel = (int)Math.sqrt(zahl);
	return wurzel * wurzel == zahl;
}


__________________
Syntax Highlighting fürs Board (Link)
17.12.2014 14:56 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 a(i) fehler