Другие языки программирования и технологии

C++ массивы. Пожалуйста, помогите!

Как мне сделать сверку данных массива, вот например я создаю два массива int nomer1[5] = {0, 1, 2, 3, 4, 5} и nomer2[5] = {2, 4, 6, 7, 8}. Теперь создаю условие в котором будет проверятся данные массивов if(nomer1 != nomer2) //не знаю правильно ли это
cout << "данные массива не похожи";

Но в моем случае данные массива не постоянные, они изменяются.
Помогите, пожалуйста!
#include <iostream>
#include <array>
using namespace std;
typedef array<int, 5> array_5;
void print(array_5 a) { for (auto i : a) cout << ' ' << i; }
int main() {
array_5 a = { 1, 2, 3, 4, 5 };
array_5 b = { 2, 3, 4, 5, 6 };
array_5 c = { 1, 2, 3, 4, 5 };
setlocale(LC_ALL, "rus");
cout << "a[] -> "; print(a); cout << endl;
cout << "b[] -> "; print(b); cout << endl;
cout << "c[] -> "; print(c); cout << endl;
if (a == b) cout << "a[] и b[] равны\n";
else cout << "a[] и b[] не равны\n";
if (a == c) cout << "a[] и c[] равны\n";
else cout << "a[] и c[] не равны\n";
if (b == c) cout << "b[] и c[] равны\n";
else cout << "b[] и c[] не равны\n";
cin.get();
}
Сергей Налобин
Сергей Налобин
54 463
Лучший ответ
В Си такое не прокатывает. Можно взять указатели и сравнить участки памяти.
lexa_borisenko
lexa_borisenko
76 946
Есть. Даже с такими массивами и в старом стандарте, а не вектора и array из C++ v11. Пример - первые 2 сравнения на memcmp (функция C из string.h/cstring), вторые 2 на equal (С++ из algorithm)

#include < iostream >
#include < cstring >
#include < algorithm >

using namespace std;

int main() {
const size_t n = 5;

int nomer1[n] = {0, 1, 2, 3, 4};
int nomer2[n] = {2, 4, 6, 7, 8};
int nomer3[n] = {0, 1, 2, 3, 4};

if (memcmp(&nomer1, &nomer2, sizeof(int)*n)==0)
cout << "Equal 1 & 2 by memcmp" << endl;

if (memcmp(&nomer1, &nomer3, sizeof(int)*n)==0)
cout << "Equal 1 & 3 by memcmp" << endl;

if (equal(nomer1, nomer1 + n, nomer2))
cout << "Equal 1 & 2 by equal" << endl;

if (equal(nomer1, nomer1 + n, nomer3))
cout << "Equal 1 & 3 by equal" << endl;

return 0;
}

Соотв
Equal 1 & 3 by memcmp
Equal 1 & 3 by equal

Закинул на IdeOne:
http://ideone.com/jw76Gn
#define N 5 /*размер*/
arr0[N] = /*... бла бла*/
arr1[N] = /*... бла бла*/
int i = 0;
for(; i < N; i++)
{
if(arr0[i] != arr1[i])
{
cout << "Не совпадают" << '\n';
break;
}
}

Если размерность разная и нужно сравнить первые данные, то
for(i = 0; i < _минимальная_размерность; i++)

_минимальная_размерность:
int arr0[Одна размерность];
int arr1[вторая размерность];
int mlen = sizeof(arr1) > sizeof(arr0) ? sizeof(arr0)/sizeof(int) : sizeof(arr1)/sizeof(int);
берёшь цикл который равен числу элементов массива. В нем сравниваешь элементы и усё.
Вадим Колганов
Вадим Колганов
16 976