tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
2770
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    DerWisser DerWisser ist offline Grünschnabel
    Registriert seit
    Mar 2007
    Beiträge
    4
    Hallo.
    Ich wollte eigentlich die Werte von einem 2D array in ein anders kopieren und dabei eine bestimmte menge an Zahlen gegen 0 tauschen.
    Code :
    1
    
    printf("Geben sie bitte, für den Schwierigkeitsgrad, eine Zahl zwischen 1 und 80 ein");
    Ich dachte beim kopieren an:
    Code :
    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
    
     #include <stdio.h>
    void main(void)
    {
         int feld[9][9] =  //Das sudoku
    {   
                {1, 7, 9, 4, 6, 3, 2, 8, 5},
                {4, 2, 5, 8, 1, 9, 7, 6, 3},
                {3, 6, 8, 7, 5, 2, 9, 4, 1},
                {9, 4, 7, 2, 3, 5, 6, 1, 8},
                {6, 8, 1, 9, 7, 4, 3, 5, 2},
                {2, 5, 3, 1, 8, 6, 4, 9, 7},
                {8, 1, 2, 6, 4, 7, 5, 3, 9},
                {5, 9, 6, 3, 2, 1, 8, 7, 4},
                {7, 3, 4, 5, 9, 8, 1, 2, 6},
    };
         int feld2[9][9] = //das Feld nach der Abfrage 
    {   
                {1, 2, 3, 4, 5, 6, 7, 8, 9},
                {0, 0, 0, 0, 0, 0, 0, 0, 0},
                {0, 0, 5, 0, 3, 0, 0, 0, 2},
                {0, 0, 0, 2, 0, 0, 0, 0, 0},
                {0, 0, 3, 0, 0, 0, 2, 0, 1},
                {0, 0, 0, 0, 0, 0, 0, 0, 0},
                {0, 0, 0, 0, 1, 0, 0, 0, 0},
                {0, 1, 0, 0, 0, 0, 9, 0, 0},
                {0, 0, 0, 0, 0, 0, 5, 0, 0},
    };
    int x, y;
    feld[0][0] = feld2[0][0];
     feld[0][1] = feld2[0][1];
     feld[0][2] = feld2[0][2];
     feld[0][3] = feld2[0][3];
     feld[0][4] = feld2[0][4];
     feld[0][5] = feld2[0][5];
     feld[0][6] = feld2[0][6];
     feld[0][7] = feld2[0][7];
     feld[0][8] = feld2[0][8]; 
    //usw.
    aber das sieht ziemlich „Unelegant“ und dann es fehlt mir immer noch die Möglichkeit der abfrage.
    Das sollte ein Sudoko werden bei dem man den Schwierigkeitsgrad (also die menge der zahlen die man löschen sollte) abfragen kann.
    Weiß jemand wie ich das lösen könnte
     

  2. #2
    Avatar von Online-Skater
    Online-Skater Online-Skater ist offline Mitglied Brillant
    Registriert seit
    Sep 2004
    Ort
    Rostock
    Beiträge
    891
    Hmm für mich nichtganz eindeutig die Frage aber ich versuche es mal:

    - volles Array (Lösung) erstellen
    - volles Array kopieren (Ratearray)
    - Eingabe der Schwierigkeit (n-Zahlen weglassen)
    - for schleife (0-n)
    - Boolvar auf false
    - while schleife (solange Boolvariable falsch)
    - Zufallsindex wählen(0-9)(0-9) oder einmal und splitten
    - Abfragen ob der Inhalt 0 ist (wenn nein boolvar = true)
    - indexplatz auf 0 setzen
    - ende gelände

    So oder so ähnlich sollte es klappen, die Frage ist nur ob es überhaupt lösbar ist ein bei einer zu einseitigen Matrix
     

  3. #3
    DerWisser DerWisser ist offline Grünschnabel
    Registriert seit
    Mar 2007
    Beiträge
    4
    Danke für deine hilfe aber ich muss erhlich sagen das ich nicht wirklich viel bis jetzt programmiert hab ....
    ich versteh alles bis:
    Boolvar auf false
    - while schleife (solange Boolvariable falsch)
    - Zufallsindex wählen(0-9)(0-9) oder einmal und splitten
    - Abfragen ob der Inhalt 0 ist (wenn nein boolvar = true)
    - indexplatz auf 0 setzen
     

  4. #4
    Avatar von Online-Skater
    Online-Skater Online-Skater ist offline Mitglied Brillant
    Registriert seit
    Sep 2004
    Ort
    Rostock
    Beiträge
    891
    Ok zur Erklärung: Ich habe deine Frage so verstanden das wenn der User den Schwierigkeitsgrad 40 angibt, genau 40 Zahlen vom Array auf 0 zurückgesetzt werde sollen. Der Hintergrund der ganzen Geschichte ist es zufällig irgendwelche Werte(Indizes) zu wählen und sie auf 0 zu setzen damit der User dieses Feld erraten muss(Soduku halt). Wenn dieses Feld aber schon mit 0 belegt ist, würde die For-Schleife weiterzählen und es wären z.B. nur 39 Felder auf 0 gesetzt worden und nicht 40. Desweiteren eine ausführlichere Erklärung zu den nicht verstandenen Punkten

    Du setzt in der For-Schleife eine Variable vom Typ Bool auf false, das bedeutet in diesem Fall, der Slot wird schon eine 0 haben, es ist quasi nur ein Schalter. Solange diese Variable false ist wird die While-Schleife ausgeführt. Diese erzeugt zufällig Indizes (0-9)
    da dein Array ja bla[9,9] aussieht. Z.b. erzeugt das Programm x1=4 und x2=7 dann fragst du ab ob dort schon eine 0 steht. Ist dies der Fall werden neue Indizes erzeugt solange bis der Platz keine 0 enthält. Dann setzt du die Bool Variable auf true und den Platz auf 0 somit wird die While-Schleife abgebrochen und die For-Schleife geht weiter. Dieses Prozedere n-mal.

    Zufallswert erzeugen: random(10) oder rand % 10
    Alles weitere findest du in der Hilfe mfg
     

Ähnliche Themen

  1. Array kopieren
    Von Cyraid im Forum C/C++
    Antworten: 6
    Letzter Beitrag: 02.05.10, 23:45
  2. Array neu aufbauen/verändern
    Von BastianW im Forum PHP
    Antworten: 3
    Letzter Beitrag: 04.04.09, 17:27
  3. HEX-Array dynamisch verändern? Problem!
    Von eXus49 im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 22.01.08, 19:01
  4. Schlüssel verändern Array
    Von weltvolk im Forum PHP
    Antworten: 2
    Letzter Beitrag: 08.11.07, 18:35
  5. Globales array verändern
    Von hermann9 im Forum Java
    Antworten: 11
    Letzter Beitrag: 08.06.05, 15:09