Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
24.05.2011, 16:28
chriss



Aloha!

Ich habe zwei Zufallszahlen zwischen 1 und 6, diese möchte ich nun, mit der jeweils Höhere voran, zusammenführen.

1 und 6 wird zu 61
3 und 4 wird zu 43
etc.

Bisher:
Quellcode:int fZahl = 1 + arc4random() % 6;
    int sZahl = 1 + arc4random() % 6;

    if (fZahl >= sZahl) {
        int gZahl = […]
    } else {
        int gZahl = […]
    }
    NSString* result = [NSString stringWithFormat:@"%d : %d (%d)", fZahl, sZahl, gZahl];
Fehlt halt genau der Punkt des „zusammenführens“. Dürfte ja keine große Sache sein, in PHP gibt’s ja die scheinbar unsaubere Methode einfach die beiden Zahlen zu einem String äh zu transformieren(?) … aber das geht hier ja nun nicht so einfach, oder?

--


Dieser Beitrag wurde am 24.05.2011 um 16:30 von chriss bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
001
24.05.2011, 16:41
Flow
Moderator


Wenn ich dich richtig verstanden habe: da die ints ja immer einstellig positiv sind und du die Konkatenation willst warum dann nicht einfach folgendes?

Quellcode:int a = 1 + arc4random() % 6;
int b = 1 + arc4random() % 6;
int concat = (a > b) ? (a * 10 + b) : (b * 10 + a);
Alternativ die beiden Zufallszahlen zu string parsen und wie unten konkatenieren?

Nehme mal an dass es das erste ist ggf. sogar perfomanter als die Stringkonkatenation. Ist allerdings auch mehr der Perl-Ansatz, ich weiß nicht genau ob Objective-C da noch n direktes Konstrukt anbietet

--


Dieser Beitrag wurde am 24.05.2011 um 16:48 von Flow bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
002
24.05.2011, 16:50
chriss



Funktioniert. Besten dank! :)

--

zum Seitenanfang zum Seitenende Profil || Suche
003
24.05.2011, 21:23
LeJean



Meier! (Bzw. Mäxle, whatever) :D

--

zum Seitenanfang zum Seitenende Profil || Suche
004
24.05.2011, 22:20
chriss



Erwischt, ich programmiere da etwas für Paul … ;)

--


Dieser Beitrag wurde am 24.05.2011 um 22:20 von chriss bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
005
25.05.2011, 19:33
Xardas



Wenn du es allgemeiner willst, caste die beiden Integer auf Chars.

Auch C stellt in der Standardlibrary Funktionen für die Konkatenation bereit, also einfach die Chars konkatenieren, und wieder in einen Integer umwandeln.
Edit: Ah, Flow hat das selbe ja schon vorgeschlagen.

--

Music Artist / 2D Artist / Mapper


Dieser Beitrag wurde am 25.05.2011 um 19:34 von Xardas bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
006
25.05.2011, 22:04
caedes



Zitat:
Wenn du es allgemeiner willst, caste die beiden Integer auf Chars. (...) also einfach die Chars konkatenieren, und wieder in einen Integer umwandeln."
Da wird ziemlich sicher nicht das gewünscht passieren.
int i=6;
char c = (char)i;

Dann enthält c den ACK char, siehe zB http://www.asciitable.com/

Für so nen Ansatz müsste man schon den int in nen char umwandeln (z.b. char c = 60+i wenn man sich sicher ist dass 0<=i<=9, oder besser mit sprintf beide ints in nen string "drucken") und hinterher nen string (char array) der aus den beiden chars (und \0) besteht (zB mit atoi) wieder in nen int umwandeln.

Ist aber ne ziemlich blöde Lösung, man sollte es wirklich so machen wie Flow vorgeschlagen hat und nicht irgendwelche ekligen Hacks nutzen, die in Scriptsprachen vielleicht naheliegend erscheinen.

--

caedes

Deutschland rückt nach Einschätzung der Sicherheitsbehörden im Superwahljahr verstärkt ins Visier von Terroristen.

zum Seitenanfang zum Seitenende Profil || Suche
007
25.05.2011, 23:41
Xardas



Naja, man muss ja die Zahlen nicht direkt auf einen Char casten. Gibt ja Funktionen in Standardlibs die einen den Index im ASCI Code eines Zeichens liefern.

Und als Hack würde ich das nun nicht bezeichnen, da Flows Variante , zumindest in der aktuellen, weniger Abstrakt ist.

Wenn man im vorraus überprüft, welche der beiden Integers kleiner ist, und sie entsprechend konkateniert und wieder auf einen Int castet, hat man die abstrakteste und sauberste Variante von allen, gerade wenn man nicht nur Zufallszahlen <10 will, sondern das ganze für alle möglichen Zahlenkombinationen will.

--

Music Artist / 2D Artist / Mapper


Dieser Beitrag wurde am 25.05.2011 um 23:45 von Xardas bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
008
26.05.2011, 01:12
Bluthund



Zitat:
Xardas postete
Naja, man muss ja die Zahlen nicht direkt auf einen Char casten.
Genau das hast du doch aber vorgeschlagen. Du schriebst "casten" und konvertieren.

Zitat:
Wenn man im vorraus überprüft, welche der beiden Integers kleiner ist, und sie entsprechend konkateniert und wieder auf einen Int castet, hat man die abstrakteste und sauberste Variante von allen, gerade wenn man nicht nur Zufallszahlen <10 will, sondern das ganze für alle möglichen Zahlenkombinationen will.
KISS, denn es steht nicht in den Anforderungen.
Ausserdem handelt es sich hier offensichtlich um Wuerfelaugen und ein Spiel das mit einem W6 gespielt wird; sehr wahrscheinlich geht es ums Meiern oder ein aehnliches Spiel.

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-

zum Seitenanfang zum Seitenende Profil || Suche
009
26.05.2011, 13:11
Kriz



Ich hab schon eine Lügenmäxchen-App für's iPhone, brauch keine mehr >:-)

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche