House-Chica Geschrieben 24. November 2005 Teilen Geschrieben 24. November 2005 brauche dringend hilfe:mod: ich arbeiten mit cobol (ich weiß einer sehr veralterte sprache) jedoch habe ich die aufgabe ein prog zu schreiben das die folgenden zahlen sortiert 12 6 8 1 2 4 3 11 5 10 das man diese eingibt und unten von klein nach groß ausgibt wäre lieb wenn mir jemand helfen könnte. liebe grüße house chica Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 24. November 2005 Teilen Geschrieben 24. November 2005 Verschoben -> Sonstige Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
House-Chica Geschrieben 24. November 2005 Autor Teilen Geschrieben 24. November 2005 oh sorry falsch eingeordnet Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
jasso Geschrieben 24. November 2005 Teilen Geschrieben 24. November 2005 ich nehme nicht an dass du schon nach sortieralgorithmen gegoogelt hast oder? sonst wärst du z.B. über diese nette auflistung gestolpert. um es mal zu vertiefen hier werden sie auch recht schön dargestellt: Insertionsort Bubblesort Quicksort Selectionsort Heapsort Shellsort Edit: verschieben ist gemein Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
House-Chica Geschrieben 24. November 2005 Autor Teilen Geschrieben 24. November 2005 working-storage section. * 01 w-cursor. 05 w-zeile pic 99. 05 w-spalte pic 99. 01 w-zaehler pic 99. 01 w-zahl-n pic s999 occurs 10. 01 w-gesamt pic s99. 01 w-speicher pic 99. procedure division. * move 1 to w-spalte perform varying w-zaehler from 1 by 1 until w-zaehler > 10 move w-zaehler to w-zeile display w-zaehler at w-cursor display "Zahl:" add 10 to w-spalte accept w-zahl-n (w-zaehler) at w-cursor subtract 10 from w-spalte end-perform. * move 1 to w-zaehler. display w-zahl-n (w-zaehler) at 2001. display w-zahl-n (w-zaehler + 1) at 2101. if w-zahl-n (w-zaehler + 1) > w-zahl-n (w-zaehler + 2) move w-zahl-n (w-zaehler + 1) to w-zahl-n (w-zaehler + 2) move w-zahl-n (w-zaehler + 1) to w-speicher. exit program. stop run. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schiller256 Geschrieben 24. November 2005 Teilen Geschrieben 24. November 2005 Na was macht das Programm bis jetzt bzw. welche Fehlermeldung wird ausgegeben. Was du bist jetzt geschrieben hast ist das einlesen der Zahlen in eine Tabelle. Das sortieren muss auber auch in einer Schleife passieren. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
House-Chica Geschrieben 24. November 2005 Autor Teilen Geschrieben 24. November 2005 bis jetzt läufts soweit eigentlich naja man kann halt die zaheln eingeben bis 10 dann sortiert er die aber noch nicht Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
House-Chica Geschrieben 24. November 2005 Autor Teilen Geschrieben 24. November 2005 ich müsste die alle vergleichen mit einer schleife nur mit schleißen kenn ich mich nicht so gut aus bin halt noch keine so gute programmiererin ^^ also das er die position2 abspeichert etc damit er die nicht überschreibt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schiller256 Geschrieben 24. November 2005 Teilen Geschrieben 24. November 2005 Ich habe doch geschrieben das dass sortieren auch in einer Schleife passieren muss. move 1 to w-zaehler. perform varying w-zaehler from 1 by 1 until w-zaehler > 10 display w-zahl-n (w-zaehler) at 2001. if w-zahl-n (w-zaehler + 1) > w-zahl-n (w-zaehler + 2) move w-zahl-n (w-zaehler + 1) to w-zahl-n (w-zaehler + 2) move w-zahl-n (w-zaehler + 1) to w-speicher. end-perform das ist ungetestet ist aber auf alle fälle mal ein Ansatz. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
House-Chica Geschrieben 24. November 2005 Autor Teilen Geschrieben 24. November 2005 move 1 to w-zaehler. display w-zahl-n (w-zaehler) at 2001. display w-zahl-n (w-zaehler + 1) at 2101. move w-zahl-n (w-zaehler + 2) to w-speicher. if w-zahl-n (w-zaehler + 1) > w-zahl-n (w-zaehler + 2) move w-zahl-n (w-zaehler + 1) to w-zahl-n (w-zaehler + 2) move w-speicher to w-zahl-n (w-zaehler + 1 ) so ungefähr hab ich das jetzt mal probiert aber naja der sortiert dennoch nicht will ja die zaheln nicht über schreiben die erste zahl 12 auf die zahl 6 dann ist ja die 6 weg. also müsste ich die 6 zwischenspeichern. in einer schleife Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schiller256 Geschrieben 24. November 2005 Teilen Geschrieben 24. November 2005 Na mit den Sortieralgorithmen solltest du dich vielleicht mal beschäftigen ich habe jetzt man den Bubblesort genommen das sollte dann in etwa so aussehen. PERFORM VARYING W-ZAEHLER FROM 1 BY 1 UNTIL W-ZAEHLER > 9 PERFORM VARYING W-POS FROM 1 BY 1 UNTIL W-POS > 9 - W-ZAEHLER IF W-ZAHL-N(W-POS) > W-ZAHL-N(W-POS + 1) MOVE W-ZAHL-N(W-POS) TO W-SPEICHER MOVE W-ZAHL-N(W-POS + 1) TO W-ZAHL-N(W-POS) MOVE W-SPEICHER TO W-ZAHL-N(W-POS + 1) END-IF END-PERFORM END-PERFORM ungetestet! Hier hast du mal noch einen Link wo du dir das genauer anschauen kannst wie der Bubblesort arbeitet. http://de.wikipedia.org/wiki/Bubblesort Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
House-Chica Geschrieben 24. November 2005 Autor Teilen Geschrieben 24. November 2005 schon mal besten dank noch ne keine frage hab ich aber was genau meinst du denn mit w-pos? die postion oder wie? und 2 wieso hast du kleiner 9 genommen und nicht kleiner 10 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schiller256 Geschrieben 24. November 2005 Teilen Geschrieben 24. November 2005 Deshalb habe ich den Link gepostet da steht das erklärt wie der Sortieralgorithmus arbeitet. Da hast du das genze auch nochmal in Pseudocode. Vielleicht ist es auch ganz hilfreich wenn du deine Reihe von Zahlen mal nach dem Sortieralgorithmus per Hand sortierst. Also das ganze mal Schritt für Schritt durchgehen und dann aufschreiben wie deine Tabelle aussieht nach jedem schritt dann verstehst duch auch den zusammenhang besser. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
House-Chica Geschrieben 24. November 2005 Autor Teilen Geschrieben 24. November 2005 naja danke innerhalb von 2 tagen die ganze programmiersprache beigebracht zu bekommen ist schon heftig wenn man vorher noch nie programmiert hat ^^ naja Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
House-Chica Geschrieben 24. November 2005 Autor Teilen Geschrieben 24. November 2005 working-storage section. * 01 w-cursor. 05 w-zeile pic 99. 05 w-spalte pic 99. 01 w-zaehler pic 99. 01 w-zahl-n pic s999 occurs 10. 01 w-gesamt pic s99. 01 w-speicher pic 99. 01 w-pos pic 99. 01 w-anzeige-pos pic 9999. procedure division. * move 1 to w-spalte perform varying w-zaehler from 1 by 1 until w-zaehler > 10 move w-zaehler to w-zeile display w-zaehler at w-cursor display "Zahl:" add 10 to w-spalte accept w-zahl-n (w-zaehler) at w-cursor subtract 10 from w-spalte end-perform. PERFORM VARYING W-ZAEHLER FROM 1 BY 1 UNTIL W-ZAEHLER > 9 PERFORM VARYING W-POS FROM 1 BY 1 UNTIL W-POS > 9 - W-ZAEHLER IF W-ZAHL-N(W-POS) > W-ZAHL-N(W-POS + 1) MOVE W-ZAHL-N(W-POS) TO W-SPEICHER MOVE W-ZAHL-N(W-POS + 1) TO W-ZAHL-N(W-POS) MOVE W-SPEICHER TO W-ZAHL-N(W-POS + 1) END-IF END-PERFORM END-PERFORM move 1400 to w-anzeige-pos PERFORM VARYING W-ZAEHLER FROM 1 BY 1 UNTIL W-ZAEHLER > 9 compute w-anzeige-pos = w-anzeige-pos + 2 display w-zahl-n (w-zaehler) at w-anzeige-pos END-PERFORM vielleicht kann mir jemand anderes mal hier weiter helfen weil ich durchs lesen nur den bubbel alog. hinbekommen hab und zwar zeigt der mir bei dieser lösung eine fehlermeldung an , weiß einfach nicht woran es liegt habe 2 schleifen gebildet und dem compiler das so zu verstehen gegeben das er das dann auch so übersetzt aber das klappt leider nicht fang schon an zu verzweifeln Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
House-Chica Geschrieben 24. November 2005 Autor Teilen Geschrieben 24. November 2005 brauche hierzu jetzt nur noch eine druckaufbereitete variable aber wie mach ich die dahin? damit er mir keine nullen anzeigt bei der ausgabe sondern nur die zahlen schön geordnet Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schiller256 Geschrieben 24. November 2005 Teilen Geschrieben 24. November 2005 Na die Fehlermeldung wäre ja jetzt nicht ganz schlecht gewesen. Entsteht diese Fehlermeldung schon beim Compilieren oder erst wenn du das Programm laufen läst? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
House-Chica Geschrieben 24. November 2005 Autor Teilen Geschrieben 24. November 2005 war ein kleiner schreibfehler bei der variable das hätte sich nun erledigt aber das mit der druckaufbereiteten variablen würde ich gerne noch hinzufügen weiß nur nicht wie move 1400 to w-anzeige-pos PERFORM VARYING W-ZAEHLER FROM 1 BY 1 UNTIL W-ZAEHLER > 9 compute w-anzeige-pos = w-anzeige-pos + 4 display w-zahl-n (w-zaehler) at w-anzeige-pos END-PERFORM hier müsste es doch irgendwe klappen das die leerstriche ohne nullen ausgegen werden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schiller256 Geschrieben 24. November 2005 Teilen Geschrieben 24. November 2005 Die Nullstellen kannst du mit der PIC Klausel ZZ9 unterdrücken damit hast du ein 3 stelliges Numerisches Feld welches Druckaufbereitet ist und nur an der dritten stelle eine Null hat. Alle anderen werden durch Leerzeichen ersetzt. Mit diesen Feldern kannst du dann aber nicht mehr Rechnen. Also eventuell eine Ausgabe Variable definieren und dann in der letzten Schleife die den Wert aus der Tabelle in die Ausgabevariabe schieben und ausgeben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
House-Chica Geschrieben 24. November 2005 Autor Teilen Geschrieben 24. November 2005 ja das klappt dankeschön. aber wie bekomme ich das nun hin das auch 2 die gleichen zahlen eingegeben werden können. PERFORM VARYING W-ZAEHLER FROM 1 BY 1 UNTIL W-ZAEHLER > 9 PERFORM VARYING W-POS FROM 1 BY 1 UNTIL W-POS > 9 - W-ZAEHLER IF W-ZAHL-N(W-POS) > W-ZAHL-N(W-POS + 1) MOVE W-ZAHL-N(W-POS) TO W-SPEICHER MOVE W-ZAHL-N(W-POS + 1) TO W-ZAHL-N(W-POS) MOVE W-SPEICHER TO W-ZAHL-N(W-POS + 1) END-IF END-PERFORM END-PERFORM Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schiller256 Geschrieben 24. November 2005 Teilen Geschrieben 24. November 2005 Na das sollte doch ohne Problme gehen. Versuche do einfach mal zwei gleiche Zahlen einzugeben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 24. November 2005 Teilen Geschrieben 24. November 2005 COBOL (zumindest das was ich einsetzte) bietet aber auch eigene Funktionen zum Sortieren an, dazu solltest du in deiner Beschreibung mal die sort Funktion angucken. Allerdings kann es für den Lerneffekt bestimmt nicht schaden sowas per Hand zu programmieren Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
House-Chica Geschrieben 24. November 2005 Autor Teilen Geschrieben 24. November 2005 ja bin ja im prakikum sozusagen aufgaben um zu sehen ob ich auch für eine ausbildung in der lage wäre nunja hab vorher noch NIE programmiert und dann ist das schon n ding mit tausend schleifen und so kann programmieren jetzt erst siet montag zumindestens gelernt erst ab da an. was ich mich nur frage kann man wenn man cobol beherrscht auch alle anderen besonders c++ sprachen gut? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schiller256 Geschrieben 24. November 2005 Teilen Geschrieben 24. November 2005 was ich mich nur frage kann man wenn man cobol beherrscht auch alle anderen besonders c++ sprachen gut? Ich würde das verneinen da C++ ja einen Objektorientieren Ansatz hat. COBOL hingegen ist eine Prozedurale Programmiersprache. Was man dabei auf jedenfall lernt ist mit Bedingungen und Schleifen umzugehen. Der umstiegt in eine andere nicht Objektorientiere Programmiersprache ist denke ich auch nicht so schwer. Da musst du dich nur an die etwas andere Syntax gewöhnen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
House-Chica Geschrieben 25. November 2005 Autor Teilen Geschrieben 25. November 2005 ah ok alles klar ich soll jetzt eine jahreszahl eingeben und darunter ein schaltjahr alles was durch 4 und 400 teilbar ist soll dann mit ja ausgegeben werden und was durch 100 teilbar ist und eine dezimalzahl beherrscht mit nein kann mir da jemand helfen working-storage section. * 01 w-ausgabe pic xxxx. 01 w-jahreszahl pic 9999. 01 d-schaltjahr pic zz99,99. 01 w-schaltjahr pic s999v99. 01 w-speicher pic s99 procedure division. display "Jahreszahl:" at 0101 accept w-jahreszahl at 0115 display "Schaltjahr:" at 0201 compute w-jahreszahl = w-jahreszahl / 4 move w-jahrszahl to w-speicher compute w-jahreszahl = w-jahreszahl / 400 * stop run. exit program. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.