Also es ist ja wirklich selten, dass ich mich über Codestücke wirklich amüsieren kann, aber ich habe auf StackExchange eine rege Diskussion hinter mir, ob nachfolgendes Codestück nun korrekt sei, oder nicht. (Übrigens nicht der Autor der Frage, sondern jemand der ne Antwort darauf gegeben hat!)
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include <iostream>
int main() {
constexpr const int N = 3;
int x[N][N] { { 1, 0, 1}, { 0, 0, 0}, { 1, 0, 1}};
for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j)
if (x[i][j] != 0)
break;
std::cout << "The first all-zero row is" << i << std::endl;
break;
}
}
|
Zwischenzeitlich dann durch das da ersetzt, was die Probleme ja dann seiner Meinung nach lösen sollte...
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
|
constexpr const int N = 3;
int x[N][N]{ { 1, 0, 1 },{ 1, 0, 1 },{ 0, 0, 0 } };
for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j)
if (x[i][j] != 0) {
++i; j = 0;
break;
}
std::cout << "The first all-zero row is " << i << std::endl;
break;
}
|
Nun, er scheint es dann irgendwann begriffen zu haben und kam mit dem hier um die Ecke:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include <iostream>
int main() {
constexpr const int N = 3;
int x[N][N]{ { 1, 0, 1 },{ 0, 1, 0 },{ 1, 0, 1 } };
for (int i = 0; i < N; ++i) {
[&] {
for (int j = 0; j < N; ++j)
if (x[i][j] != 0)
return;
std::cout << "The first all-zero row is " << i << std::endl;
exit(0); // found and terminate.
}();
}
std::cout << "No all-zero rows " << std::endl;
}
|
Nunja, und zum Schluss (weil man ja vll das exit nicht mag)
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#include <iostream>
int main() {
constexpr const int N = 3;
int x[N][N]{ { 0, 0, 0 },{ 0, 0, 0 },{ 1, 0, 1 } };
for (int i = 0; i < N; ++i) {
[&] {
for (int j = 0; j < N; ++j)
if (x[i][j] != 0)
return;
std::cout << "The first all-zero row is " << i << std::endl;
i = N;
}();
}
}
|
hier gefunden