Autor Beitrag
Pyr0cracker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 164

Win XP, Ubuntu 8.04, openSUSE 11.0
Delphi 7 Personal
BeitragVerfasst: Fr 20.06.03 20:28 
Hallo,
gibts eine einfache Idee dies zu bewerkstelligen?

Danke schonmal,
Tweafis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 647

WinXP + fbsd
Delphi 5 Prof
BeitragVerfasst: Fr 20.06.03 20:34 
falls deine Zahlen alle größer als null sind dann:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
function greatest(nrs: array of integer): integer;
var x:integer;
begin
  result := 0;
  for x:= Low(nrs) to High(nrs) do
    if nrs[x] > result then result := nrs[x];
end;


falls doch, dann probier mal result := 0 durch result := Lo(Integer) oder Low(Integer) zu erstetzen ????

_________________
.: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
Carola82
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 21.06.03 13:43 
Titel: Integerwerte sortieren?
Hätte auch ein (vielleicht ein wenig kompliziertes) Prog, aber es läuft :)

ausblenden volle Höhe Delphi-Quelltext
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:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
program Sortexcep;
{$APPTYPE CONSOLE}
uses sysutils;
var v_schublade: array[1..10of integer;
    v_sort: array[1..10of integer;
    i,v,k:integer;
    c:char;
procedure p_fail;
    begin
       writeln('Es ist eine Exception aufgetreten '+
       'das Prog wird beendet!');
       readln;
       halt;    //man geht aus der Schleife raus und das Prog wird riguros beendet
    end;   //of p_fail

Begin
   writeln('Die ist ein Prog, das 10 Zahlen sortiert.');
   for i:=1 to 10 do
      begin
         Writeln('Geben sie bitte die ',i,'. Zahl ein');
         try
           Readln(v_schublade[i]);
         except
           on EINOUTERROR do p_fail;
         end;
      end;
   begin
      writeln('Wollen sie die Zahlen a)ufsteigend oder ab)steigend sortiert haben?');
      readln(c);
      case c of
          'a','A'begin
              writeln('Zahlen aufsteigend sortiert:');
              for k:=1 to 10 do
                begin
                 v:=1;        //Zähler muss immer wieder auf "1" gesetzt werden!!!
                  for i:=1 to 10 do //d.h. das Array mit [k] ist "statisch"
                    begin                             //[i] läuft vorbei...
                       if v_schublade[k]>v_schublade[i]
                       then v:=v+1
                    end;
                 v_sort[v]:=v_schublade[k];
                   end;
       end;
   'b','B'begin
              writeln('Zahlen absteigend sortiert:');
              for k:=1 to 10 do
                 begin
                   v:=1;
                   for i:=1 to 10 do
                     begin
                        if v_schublade[k]<v_schublade[i]
                        then v:=v+1
                     end;
                   v_sort[v]:=v_schublade[k];
                 end;
            end;
   end//of case
for v:=1 to 10 do
      begin
         writeln(v_sort[v]);
      end;
   writeln('Druecken sie "Enter" um das Prog zu beenden');
   readln;
end;
end.
[/delphi]
Wolff68
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 302
Erhaltene Danke: 1

WinXP home
D6 Prof
BeitragVerfasst: So 22.06.03 18:15 
@Tweafis:
Um das ganze auch für negative Zahlen zu machen, brauchst Du nur die erste Zuweisung von Result zu ändern:

Erste, (schlechte) Möglichkeit:
Setze den Startwert auf den niedrigsten erlaubten Integer result := -2147483648Was aber in ein paar Jahren zu Problemen führen kann, falls Integer auf 64-Bit geändert wird.

Zweite, (gute) Möglichkeit:
Fang nicht mit 0 an, sondern mit der ersten Zahl aus dem Array !
ausblenden Delphi-Quelltext
1:
result := nrs[Low(nrs)];					

Danach kannst die For-Schleife natürlich ab Low(nrs)+1 laufen lassen.

_________________
"Der Mensch ist nicht was er sich vorstellt oder wünscht zu sein, sondern das was andere in ihm sehen."
Tweafis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 647

WinXP + fbsd
Delphi 5 Prof
BeitragVerfasst: So 22.06.03 18:18 
Hmm, stimmt, hab ich nicht dran gedacht.

_________________
.: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.