Сравнение двух двухмерных массивов
Нужно сравнить 2 двумерных массива на схожесть элементов. Если 1 элемент отличается, завершать цикл. Пытаюсь сделать, однако получается только завершить второй цикл, а первый продолжает работать.
#include <iostream>
using namespace std;
int main(){
int a [2][3] = {{1,2,3},{4,5,6}};
int b [2][3] = {{1,3,3},{4,5,6}};
for (int i = 0;i<2;i++){
for(int j= 0;j<3;j++){
if (a[i][j]!=b[i][j]){
cout << "q" << endl;
break;
} else cout << "qq" << endl;
}
}
return 0;
}
Ответы (3 шт):
Автор решения: hlghl
→ Ссылка
#include <iostream>
using namespace std;
int main(){
int a [2][3] = {{1,2,3},{4,5,6}};
int b [2][3] = {{1,3,3},{4,5,6}};
bool flag = true;
for (int i = 0;i<2;i++){
if (flag) {
for(int j= 0;j<3;j++){
if (flag) {
if (a[i][j]!=b[i][j]){
cout << "q" << endl;
flag = false;
} else cout << "qq" << endl;
}
}
}
}
return 0;
}
Автор решения: Igor
→ Ссылка
bool flag = true;
for (int i = 0; flag && i < 2; i++) {
for (int j = 0; flag && j < 3; j++) {
if (a[i][j] != b[i][j])
flag = false;
}
}
cout << (flag? "qq" : "q") << endl;
Автор решения: Mkorny
→ Ссылка
В общем, послушал avp и решил прочитать про goto. Говорят вещь та еще(плохая). Но в итоге получилось так, как в принципе мне нужно. То бишь, если 1 элемент отличается, то цикл завершается. В версии hlghl немного заморочено, как я думаю. И она выводит сначала qq а потом q, вроде как, ну а надо что-то одно, сообщение о том, что либо эти массивы одинаковые, либо нет. Вот моя версия, если что, подправьте, пожалуйста :)
#include <iostream>
using namespace std;
int main(){
int a [2][3] = {{1,2,3},{4,5,6}};
int b [2][3] = {{1,2,3},{4,5,6}};
for (int i = 0;i<2;i++){
for(int j= 0;j<3;j++){
if (a[i][j]!=b[i][j]){
cout << "q" << endl;
goto link;
}
}
}
cout << "qq";
link:
return 0;
}