Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » 61. Virtualrätsel

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ]
000
28.10.2004, 12:53 Uhr
virtual
Sexiest Bit alive
(Operator)


Schreibe eine Funktion

C++:
int max2(const int* array, count) { ... }


welche das zweitgrößte ELement von array ermittelt, wobei count die Anzahl der Element ist. Dabei darf jedes Element aus array nur genau einmal gelesen werden, dh zB zwei Schleifendurcgänge sind tabu. Es sei vereinfachend aber garantiert, daß alle Zahlen in array unterschiedlich sind.

Shortest wins.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.10.2004, 13:38 Uhr
Bruder Leif
dances with systems
(Operator)


Also ohne großes Überlegen und das const käme ich auf 101:

C++:
int max2(int *a,int c){int x=*a,y=0;for(;c;c--,a++){if(*a>x){y=x;x=*a;}else if(*a>y)y=*a;}return y;}



Mit const 112:

C++:
int max2(const int *a,int c){int x=*a,y=0,*b=a;for(;c;c--,b++){if(*b>x){y=x;x=*b;}else if(*b>y)y=*b;}return y;}


--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.10.2004, 13:49 Uhr
virtual
Sexiest Bit alive
(Operator)


Denk besser noch mal drüber nach:
array[4] = { -1, -2, -3, -4 }
Ich habs nicht ausprobiert, möchte aber meinen Popo verwetten, daß da bei Dir ne 0 rauskommt...

Okay, machen wir noch eine Vereinfachung: count >=2 ist auch garantiert.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
28.10.2004, 13:51 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


was ist denn das schon wieder für ein hässliches const....
ungegolft so

C++:
int max2(const int* array, int count){
    int x,y,*p=(int*)array;
    x=*p++;
    y=*p++;
    if(x>y)swap(&x,&y);
    for(;--count-1;++p)
        if(*p>x)
            if(*p>y){x=y;y=*p;}
            else x=*p;
    return x;
}


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 28.10.2004 um 14:22 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
28.10.2004, 13:53 Uhr
virtual
Sexiest Bit alive
(Operator)


Mist, ich habe grade meinen Popo verloren...
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
28.10.2004, 14:17 Uhr
Bruder Leif
dances with systems
(Operator)



Zitat von virtual:
Denk besser noch mal drüber nach:
array[4] = { -1, -2, -3, -4 }
Ich habs nicht ausprobiert, möchte aber meinen Popo verwetten, daß da bei Dir ne 0 rauskommt...

Okay, machen wir noch eine Vereinfachung: count >=2 ist auch garantiert.



Uuuuups... OK, dann 125:

C++:
int max2(const int *a,int c){int x=*a>a[1]?a[1]:*a,y=x,*b=a;for(;c;c--,b++){if(*b>x){y=x;x=*b;}else if(*b>y)y=*b;}return y;}


--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
28.10.2004, 18:10 Uhr
Pablo
Supertux
(Operator)


Muss wirklich const int* array sein?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
28.10.2004, 19:58 Uhr
virtual
Sexiest Bit alive
(Operator)


ja. Das Ding soll doch ein Max2 Ermitteln. Steht da irgendwas von "Array verändern"? - Nee. und weil ich Euch Strolche kenne, habe ich das const dahingemacht.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
28.10.2004, 20:03 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@virtual
macht ja nix... da wir die funktion selber implementieren können wir das const ja innerhalb der funktion leicht umgehen
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
28.10.2004, 20:47 Uhr
Pablo
Supertux
(Operator)


Das hier ist sicherlich nicht schön, aber bei mir ging es:


C++:
int comp(const void* a, const void* b){return(*(int*)a-*(int*)b);}
int max2(const int* array, int count){qsort(array,count,sizeof(int),comp);return array[count-2];}


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ]     [ Rätselecke ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: