Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » 60. Virtual Rätsel (Fortgeschrittene)

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 ]
000
20.09.2004, 14:08 Uhr
virtual
Sexiest Bit alive
(Operator)


Folgendes Programm:

C++:
#include <stdio.h>

extern int foo(int, int);

int main()
{
    int r;
    int n;
    int i;
    int j;


    printf("  n |"); for(i=1; i<4; ++i) printf(" r=%d |", 1<<i); puts("");
    printf("----+"); for(i=1; i<4; ++i) printf("-----+"); puts("");  

    for(i=0; i<50; ++i) {
        printf("% 3d |", i);
        for(j=1; j<4; ++j) {
            printf(" % 3d |", foo(i, 1<<j));
        }
        puts("");
    }
}


Soll folgenden Output produzieren:

Code:
  n | r=2 | r=4 | r=8 |
----+-----+-----+-----+
  0 |   0 |   0 |   0 |
  1 |   2 |   4 |   8 |
  2 |   2 |   4 |   8 |
  3 |   4 |   4 |   8 |
  4 |   4 |   4 |   8 |
  5 |   6 |   8 |   8 |
  6 |   6 |   8 |   8 |
  7 |   8 |   8 |   8 |
  8 |   8 |   8 |   8 |
  9 |  10 |  12 |  16 |
10 |  10 |  12 |  16 |
11 |  12 |  12 |  16 |
12 |  12 |  12 |  16 |
13 |  14 |  16 |  16 |
14 |  14 |  16 |  16 |
15 |  16 |  16 |  16 |
16 |  16 |  16 |  16 |
17 |  18 |  20 |  24 |
18 |  18 |  20 |  24 |
19 |  20 |  20 |  24 |
20 |  20 |  20 |  24 |
21 |  22 |  24 |  24 |
22 |  22 |  24 |  24 |
23 |  24 |  24 |  24 |
24 |  24 |  24 |  24 |
25 |  26 |  28 |  32 |
26 |  26 |  28 |  32 |
27 |  28 |  28 |  32 |
28 |  28 |  28 |  32 |
29 |  30 |  32 |  32 |
30 |  30 |  32 |  32 |
31 |  32 |  32 |  32 |
32 |  32 |  32 |  32 |
33 |  34 |  36 |  40 |
34 |  34 |  36 |  40 |
35 |  36 |  36 |  40 |
36 |  36 |  36 |  40 |
37 |  38 |  40 |  40 |
38 |  38 |  40 |  40 |
39 |  40 |  40 |  40 |
40 |  40 |  40 |  40 |
41 |  42 |  44 |  48 |
42 |  42 |  44 |  48 |
43 |  44 |  44 |  48 |
44 |  44 |  44 |  48 |
45 |  46 |  48 |  48 |
46 |  46 |  48 |  48 |
47 |  48 |  48 |  48 |
48 |  48 |  48 |  48 |
49 |  50 |  52 |  56 |



Aufgabe:
Finde eine möglichst Kurze implementierung für foo
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 20.09.2004 um 14:09 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.09.2004, 15:55 Uhr
(un)wissender
Niveauwart


Nicht sehr kurz, aber bin immerhin der erste.


C++:
int foo(int n, int r)
{
    int v = ((n + 1) / r) * r;
    return n > v ? v + r : v;
}


--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.09.2004, 16:52 Uhr
virtual
Sexiest Bit alive
(Operator)


@(un)wissender
Meiner ist Kürzer!
--
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
20.09.2004, 17:14 Uhr
0xdeadbeef
Gott
(Operator)



C++:
foo(i,r){return(i-1+r)/r*r;}

--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.09.2004, 17:21 Uhr
virtual
Sexiest Bit alive
(Operator)


@beefy
Meiner ist Länger!
--
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
20.09.2004, 17:22 Uhr
virtual
Sexiest Bit alive
(Operator)


... aber dafür schneller.

C++:
int foo(int n, int r)
{r--;return(n-r)&~r;}




Bearbeitung von typecast:
cpp-Tags korrigiert

--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 20.09.2004 um 21:12 Uhr von typecast editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
20.09.2004, 22:04 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)



Zitat von virtual:
... aber dafür schneller.

C++:
int foo(int n, int r)
{r--;return(n-r)&~r;}




Bearbeitung von typecast:
cpp-Tags korrigiert


Das funktioniert doch gar nicht

Bei mir kommt damit folgendes raus:

Zitat:

n | r=2 | r=4 | r=8 |
----+-----+-----+-----+
0 | -2 | -4 | -8 |
1 | 0 | -4 | -8 |
2 | 0 | -4 | -8 |
3 | 2 | 0 | -8 |
4 | 2 | 0 | -8 |
5 | 4 | 0 | -8 |
...


Dieser Post wurde am 20.09.2004 um 22:04 Uhr von Guybrush Threepwood editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
21.09.2004, 09:06 Uhr
Airdamn




Zitat von 0xdeadbeef:

C++:
foo(i,r){return(i-1+r)/r*r;}



es fehlt der Rückgabetyp und in der Signatur die Datentypen !!

Dieser Post wurde am 21.09.2004 um 09:13 Uhr von Airdamn editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
21.09.2004, 10:57 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat von Guybrush Threepwood:
[quote virtual]... aber dafür schneller.
Das funktioniert doch gar nicht



Oh, very sorry, natürlich meinte ich

C++:
int foo(int n, int r){r--;return(n+r)&~r;}


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 21.09.2004 um 10:57 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
21.09.2004, 10:58 Uhr
virtual
Sexiest Bit alive
(Operator)


@Airdamn
Beefy verwendet ganz gerne hoffnungslos veraltete Standards, die inzwischen als deprecated markiert sind, um überhaupt mithalten zu können Hab also Mitleid mit ihm
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 21.09.2004 um 10:59 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: