Dies ist eine statische Kopie unseres alten Forums. Es sind keine Interaktionen möglich.
This is a static copy of our old forum. Interactions are not possible.

Gast42

Unregistered

1

Tuesday, October 30th 2007, 11:20pm

Übungsaufgabe Java Hilfe :'(

Die Fragestelung:

Auf einer Beerdigung soll jeder der n Trauernden jedem anderen genau einmal die
Hand drücken. Die „Trauernden“ sollen durch ein Feld ganzer Zahlen dargestellt
werden, das anfangs nur Nullen enthält. Bei jedem „Händedruck“ wird dann bei beiden
„Drückenden“ dieser Wert um jeweils eins erhöht.

wie verwende ich das Array??in der schleife das gebiet ist neu für mich könnt ihr mir helfen???
ich habe schon überlegt die trauernden n mit einer forschleife durchlaufen zulassen aber das ergebnis wäre dann ja 1234... kennt sich hier wer aus??

ich muss ja als ausgabe 00000 11000 21100 31110 41111 42211 4321 44222 44332 44433 44444 erhalten wie kann ich das nur umsetzen :(



import java.applet.*;
public class Applet1 extends Applet
{
final int n = 5;
int[] trauernde;
public void init()
{
//da kommt der Code hin
}
private void haendeSchuetteln()
{
//da kommt der Code hin
}
//ggf. kommt noch mehr
}


a: Schreiben Sie eine Methode init, die ein solches Zahlenfeld erzeugt und mit Nullen füllt.
b: Schreiben Sie die Methode haendeSchuetteln, die wie angegeben arbeitet und die
auch ausgeführt wird. (Eine Ausgabe erfolgt in dem Applet nicht!)
c: Erläutern Sie durch Text und Skizzen die Unterschiede bei der Erzeugung eines Feldes,
das (wie hier) ganze Zahlen enthält gegenüber einem anderen, das Objekte (z.B. Bälle)
enthält.

Markus

the one and only Unterstrich!

Posts: 2,571

Date of registration: Oct 9th 2003

2

Tuesday, October 30th 2007, 11:45pm

wenn ich dich richtig verstehe, brauchst du doch nur eine vorschleife für jeden trauernden schreiben, der dann jedem anderen trauernden (noch ne vorschleifer in der ersten) die "hand drückt".
dabei noch den index abfragen, damit sich die leute nicht selbst die hand drücken, fertig.

array:
0000 (initialisierung)
0111
1122
2223
3333

unterstrich: sich nicht selbst die Hand schütteln (:
Charmant sein? Hab ich längst aufgegeben. Glaubt mir doch eh keiner...

This post has been edited 1 times, last edit by "Markus" (Oct 30th 2007, 11:45pm)


Ray-D

Alter Hase

  • "Ray-D" is male

Posts: 690

Date of registration: Oct 9th 2002

Location: Zimbabwe-Island Ost Beiträge: 3.427

Occupation: Informatiker

3

Wednesday, October 31st 2007, 12:33am

vorschleife
:)

Source code

1
2
3
vor(12 Uhr){
  // Code
}

so?

Kleiner Spass ;)

Hallo Gast42
kennt sich hier wer aus??

Ich vermute, jeder hier tut dies :)

Quoted

wie verwende ich das Array??

Es geht wahrscheinlich um eine Schulaufgabe. Wie man auf ein Array zugreifen kann um zu lesen oder zu schreiben wurde Euch bestimmt auch erklärt.
Als erstes solltest Du das Array mit der Größe n instanziieren.

Source code

1
2
3
4
public void init(){
  trauernde = new int[n];
  // Weiterer Code
}

Dann könnte man mit einer forschleife das Array mit Nullen füllen.

Quoted

in der schleife das gebiet ist neu für mich könnt ihr mir helfen???

Wie eine forschleife aussieht ist auch kein Geheimnis

Source code

1
2
3
for (Initialisierung; Schleifenbedingung; Inkrement){
  // Anweisungen
}

Für Deinen Fall beispielsweise so

Source code

1
2
3
for (int i = 0; i < n; i++){
  // Anweisungen
}

Nun musst Du nur noch "0" an alle Stellen des Arrays schreiben, aber ich bin sicher, dass Du alleine herausfindest, wie das geht.

Das Händeschütteln kann man mit zwei ineinander Verschachtelten forschleifen lösen, wie Markus schon anmerkte. Wenn man ein wenig überlegt, kann man den Startwert der inneren Schleife geschickt wählen, so das eine Überprüfung, ob man sich selbst die Hand schüttelt nicht notwendig ist. Die eigentlichen Anweisungen sind dann nur den Wert einer Stelle im Array auszulesen und um eins zu erhöhen. Ich habe für n = 5 auch diese Werte erhalten

Source code

1
2
3
4
5
6
7
8
9
10
(1, 1, 0, 0, 0) 
(2, 1, 1, 0, 0) 
(3, 1, 1, 1, 0) 
(4, 1, 1, 1, 1) 
(4, 2, 2, 1, 1) 
(4, 3, 2, 2, 1) 
(4, 4, 2, 2, 2) 
(4, 4, 3, 3, 2) 
(4, 4, 4, 3, 3)
(4, 4, 4, 4, 4)


Viel Erfolg bei der Aufgabe. Du solltest Dich aber zu erst mit der Materie (Schleifen, Arrays, ...) selbst auseinander setzen, es wird Dir wenig helfen die komplette Lösung präsentiert zu bekommen.
"ob ich alles weiss, was wir wissen, weiss ich auch nicht, aber ich weiss natürlich niemand von uns weiss etwas was er nicht weiss" - Wolgang Schäuble
Freiheit wird nicht erbettelt, sondern erkämpft


Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von »Ray-D« (Heute, 04:29)

This post has been edited 1 times, last edit by "Ray-D" (Oct 31st 2007, 1:21am)


Gast42

Unregistered

4

Wednesday, October 31st 2007, 1:38am

hi danke für deine hilfe. also die init methode habe ich fertig


Source code

1
2
3
4
5
6
7
8
9
10
11
12
 public void init() { trauernde= new int [5]; for(int i=0;i<n;i++){trauernde[i]=0;haendeschütteln();}} 
//bei der doppelten vorschleife harpert es noch.. 
[code]private void haendeSchuetteln() 
{for ( int i = 0; i < n; i++ ) 
{ for(int k=0; k<n ; k++) 
{trauernde[i]=trauernde[i]+1;trauernde[i]=trauernde[k]+1; 


System.out.println(trauernde[i]); 

} 
}


wo ist der fehler?? :?:

This post has been edited 1 times, last edit by "Gast42" (Oct 31st 2007, 1:42am)


retr0virus

Trainee

  • "retr0virus" is male

Posts: 83

Date of registration: Oct 2nd 2006

Location: NRW -> Bad Oeynhausen

Occupation: B.Sc. Informatik, 8.Semester

5

Wednesday, October 31st 2007, 8:32am

Source code

1
trauernde[i]=trauernde[i]+1;trauernde[i]=trauernde[k]+1

Ist das Absicht, dass du trauernde[ i ] erst auf trauernde[ i ]+1 und dann sofort diesen Wert wieder mit trauernde[ k ]+1 setzt? ;)
Ein Nichts im Nichts und ins Nichts vertrieben!
- Ren Dhark

Markus

the one and only Unterstrich!

Posts: 2,571

Date of registration: Oct 9th 2003

6

Wednesday, October 31st 2007, 10:36am


Source code

1
2
3
vor(12 Uhr){
  // Code
}
Guck auf die Uhr, guck auf meine Zeitzone -> es war nach 12h. Bin also entschuldigt :p

Quoted

Nun musst Du nur noch "0" an alle Stellen des Arrays schreiben, aber ich bin sicher, dass Du alleine herausfindest, wie das geht.

Da du wahrscheinlich ein int-array benutzt, brauchst du das nicht mal, da diese automatisch mit 0 initialisiert werden.
Charmant sein? Hab ich längst aufgegeben. Glaubt mir doch eh keiner...

This post has been edited 1 times, last edit by "Markus" (Oct 31st 2007, 10:36am)


Gast42

Unregistered

7

Wednesday, October 31st 2007, 11:02am

Quoted

ich weiß bei der for-schleife nicht weiter..

Source 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
import java.applet.*;
public class Beerdigung extends Applet 
{
   final int n = 5; 
   int[] trauernde; 
   public void init() 
   {
      trauernde= new int [5]; 
      for(int i=0;i<n;i++)
      {
          trauernde[i]=0; 
          System.out.println(trauernde[i]); 
      } 
   haendeSchuetteln(); 
   }
   private void haendeSchuetteln() 
   {
   for ( int i = 0; i < n; i++ ) 
   { 
       for(int k=i; k<n ; k++) 
       { 

        trauernde[i]=trauernde[i]+1;
        trauernde[k]=trauernde[k]+1; 

        System.out.println(trauernde[i]); 

        } 
     } 
  } 
}


die ausgabe wäre 00000 12345 1234 123 12 1 :(







Kann mir nicht jemand die lösung presentieren?

This post has been edited 2 times, last edit by "Gast42" (Oct 31st 2007, 11:55am)


SUPERDIM

Junior Schreiberling

  • "SUPERDIM" is male

Posts: 171

Date of registration: Oct 7th 2004

Location: Hannover

Occupation: 1. Semester M.Sc. Informatik

8

Wednesday, October 31st 2007, 11:46am

Nein. Formatier erstmal deinen Quellcode. Den kann man so nicht vernünftig lesen.

http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html

smeyer82

Alter Hase

  • "smeyer82" is male

Posts: 372

Date of registration: Oct 14th 2002

Location: Ex-Kanzlerstadt Hannover

9

Wednesday, October 31st 2007, 11:47am

Quoted from "Gast42"


Kann mir nicht jemand die lösung presentieren?


Ist das hier ein "mach meine hausaufgaben"-forum?
Klingt jetzt vielleicht ein bisschen unfreundlich, aber soll es auch.
Das hier ist nunmal ein Forum für Informatik-Studenten. Da sollte man erwarten, dass jeder der hier ein Frage hat auch ein wenig Grips selbst in die Lösung investiert.
"Sir! We are surrounded!" - "Excellent! We can attack in any direction!"

This post has been edited 1 times, last edit by "smeyer82" (Oct 31st 2007, 11:48am)


yv

Junior Schreiberling

  • "yv" is female

Posts: 229

Date of registration: Dec 11th 2001

10

Wednesday, October 31st 2007, 12:30pm

Hier 2 Links, die dir helfen sollten:

http://javabuch.de/

http://www.galileocomputing.de/openbook/javainsel6/

Das Gemeine beim Programmieren ist, dass mann es nur lernt, wenn man es selbst macht. Aber spätestens wenn man ein Erfolgserlebnis hat, macht es auch Spaß! :D

Gast42

Unregistered

11

Wednesday, October 31st 2007, 2:43pm

Lösung!

Ihr seit echt gemein, nagut ich habe es denke ich mal geschafft. Schauts euch an:


Source code

1
 import java.applet.*; public class Beerdigung extends Applet { final int n = 5; int[] trauernde; public void init() { trauernde = new int[5]; for (int i = 0; i < n-1; i++) { trauernde[i] = 0; } haendeSchuetteln(); } public void ausgabe(){ for (int i = 0; i < n-1; i++) { System.out.print(trauernde[i]); } } private void haendeSchuetteln() { for (int i = 0; i < n; i++) { for (int k = i+1; k < n; k++) { trauernde[i] = trauernde[i] + 1; trauernde[k] = trauernde[k] + 1; ausgabe(); } } } } 

Wie kann ich anstatt der Ausgabe :
1100211031114111422143224422443344434444

die viel schönere Ausgabe:

(1, 1, 0, 0, 0) (2, 1, 1, 0, 0) (3, 1, 1, 1, 0) (4, 1, 1, 1, 1) (4, 2, 2, 1, 1) (4, 3, 2, 2, 1) (4, 4, 2, 2, 2) (4, 4, 3, 3, 2) (4, 4, 4, 3, 3) (4, 4, 4, 4, 4)

erhalten??


Markus

the one and only Unterstrich!

Posts: 2,571

Date of registration: Oct 9th 2003

12

Wednesday, October 31st 2007, 2:47pm

Äh, kannst du deinen Code mal so formatieren, dass er nicht in einer Zeile steht. Liest sich nämlich nicht so toll ;)

Zur Ausgabe: Mit System.out.print(String s); kannst du etwas ausgeben. Also zB System.out.print(")\n"); würdest du als Ausgabe eine schließende Klammer ')' erhalten. \n sorgt dann für einen Zeilenumbruch (diesen kann man alternativ auch automatisch mit System.out.println(String s) erhalten)


Ach nochwas: Nein, wir sind nicht gemein. Bei uns bekommst du keine Komplettlösung, sondern etwas viel besseres: Hilfe zu Selbsthilfe.
Auch wenn die Antworten von SUPERDIM und smeyer82 leider eher Negativbeispiele für den Umgangston im Forum darstellen ...
Charmant sein? Hab ich längst aufgegeben. Glaubt mir doch eh keiner...

This post has been edited 2 times, last edit by "Markus" (Oct 31st 2007, 2:51pm)


Gast42

Unregistered

13

Wednesday, October 31st 2007, 6:39pm

danke :thumbsup: