Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- using namespace std;
- int main()
- {
- int zahlen[9][9] = {};
- string zeichen[11] = {};
- int cnt_1 = 0;
- int cnt_2 = 0;
- bool kontrolle = true;
- cout << "Bitte geben sie ein Soduko\n";
- // einlesen des sodokus
- for (int i = 0; i < 11; i++)
- {
- cin >> zeichen[i];
- }
- // speichern in das zahlen array
- for (int j = 0; j < 11; j++)
- {
- for (int k = 0; k < zeichen[j].length(); k++)
- {
- if (zeichen[j].at(k) >= '1' && zeichen[j].at(k) <= '9')
- {
- zahlen[cnt_1][cnt_2] = zeichen[j].at(k) - '0';
- cnt_2++;
- }
- }
- if (cnt_2 == 8)
- {
- cnt_1++;
- cnt_2 = 0;
- }
- }
- for (int spalte = 0; spalte < 9; spalte++) {
- for (int zahl = 1; zahl <= 9; zahl++) {
- int vergleich = 0;
- for (int zeile = 0; zeile < 9; zeile++)
- {
- if (zahlen[zeile][spalte] == zahl)
- {
- vergleich += 1;
- }
- }
- if (vergleich == 0) { // wenn zahlt feht
- cout << "Spalte" << spalte << ": Zahl " << zahl << " kommt nicht vor.\n";
- kontrolle = false;
- }
- else if (vergleich > 1) { // wenn zahl doppelt vor kam
- cout << "Spalte" << spalte << ": Zahl " << zahl << " kommt mehrfach vor.\n";
- kontrolle = false;
- }
- }
- }
- for (int spalte = 0; spalte < 9; spalte++) {
- for (int zahl = 1; zahl <= 9; zahl++) {
- int vergleich = 0;
- for (int zeile = 0; zeile < 9; zeile++)
- {
- if (zahlen[spalte][zeile] == zahl)
- {
- vergleich += 1;
- }
- }
- if (vergleich == 0) { // wenn zahlt feht
- cout << "Zeile" << spalte << ": Zahl " << zahl << " kommt nicht vor.\n";
- kontrolle = false;
- }
- else if (vergleich > 1) { // wenn zahl doppelt vor kam
- cout << "Zeile" << spalte << ": Zahl " << zahl << " kommt mehrfach vor.\n";
- kontrolle = false;
- }
- }
- }
- //blocküberprüfung
- int block = 0;
- for (int zeile = 0; zeile < 9; zeile += 3) {//alle 3 zeilen
- for (int spalte = 0; spalte < 9; spalte += 3, block++) {
- for (int zahl = 1; zahl <= 9; zahl++) {
- int vergleich = 0;
- for (int blockZ= zeile; blockZ < zeile + 3; blockZ++) {
- for (int blockS = spalte; blockS < spalte + 3; blockS++) {
- if (zahlen[blockZ][blockS] == zahl)
- vergleich += 1;
- }
- }
- if (vergleich == 0) { // wenn zahlt feht
- cout << "BLock" << block << ": Zahl " << zahl << " kommt nicht vor.\n";
- kontrolle = false;
- }
- else if (vergleich > 1) { // wenn zahl doppelt vor kam
- cout << "Block" << block << ": Zahl " << zahl << " kommt mehrfach vor.\n";
- kontrolle = false;
- }
- }
- }
- }
- if (kontrolle == true)
- {
- cout << "Das Soduko ist gueltig. :) \n";
- }
- system("pause");
- return 0;
- }
- /*
- .5.1.4.|.8.6.9.|.7.2.3
- .8.7.2.|.3.4.5.|.6.1.9
- .9.6.3.|.2.1.7.|.5.4.8
- -------|-------|-------
- .6.2.8.|.1.3.4.|.9.5.7
- .1.9.7.|.6.5.2.|.8.3.4
- .4.3.5.|.7.9.8.|.1.6.2
- -------|-------|-------
- .2.4.6.|.9.7.1.|.3.8.5
- .7.5.1.|.4.8.3.|.2.9.6
- .3.8.9.|.5.2.6.|.4.7.1
- // falsch
- .5.1.4.|.1.6.9.|.7.2.3
- .8.7.2.|.3.4.5.|.6.1.9
- .9.6.3.|.2.1.7.|.5.4.8
- -------|-------|-------
- .4.2.8.|.1.3.4.|.9.5.7
- .1.9.7.|.6.5.2.|.8.3.4
- .4.3.5.|.7.9.8.|.1.6.2
- -------|-------|-------
- .2.4.6.|.9.7.1.|.3.8.5
- .7.5.1.|.4.8.3.|.2.9.6
- .3.8.9.|.5.2.6.|.4.7.1
- falsch
- .5.1.4.|.8.6.9.|.7.2.3
- .8.7.1.|.3.4.2.|.6.1.9
- .9.6.3.|.2.1.7.|.5.3.8
- -------|-------|-------
- .4.2.8.|.5.3.4.|.6.5.7
- .1.9.7.|.6.5.2.|.8.3.4
- .4.3.5.|.7.9.8.|.1.6.2
- -------|-------|-------
- .2.4.6.|.9.7.1.|.3.8.5
- .7.5.1.|.4.8.3.|.2.9.6
- .3.8.7.|.5.2.8.|.4.7.9
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement