Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

oh sorry falsch eingeordnet

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.

bis jetzt läufts soweit eigentlich naja man kann halt die zaheln eingeben bis 10 dann sortiert er die aber noch nicht

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

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.

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

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

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

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.

naja danke innerhalb von 2 tagen die ganze programmiersprache beigebracht zu bekommen ist schon heftig wenn man vorher noch nie programmiert hat ^^ naja

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 :(

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

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.

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.

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

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?:rolleyes:

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.

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.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.