DarkMo
Lötkolbengott/-göttin
so, erstmal umständlichst mit weissen punkten eingerückt xD nun mal schauen ^^begin
....ausgabetemp := EingabeEdit.text;
....for lauf2 := 1 to 3 do begin
........idx:= 4;
........big:= ausgabetemp[idx];
........for lauf1 := 3 downto lauf2 do begin
............if ausgabetemp[lauf1] > big then begin
................big:= ausgabetemp[lauf1];
................idx:= lauf1;
............end;
........end;
........hvar := ausgabetemp[lauf2];
........ausgabetemp[lauf2] := big;
........ausgabetemp[idx] := hvar;
....end;
....AusgabeGrossEdit.text := ausgabetemp;
....AusgabeKleinEdit.text := AusgabeGrossEdit.text[4] + AusgabeGrossEdit.text[3] + AusgabeGrossEdit.text[2] + AusgabeGrossEdit.text[1];
end;
ok, erste frage: du gibst ne 4 stellige zahl ein? 1 bis 3 sind nur 3 stellen - und die erste fehlt sogar ^^ ein index beginnt immer mit 0. oha, laut Pascal - Arrays wird das wohl in pascal bissl anders gelöst. "In Pascal wird oft imin = 1 gewählt." - ähä, das heisst jetz genau was? ^^ wenn man einen text hat, wird der ja "vom system" erstellt - wie wählt das also den index? najut, ließe sich durch testen ja rausfinden. also je nachdem, entweder von 0 bis 3 oder 1 bis 4 für 4stelliges. sonst unterschlägt man was ^^ war die eingabe nur 3stellig, isses ja ok so.
anderer hinweis: is halt nen bissl anfällig so. wenn man ne 5 stellige ziffer angibt passiert zwar nix, aber das ergebnis stimmt nich, da das ende abgeschnitten wird. gibt man nur 2 stellen ein, versucht er dann aber dennoch auf ein 3. element zuzugreifen und bekommt ne speicherschutzverletzung oder sowas - error halt. daher wäre es allgemein wohl günstiger (also für die spiziefische aufgabe langt das so dann schon, das wäre jetzt nur als hinweis gedacht) sowas wie for lauf2 := 1 to ausgabetemp.length (oder wie auch immer das heissen mag ^^ länge eines arrays halt) durchzulaufen.
ach, ich seh grad, ihr wollt bis eins vors ende nur durchlaufen? idx wäre dann der index vom letzten quasi. also aufgesplittet. das jetz im kopf durch zu spielen is ned so fix gemacht ^^ ich sag mal so: wenn es funzt, isses doch io

ne allgemeine idee, die mir eingefallen wäre als lösung (mit ner zusatzfunktion) wäre sowas: durchlaufe den eingabe-string zeichen für zeichen und schmeiss das jeweilige zeichen in die zusatzfunktion da (zum bsp fillSortArray(char c) oder sowas). und die funktion geht dann immer das array durch und platziert das übergebene zeichen dort, wo der nachfolger größer ist. hmm, klingt irgendwie verwirrend ^^ ich mein einfach nur, dass er zum bsp ne 3 bekommt und im array schon [1,2,5] steht als bsp. dann schaut er 3 < 1? nö, weiter. 3 < 2? nö, weiter. 3 < 5? jop, also die 5 eins nach hinten verschieben und die 3 da reinpacken. das "nach hinten verschieben" macht man dann am einfachsten von hinten her.
gut, jedenfalls füllt man so einfach (vllt nich wirklich optimal und effizient oder so ^^) dann halt ein sortier array und am ende geht man dieses array wieder durch und gibts einfach aus. einmal von vorn nach hinten und einmal von hinten nach vorn. ich denke mal, euer ansatz wird in etwa aufs selbe hinauslaufen oder? nur ohne zusatzfunktion ^^ wenns so funzt also nich übel
