Ich hab ein Problem, und zwar lerne ich seit diesem Semester Java. Bin eigentlich ganz gut soweit, jetzt hab ich aber eine Aufgabe, wo ich einfach nicht weiterkomme.
Aufgabenstellung ist folgende:
Schreiben Sie ein Programm, das mit Hilfe geschachtelter Schleifen folgende Ausgabe erzeugt:
1 abcdefg
12 abcdef
123 abcde
1234 abcd
12345 abc
123456 ab
1234567 a
Er hat uns zwei Hilfen gegeben, wobei ich das, was dadrin geschrieben steht schon allein hinbekommen habe, nämlich die beiden Blöcke einzeln bzw. untereinander auszugeben, also nur die Zahlen oder nur die Buchstaben. Ich weiß aber nicht, wie ich das jetzt so hinbekomme, dass das nebeneinander steht.
Wäre nett, wenn mir da jemand helfen könnte
Ich bin nicht ganz sicher, worum es geht? Eine komplette Verschachtelung? Oder ganz einfacher Algo gefragt? Wie auch immer, ich gebe dir mal ein Beispiel in Pascal... damit du noch was zu tun hast, ausserdem soll ja niemand deine Arbeit machen .
br, the.
du hast insgesammt 3 Zählschleifen, eine ist verantwortlich für die Trennung zwischen der Zahl und dem Array, die anderen beiden sind je für die Zahl und den Array verantwortlich. Die Schleifen für Array und Zahl liegen innerhalb der ersten Schleife.
Die erste Schleife zählt die Trennung zwischen Zahl und Buchstabe immer um 1 weiter.
Die anderen beiden Schleifen dienen der Ausgabe. Die Schleife die deine Zahlen ausgibt zählt dabei solange, bis sie den Wert der Variable, die in der ersten Schleife erhöht wird, erreicht hat.
Die Schleife, die deine Wörter ausgibt, zählt immer so lange, bis sie die Länge der Zeile - den Wert der Variable, die bei der ersten Schleife erhöht wird, erreicht hat.
Da ich kein Java kann, versuche ich das ganze mal in Pseudocode aufzuschreiben:
neben den 2 Arrays brauchst du noch 3 Variablen für die Zählschleifen, ich nenne sie mal i,i2, und zaehl
meine 2 Arrays heißen a (Zahlarray), und b (Buchstabenarray)
Das Programm gibt immer zeilenweise zuerst die Zahlen und dann die Ziffern aus. Das Ende der Zahlen geht bei jedem durchlauf der ersten Schleife um eine Stelle weiter. Gleichzeitig verringert sich die Anzahl der Buchstaben.
"(char)(123)": Damit wird die Zahl in ein Zeichen (ich glaub Ansi) umgewandelt. (nennt sich "casting")
"(int)('A')": Damit wird das Zeichen in eine Zahl umgewandelt. (ebenfalls ein "casting")
Damit lässt sich auch mit buchstaben rechnen:
(A+1 =B)
(B+2 =D)
(A+32=a)
(B-1 =A) und so weiter...
"j++": Dürfte klar sein: erhöht j um 1
Was der Code macht dürfte verständlich sein.
Wenn nicht --> PN
[*CODE] Tag, nicht [*Quote]. -Freezy ^O^
EDIT: Wieso verschwinden die Leerzeichen?
Ohne Gliederung ist der Code nur halbsogut lesbar.
Hm, irgendwie ist mir das alles zu kompliziert, kann vielleicht auch daran liegen, dass ich einfach schon zu lange darüber nachdenke *G*
Das mit Pascal versteh ich schonmal gar nicht, davon hab ich nämlich keinen blassen Schimmer. Das zweite versteh ich schon eher, kanns aber grade irgendwie nicht umsetzen (blackout, passiert mir immer, wenn ich ewig vor etwas vorsitze -.-) und das letzte ist schon wieder verwirrend
Der Code im Zitat ist jetzt mein Quelltext, wo die beiden Blöcke einzeln ausgegeben werden. Also das da.
1
12
123
1234
12345
123456
1234567
abcdefg
abcdef
abcde
abcd
abc
ab
a
Mir wärs im Moment echt am liebsten, wenn mir das einer umschreiben würde, ich bin einfach nur noch genervt von dem Kram *g*
toll, bei mir macht er die Leerzeichen auch weg >_< doof. Hoffe, es kann trotzdem jemand verstehen *G+
Sorry, aber das tu ich mir heute nimmer an...
Die Zahlen und die Buchstaben vorher in ein Array zu speichern ist zwar auch eine idee aber an dieser stelle nicht so sinnvoll.
versuch einfach mal, den Code zu verstehn: (Danke Freezy ^^)
Wenn du keine Lust hast, versuch ich mich -->vielleicht<-- morgen abend an deinem code. Heute mag mein Hirn nimmer...
[EDIT!!1]Arrgl... vergiss den Post... Nudelsalat`s Code scheint sehr richtig zu sein
Ich weis jetzt nicht ob das so erlaubt ist in deiner Aufgabe aber so wie wir uns das gerade ausgedacht haben (me und TBR ^^) scheint es die einfachste lösung zu sein. Leider konnten wir das ganze nicht testen und wir übernehmen keine Garantie das das soo~ auch hinhaut
Einfachste lösung: 2 EINDIMENSIONALE Arrays die eigentlich alles schon vorgefertigt in der richtigen Reihenfolge haben. In der einen Schleife gibst du beide sachen gleichzeitig aus.
Hmm...
Uns fällt gerade ein das du etwas von einer Geschachtelten Schleiffe gesagt hast O_o ... dann müsste man das ganze ein bischen umänern ^^° Die geschachtelte schleife ist hier wie du siehst überhaupt nicht von nöten, aber wenn du das brauchst können wir uns gerne noch einmal davor klemmen
Hm, also da es eine Aufgabe ist, wo wir vorher gerade Arrays besprochen haben, geh ich mal stark davon aus, dass man es als Array speichern soll. Es steht auch extra noch erhöhter Schwierigkeitsgrad dahinter (wobei das natürlich relativ ist, ich hab ja erst ein Semester lang Java und sonst noch keine Programmiersprache).
Und ja, geschachtelt soll es auch sein.
Ansonsten muss ich halt sehen, was der Dozent am Donnerstag sagt, aber trotzdem danke
Ach ja, wenn ihr sonst noch langeweile habt *hust* ich soll noch einen Code schreiben, in dem ich 10000 Werte per Zufall generiere und einem Array zuweise (was kein Problem ist) und die dann der Größe nach sortieren, wie genau mach ich das? Er hat irgendwas davon gesagt, dass man größte Zahl sucht und in den letzten Index schreibt und dann die 2.größte und in den vorletzten Index, aber das muss man ja irgendwie mit nem Algorithmus machen und nicht alles 'per hand' oder?
sortierverfahren gibts ne ganze menge.
Ich kenn immerhin 2
BubbleSort: Du vergleichst die Zahlen "i" und "i+1". Die kleinere Zahl kommt an die Stelle von "i", die größere an die Stelle "i+1"
Dannach vergleichst du "i+1" und "i+2"
Das machst du bei einer Reihnfolge mit 5 Zahlen 4 mal, bei 10 Zahlen 9 mal, usw...
Bsp:
3
2
6
4
1
erster Schritt: Die Reihnfolge sieht nun so aus:
2
3
4
1
6
zweiter Schritt:
2
3
1
4
6
dritter Schritt:
2
1
3
4
6
vierter Schritt:
1
2
3
4
6
Fertig!!
Wow, verdammt scheiße erklärt
Bis wann brauchst du das?
BTW: Hast du nicht letztens einen anderen Avatar gehabt, obwohl du ihn nie wechseln wolltest oder verwechsle ich dich mit jemandem?
Ja, das Prinzip hab ich verstanden, das hab ich mal machen müssen als ich die beiden größten Zahlen berechnen sollte. Aber da hab ich das dann eingegeben, dass ich die ersten beiden Zahlen im Array nehme und mit einander vergleiche. Die größere ist max1 und die kleiner max2. Dann geh ich durch und wenn eine größere zahl dabei ist, setz ich die max1 und max1 wird vorher max2. Nur, wenn ich das für 10.000 Laborwerte eingebe, dann bin ich ja in 2 Wochen noch nicht fertig mit schreiben.
Und ja, ich war diejenige, die nie ihren Ava gewechselt hat und jetzt ein paar Tage nen anderen hatte. Was aber daran lag, dass Team-Ava-Wochen im Staff waren. Bin aber froh jetzt meinen (auch wenn er von Pik als abgenudelt bezeichnet wird *G*) Lieblings-Ava wieder zu haben
Original geschrieben von July Hm, irgendwie ist mir das alles zu kompliziert
...
Das mit Pascal versteh ich schonmal gar nicht, davon hab ich nämlich keinen blassen Schimmer.
...
Mir wärs im Moment echt am liebsten, wenn mir das einer umschreiben würde, ich bin einfach nur noch genervt von dem Kram *g*
...
Also ganz ehrlich... ist doch kein Wunder, dass wir bei PISA so schlecht abschneiden, wenn ich das hier lese.
@Firzen & @Nudelsalat:
Jemanden die Lösung in den Schoss coden, ist kaum das, was ich unter wirklicher Hilfe verstehe. Wie bei anderen Sachaufgaben geht es darum, es zu verstehen... und dann auf andere ähnlich gelagerte Aufgaben anwenden zu können. btw, @nudel, die Sprache nennt sich Pascal, steht im selben Post auch drin - gut für den, der die Nachrichten anderer auch wirklich liest!
@Freezy:
Wenn das die Lösung sein sollte, die der Prof haben will, dann gute Nacht. Vielleicht sollte man gleich hinschreiben:
WENN July was von Schachtelung schreibt, dann will sie doch keine vorgefertigten Arrays verwenden, oder? Aber wir haben ja auch nicht mal die konkrete Aufgabe vorliegen.
@July:
Entweder du willst Informatik studieren und nicht nur auswendig lernen, sondern verstehen... oder du lässt es. Ich werde kaum jemandem behilflich sein, der sich - wie so viele - irgendwie durchmogeln will, um dann auf irgendwelchen Managerposten irgendeinen Scheiss zu machen - ohne Fachwissen dahinter.
Sorry für die harten Worte, aber das hier sieht liest sich wie Kindergarten und nicht wie Schüler geschweige denn Student.
Es ist natürlich nicht einfach... aber der Wille muss schon da sein. Ich bin gern bereit, JEDE einzelne Zeile so lange durchzukauen, bis du sie verstanden hast! VERSTEHEN - das ist das Zauberwort, um die Dinge dann auch woanders anwenden zu können. Hinsetzen und Algorithmen pauken bringt wenig. Natürlich besitzt nicht jeder Lehrer/Professor das nötige Geschick, um genaue dieses Verständnis zu vermitteln... aber man muss auch selber drum kämpfen. Ich meine, July, wenn dir Informatik so wenig am Herzen liegt, dann solltest du es lassen... und nicht wie ein Modeerscheinung a lá Piercing, Branding und Tattoo's behandeln.
Zur zweiten Aufgabe mal eine kleine Geschichte... vor vielen Jahren gab es eine kleine Firma namens BORLAND, die vollbrachte wahre Wunder und den schnellsten Compiler der Welt (bis heute!!!) heraus: Turbo Pascal 7.0! Und nicht nur das... den vier Disketten lagen auch wunderschöne, kurze Beispielprogramme mit bei... zB. das berühmte qsort.pas. Hier mal der Inhalt:
Es generiert 1000 zufällige Zahlen, füllt damit ein Array, und sortiert sie mit einem Quicksort. Voilá.
Und noch mal mein Angebot: Wenn du Fragen hast dazu... frag' mir ein Loch in den Bauch... aber bitte mich nie wieder, irgendwelche fertigen Lösungen abzuliefern.
keine ahnung ob das überhaupt jemanden interessiert ^^ ber ih hab das ganze mal in Foxpro geschrieben
der rest ist die forschleife
macht das ganze 7 mal
und gibts aus ^^
sieht dann so aus
1abcdefg
12abcdef
123abcde
1234abcd
12345abc
123456ab
1234567a
rallt warscheinlich keiner aber ok ^^
wollte mich auch mal dran beteiligen
@the: Wie wir oben schon geschrieben haben kennen weder wir, noch irgend jemand anders hier die genaue Aufgabenstellung. Wir sind von July`s Code ausgegangen und haben ihn dementsprechend verändert und vereinfacht das er in unseren Augen funktionsfähig ist. Das die ganze sache recht unüblich gelöst ist, ist selbst mir "nicht Informatik Studenten" klar
Sicher könnten wir July einen Code anbieten der sich genau an ihre Aufgabenstellug (die ja keiner kennt) lehnt und den sie nur noch pasten muss um da durch zu kommen. Aber wie du schon so schön gesagt hast sollte man helfen den Code auch zu verstehen...
Also sollten wir meiner Meinung nach so weitermachen (vieleicht mit einer konkreten Aufgabenstellung ) bis wir einen Code haben der rennt b.z.w. zugelassen ist und diesen dann gemeinsam durchgehen. [Aktion - Bring July Array`s bei]
Im allerersten Post von mir steht die Aufgabenstellung, kann sie euch gern nochmal quoten:
Zitat
Aufgabenstellung ist folgende:
Schreiben Sie ein Programm, das mit Hilfe geschachtelter Schleifen folgende Ausgabe erzeugt:
1 abcdefg
12 abcdef
123 abcde
1234 abcd
12345 abc
123456 ab
1234567 a
...
Das der gute Herr nicht mehr geschrieben habe, liegt nicht an mir. Übrigens studiere ich auch nicht Informatik´, sondern bloß Medieninformatik, also wos auch viel um Webseiten geht.
Außerdem bin ich nicht dumm oder sonstwas, also unterstell mir hier nichts.
Ich bin immer ne gute Schülerin gewesen, ich möchte hier nicht mit meinen Noten angeben, aber auf dem Gymnasium hatte ich in Mathe durchgängig ne 1 (ab und zu ne 2), in meinem Javakurs bin ich eine der Besten und der Dozente meinte schon bei einer Aufgabe, wenn ich sie nicht verstehe, müsste er seine Aufgabenstellung überdenken. Ich weiß dass ich was kann. Aber ich habe gestern von morgens um 10.00 bis abends um 22.00 diverse Informatik-Aufgaben gemacht.
Ja, vielleicht hatte ich einfach um 6 keine wirkliche Lust mehr, deinen Pascal-Code für mich zu übersetzen, vielleicht war ich auch einfach nur genervt, dass ich es nach ewigen Versuchen nicht hinbekommen habe. Aber anfangen, mir, wo du mich nicht mal kennst, Vorwürfe zu machen, ich wär dumm und nicht in der Lage irgendwas zuverstehen, das find ich echt bescheiden.
Mir Arrays an sich hab ich keine Probleme, der Prof hat uns Lösungshilfen gegeben (ich kann sie gern mal abschreiben, wenn euch das weiterhelfen sollte, muss aber erst kurz Essen. Außerdem waren das teilweise solche Hilfen wie: Gib den Zahlenblock aus oder den Buchstabenblock, welches ich nach 5 min fertig hab.) Das einzige Problem was ich habe liegt darin, dass ich die Verschachtelung nicht hinbekomme. Mag sein, dass ich vielleicht zu kompliziert denke, ich werds ja morgen sehen.
Original geschrieben von the @nudel, die Sprache nennt sich Pascal, steht im selben Post auch drin - gut für den, der die Nachrichten anderer auch wirklich liest!
...
Sorry, tut mir echt leid, dass ich mit meinem 28.8k-Modem und sekundengenauer Abrechnung darauf achte, dass ich möglichst kurz online bin. Am besten geht das, indem ich posts anderer Leute nur oberflächlich durchlese.
Trotzdem danke, für deine nette Kritik. §ironie
@July: Du musst den Code nicht 10.000xSchreiben, den für solche Fälle gibt es Schleifen. In dem Fall wird die Schleife sooft ausgeführt, bis i gleich der größe des Arrays weniger eins ist.
(i<array[].length)
Hm... ok, ich mache es noch mal langsam zum Mitschreiben...
@nudel:
Unabhängig von deiner Anbindung - mit der du durchaus mein Mitleid erregst - sollte es selbstverständlich sein, die Posts jedes einzelnen sorgfältig zu lesen. Natürlich kann man auch mal danebenhauen, falsch verstehen, was vergessen, etc. Wir sind ja schliesslich alle nur Menschen. Insofern entschuldige ich mich bei dir, wenn die Kritik ZU harsch rüberkam, der grundsätzliche Tenor bleibt aber bestehen. Respekt gegenüber dem Post eines anderen gehört nun mal auch dazu.
@July:
Ach, Mädel, warum machst du es mir/dir so schwer? Genau das meinte ich mit verstehen! Du hast meinen Post in keinster Weise verstanden, sondern lediglich als Angriff auf deine Person gesehen... Schade eigentlich, vor allem weil gar nichts drinsteht von dem, was du schreibst.
Ich halte dich weder für DUMM, noch für BESCHRÄNKT, noch für sonste irgendwas. Ich habe weder behauptet, dass du NIX verstehst, noch habe ich gesagt, dass wir unsere Gymnasiumsnoten vergleichen wollen! Die einzige Kritik, die von mir kam, war die Frage, ob du es wirklich verstehen willst, oder einer dieser Dummschwätzer werden willst, wie sie sich zu Hauf in deutschen, warmen Beamtenstuben den Hintern breitsitzen ohne geringste Ahnung von der Materie. DAS war meine Frage - die du durch deine grobe und keulenmässige Beantwortung fast schon beantwortet hast. ^^
Ich habe dir angeboten, den oben geschrieben Code ZU VERSTEHEN oder auch die Funktionsweise verschiedener Sortieralgorithmen. Diese Bereitschaft rührt ja wohl kaum daher, dass ich dich für einen Deppen halte.
Und nur mal zur Info... ich persönlich verstehe auch oft nur die Hälfte oder manchmal gar nix... aber damit habe ich kein Problem, solange ich jemanden finde, der es mir erklärt.
Naja, sorry, war nicht so böse gemeint, wie es rübergekommen ist, aber wenn mir son Satz vor die Füße 'geknallt' wird wie: 'Also ganz ehrlich... ist doch kein Wunder, dass wir bei PISA so schlecht abschneiden, wenn ich das hier lese.' habe ich eben das Gefühl, dass du mir damit sagen willst, dass ich ebenfalls zu den dummen Leuten gehöre, die Deutschland so schlecht haben dastehen lassen.
Mir macht Informatik Spaß, mich interessiert das, aber ich hab Schiss davor, in 3 Wochen in die Klausur zu gehen, wenn ich die Aufgabe nicht hinbekomme und dann da sitze und etwas ähnliches drankommt. Ich hab mir Mühe gegeben, aber manchmal klappt es nicht und dann fang ich an, an mir selbst zu zweifeln. Ich weiß eigentlich, dass ich nciht dumm bin, aber wenn ich was nicht rauskriege, denk ich, dass es vielleicht doch stimmt und wenn man selbst nicht gerade sicher ist und jemand anders bestätigt es mehr oder weniger indirekt, dann ärgert man sich gleich noch viel mehr (ich will damit nicht sagen, dass es deine Absicht war )
Ich hab wie gesagt erst seit März Informatik. Davon nur alle 2 Wochen Übungen, wo ich das anwenden kann, die gehen so ca 2-3 Stunden (eigentlich sind 4 Schulstunden angesetzt, aber da ich meistens als erste fertig bin und eh schon eine Stunde so rumsitze und im Internet surfe, geh ich schon früher). Wir haben zwar noch Vorlesungen jede Woche, die versteht aber niemand, weil der Lehrer merkwürdig ist, es funktioniert also nur im Praxis-Teil wirklich gut. Durch eventuelle Ausfälle wie über Ostern etc, hatte ich jetzt ganze 7-8 mal Praxis, das heißt etwa 16-20 Stunden, also wie ich finde nicht gerade viel. Ich weiß nicht, wie es woanders ist, aber naja.
Ich möchte es verstehen. Bei mir ist es auch so, dass ich die Aufgabe verstanden habe, ich kann es bloß nicht umsetzen, weil ich nicht weiß wie. Ich hab es so oft probiert in den unterschiedlichsten Varianten und ich hab es einfach nicht hinbekommen. Darum hab ich hier gefragt, darum wollte ich die Lösung wissen, damit ich sie mir angucken kann und es klick macht. Ich weiß nicht, ob du das verstehen kannst, aber mir hilft es manchmal eben, wenn ich den Weg sehe, dann kann ich es auch auf andere Sachen übertragen.
Zudem bin ich im Moment im Mega-Lernstress, deswegen will ich, wenn ich den ganzen Tag rumgeknobelt habe und mich irendwann an jemanden wende, nicht bloß einen Hinweis erhalten um weiterknobeln zu können, dazu reicht meine Zeit im Moment leider nicht, das ist mein Problem. Wenn ich das über die Semesterferien hätte machen können, wäre das kein Problem gewesen, aber ich muss in 3 Wochen eine Hausarbeit schreiben und für 6 Klausuren lernen, wovon ich bei 3 Klausuren den Stoff von einem ganzen Jahr in meinen Kopf kriegen muss. Teilweise sind das Fächer, die ich nächstes Semester gar nciht mehr brauche und dass macht es für mich schwer, es zu lernen, weil ich den Sinn nicht sehe (Informatik gehört da nicht zu) und ich es trotzdem in mich reinquälen muss. Das macht die Sache für mich nicht leichter.
Original geschrieben von July Ich weiß nicht, ob du das verstehen kannst, aber mir hilft es manchmal eben, wenn ich den Weg sehe, dann kann ich es auch auf andere Sachen übertragen.
...
Ich hab Programmieren auch hauptsächlich dadurch gelernt, dass ich mir den fertigen Code anderer hergenommen und mir überlegt habe, wie er funktioniert und warum er genau das macht, was er eben macht. Es ist ein Meiner Meinung nach sehr schnellerer Weg, der zum selben Ziel führt. (<--@the)
@Rick Jones: Foxpro gefällt mir vom Aussehen des Codes her
ergibt ein interresantes Muster ^^