1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Hilfe...

  • fips
  • 24. Juli 2004 um 19:07
  • Unerledigt
  • fips
    3
    fips
    Mitglied
    Punkte
    70
    Beiträge
    9
    • 24. Juli 2004 um 19:07
    • #1

    Frage, hab ein kleines programmiertechnisches Problem.
    Erstelle eine vierstellige Zufallszahl. Ein benutzer gibt ebenso eine vierstellige Zahl ein. Meine Frage: Wie komm ich bei der ZUfallszahl an die einzelnen Zahlen. z.B: 9812 aufschluesseln auf 9,8,1,2. Komm einfach nicht drauf, das Spiel nennt sich Mastermind. Damit man vergleichen kann, wieviele Zahlen uebereinstimmen.

    L.g Fips

  • Primenumber
    11
    Primenumber
    Mitglied
    Reaktionen
    2
    Punkte
    1.122
    Beiträge
    218
    • 24. Juli 2004 um 19:50
    • #2

    Entweder ganz hässlich mit foo / 1000, die nächste Stelle mit foo - ((foo / 1000) * 1000) usw

    oder zB

    char *bar = new char[10];
    _itoa(foo, bar, 10);
    und mit bar[0] bis bar[9] hast du die einzelnen chars.

    Vielleicht gibts auch noch ne schönere Lösung, aber ich bin schon zu C# geschädigt :)

  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 24. Juli 2004 um 20:05
    • #3
    Zitat von Primenumber

    _itoa(foo, bar, 10);


    Diese Funktion _itoa ist aber nicht Teil von ISO C oder ISO C++ und wird nur auf bestimmten Plattformen unterstützt. In echtem C kann man zum Beispiel sprinf verwenden. Ich finde übrigens nicht, daß es total häßlich ist, die Ziffern einzeln mit Modulo- und Divisionsoperationen zu ermitteln.
    new ist übrigens C++, aber nicht C; eventuell hilft das fips nicht weiter. Ich würde allen empfehlen, die sinnlose Kategorie "C/C++" zu ignorieren und stattdessen explizit ihn ihren Post zu schreiben, in welcher Sprache sie ihre Lösung haben möchten. (Oder man nervt halt die Mods so lange, bis anständig benannte Kategorien eingeführt werden.) Und man bekommt vielleicht auch mehr Hilfe und weniger Beschwerden von Leuten wie mir, wenn man seinem Thread auch einen brauchbaren Titel gibt...

    *plantsch*

  • Primenumber
    11
    Primenumber
    Mitglied
    Reaktionen
    2
    Punkte
    1.122
    Beiträge
    218
    • 24. Juli 2004 um 20:37
    • #4

    Einwand zur Kenntnis genommen.
    Wie siehts mit itoa() aus der stdlib aus? Ist das dann ISO C/C++?
    Und char buf[10] geht aber schon?

  • djmaecki
    8
    djmaecki
    Mitglied
    Reaktionen
    1
    Punkte
    616
    Beiträge
    119
    • 24. Juli 2004 um 21:44
    • #5

    Wahrscheinlich nicht der schönste und tollste Code, aber wenn man in Kürze weggeht, sollte es wohl genügen. Wenn du i mit 10000 initialisierst, dann kannst du 5stellige Zahlen behandeln, usw. Fst kannst du in der Schleife zB in ein Array platzieren.

    Code
    #include <stdio.h>
     
     int main ()
     {
       int Foo = 9876;
       int i, Fst;
     
       for (i = 1000; i; Foo -= Fst*i, i /= 10)
     	{
     	  printf ("%d %d\n", Foo, Fst = Foo/i);
     	}
     
       return 0;
     }
    Alles anzeigen
  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 25. Juli 2004 um 17:47
    • #6
    Zitat von Primenumber

    Wie siehts mit itoa() aus der stdlib aus? Ist das dann ISO C/C++?


    Weder noch. Wie gesagt, mit sprintf (und in C99 auch snprintf) geht sowas supi.

    Zitat

    Und char buf[10] geht aber schon?


    Ja, natürlich.

    *plantsch*

  • RT83
    5
    RT83
    Mitglied
    Reaktionen
    3
    Punkte
    258
    Beiträge
    40
    • 25. Juli 2004 um 17:55
    • #7

    warum machst du nicht einfach eine modulo rechnung mit der zufallszahl und so kriegst du dann die einzelnen zahlen

    zb 3445
    3445 mod 10= 5
    3445 / 10 = 344
    344 mod 10 = 4
    344 / 10 = 34
    ....

    http://rthullner.blogspot.com/

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung