Advertisement
Guest User

Untitled

a guest
Dec 17th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.52 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5.  
  6. int main()
  7. {
  8.     int zahlen[9][9] = {};
  9.     string zeichen[11] = {};
  10.     int cnt_1 = 0;
  11.     int cnt_2 = 0;
  12.     bool kontrolle = true;
  13.     cout << "Bitte geben sie ein Soduko\n";
  14.  
  15.     // einlesen des sodokus
  16.     for (int i = 0; i < 11; i++)
  17.     {
  18.         cin >> zeichen[i];
  19.     }
  20.  
  21.     // speichern in das zahlen array
  22.     for (int j = 0; j < 11; j++)
  23.     {
  24.  
  25.         for (int k = 0; k < zeichen[j].length(); k++)
  26.         {
  27.             if (zeichen[j].at(k) >= '1' && zeichen[j].at(k) <= '9')
  28.             {
  29.                 zahlen[cnt_1][cnt_2] = zeichen[j].at(k) - '0';
  30.                 cnt_2++;
  31.             }
  32.  
  33.         }
  34.         if (cnt_2 == 8)
  35.         {
  36.             cnt_1++;
  37.             cnt_2 = 0;
  38.         }
  39.     }
  40.     for (int spalte = 0; spalte < 9; spalte++) {
  41.         for (int zahl = 1; zahl <= 9; zahl++) {
  42.  
  43.             int vergleich = 0;
  44.             for (int zeile = 0; zeile < 9; zeile++)
  45.             {
  46.                 if (zahlen[zeile][spalte] == zahl)
  47.                 {
  48.                     vergleich += 1;
  49.                 }
  50.             }
  51.             if (vergleich == 0) { // wenn zahlt feht
  52.                 cout << "Spalte" << spalte << ": Zahl " << zahl << " kommt nicht vor.\n";
  53.                 kontrolle = false;
  54.             }
  55.             else if (vergleich > 1) { // wenn zahl doppelt vor kam
  56.  
  57.                 cout << "Spalte" << spalte << ": Zahl " << zahl << " kommt mehrfach vor.\n";
  58.                 kontrolle = false;
  59.             }
  60.         }
  61.     }
  62.  
  63.     for (int spalte = 0; spalte < 9; spalte++) {
  64.         for (int zahl = 1; zahl <= 9; zahl++) {
  65.             int vergleich = 0;
  66.             for (int zeile = 0; zeile < 9; zeile++)
  67.             {
  68.                 if (zahlen[spalte][zeile] == zahl)
  69.                 {
  70.                     vergleich += 1;
  71.                 }
  72.             }
  73.             if (vergleich == 0) { // wenn zahlt feht
  74.                 cout << "Zeile" << spalte << ": Zahl " << zahl << " kommt nicht vor.\n";
  75.                 kontrolle = false;
  76.             }
  77.             else if (vergleich > 1) { // wenn zahl doppelt vor kam
  78.  
  79.                 cout << "Zeile" << spalte << ": Zahl " << zahl << " kommt mehrfach vor.\n";
  80.                 kontrolle = false;
  81.             }
  82.         }
  83.     }
  84.  
  85.     //blocküberprüfung
  86.     int block = 0;
  87.     for (int zeile = 0; zeile < 9; zeile += 3) {//alle 3 zeilen
  88.         for (int spalte = 0; spalte < 9; spalte += 3, block++) {
  89.             for (int zahl = 1; zahl <= 9; zahl++) {
  90.                 int vergleich = 0;
  91.                 for (int blockZ= zeile; blockZ < zeile + 3; blockZ++) {
  92.                     for (int blockS = spalte; blockS < spalte + 3; blockS++) {
  93.                         if (zahlen[blockZ][blockS] == zahl)
  94.                             vergleich += 1;
  95.                     }
  96.  
  97.                 }
  98.                 if (vergleich == 0) { // wenn zahlt feht
  99.                     cout << "BLock" << block << ": Zahl " << zahl << " kommt nicht vor.\n";
  100.                     kontrolle = false;
  101.                 }
  102.                 else if (vergleich > 1) { // wenn zahl doppelt vor kam
  103.  
  104.                     cout << "Block" << block << ": Zahl " << zahl << " kommt mehrfach vor.\n";
  105.                     kontrolle = false;
  106.                 }
  107.             }
  108.         }
  109.  
  110.  
  111.  
  112.  
  113.     }
  114.     if (kontrolle == true)
  115.     {
  116.         cout << "Das Soduko ist gueltig. :) \n";
  117.     }
  118.    
  119.  
  120.     system("pause");
  121.     return 0;
  122. }
  123. /*
  124. .5.1.4.|.8.6.9.|.7.2.3
  125. .8.7.2.|.3.4.5.|.6.1.9
  126. .9.6.3.|.2.1.7.|.5.4.8
  127. -------|-------|-------
  128. .6.2.8.|.1.3.4.|.9.5.7
  129. .1.9.7.|.6.5.2.|.8.3.4
  130. .4.3.5.|.7.9.8.|.1.6.2
  131. -------|-------|-------
  132. .2.4.6.|.9.7.1.|.3.8.5
  133. .7.5.1.|.4.8.3.|.2.9.6
  134. .3.8.9.|.5.2.6.|.4.7.1
  135.  
  136.  
  137.  
  138. // falsch
  139. .5.1.4.|.1.6.9.|.7.2.3
  140. .8.7.2.|.3.4.5.|.6.1.9
  141. .9.6.3.|.2.1.7.|.5.4.8
  142. -------|-------|-------
  143. .4.2.8.|.1.3.4.|.9.5.7
  144. .1.9.7.|.6.5.2.|.8.3.4
  145. .4.3.5.|.7.9.8.|.1.6.2
  146. -------|-------|-------
  147. .2.4.6.|.9.7.1.|.3.8.5
  148. .7.5.1.|.4.8.3.|.2.9.6
  149. .3.8.9.|.5.2.6.|.4.7.1
  150.  
  151.  
  152.  falsch
  153.  .5.1.4.|.8.6.9.|.7.2.3
  154.  .8.7.1.|.3.4.2.|.6.1.9
  155.  .9.6.3.|.2.1.7.|.5.3.8
  156.  -------|-------|-------
  157.  .4.2.8.|.5.3.4.|.6.5.7
  158.  .1.9.7.|.6.5.2.|.8.3.4
  159.  .4.3.5.|.7.9.8.|.1.6.2
  160.  -------|-------|-------
  161.  .2.4.6.|.9.7.1.|.3.8.5
  162.  .7.5.1.|.4.8.3.|.2.9.6
  163.  .3.8.7.|.5.2.8.|.4.7.9
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement