Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/263: Рейтинг темы: голосов - 263, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 19

Сравнить два массива

30.07.2016, 08:55. Показов 49528. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста как решить задачу: Нужно сравнить два массива, проверить все элементы на совпадение и если они совпадают то вывести "Массивы равны" если нет то "Массивы не равны". Я перепробовал много вариантов, но правильный не смог найти.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
    // int i=0;
    
    int arr [] = {0,1,2,3,4,5,6,7,8,9};
    int arr1 [] = {0,1,2,3,4,5,6,7,8,9};
    int *b = arr, *e = arr1;
    for (int i = 0; i <10; i++) {
        if (b == e)
    cout << " Массивы равны " ;
        if (b != e)
        cout << " Массивы не равны " ;
        
        
}
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.07.2016, 08:55
Ответы с готовыми решениями:

Найти среднее арифметическое элементов массива, сравнить два массива поэлементно
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; using namespace std; void main() { float x, y, SA; int K, KOL,...

Сравнить два массива
Всем привет, помогите найти ошибку, я уже не знаю в чем дело, пытаюсь сравнить два массива, выводит 3 совпадения из 4 #include...

Сравнить два массива
Доброго дня ! Как-то с полгода назад мне понадобилась программа (с комбинаторикой), сравнивающая два массива - masС cравнить с masD. ...

19
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
30.07.2016, 09:32
Что за b и e? Индексами пользуйся. И проверяй на "не равно", устанавливая флаг. Все сообщения после цикла.
0
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 19
30.07.2016, 12:10  [ТС]
Оке, попробую разобраться, спасибо)

Добавлено через 1 час 5 минут
Если вот так написать то работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
    int i=0;
    
    int arr [] = {0,1,2,3,4,5,6,7,8,9};
    int arr1 [] = {0,1,2,3,4,5,6,7,8,9};
    for (int i = 0; i <10; i++)
        {
            if (arr[i] != arr1[i])
            cout << " Массивы не равны " ;}
        if (arr[i] == arr1 [i])
        {
            cout << " Массивы равны " ;}
      
    
}
Такой вариант решения задачи приемлем? Может есть вариант проще сделать? и еще вопрос, когда я вместо второго if ставлю else компилятор ругается

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
    int i=0;
    
    int arr [] = {0,1,2,3,4,5,6,7,8,9};
    int arr1 [] = {0,1,2,3,4,5,6,7,8,9};
    for (int i = 0; i <10; i++)
        {
            if (arr[i] != arr1[i])
            cout << " Массивы не равны " ;}
      else
        {
            cout << " Массивы равны " ;}
      
    
}
почему?
0
 Аватар для shilko2013
257 / 234 / 185
Регистрация: 02.04.2016
Сообщений: 898
30.07.2016, 12:15
Потому что выглядит это так
C++
1
2
3
4
5
6
for (int i = 0; i <10; i++)
        {/*...*/}
      else
        {
            cout << " Массивы равны " ;}
}
Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
bool a = 1;
    int arr [] = {0,1,2,3,4,5,6,7,8,9};
    int arr1 [] = {0,1,2,3,4,5,6,7,8,9};
    for (int i = 0; i <10; ++i)
            if (arr[i] != arr1[i])
               a = 0,
               break;
    if (a)
            cout << " Массивы равны " ;
      else
            cout << " Массивы не равны " ;
0
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 19
30.07.2016, 12:30  [ТС]
Спасибо)
0
Модератор
Эксперт С++
 Аватар для zss
13766 / 10960 / 6490
Регистрация: 18.12.2011
Сообщений: 29,234
30.07.2016, 13:40
shilko2013,
Цитата Сообщение от shilko2013 Посмотреть сообщение
bool a = 1;
Так писать некошерно
C++
1
bool a=true;
C++
1
2
3
4
5
if (arr[i] != arr1[i])
{
     a = false;
     break;
}
Кстати, можно обойтись и без нее
C++
1
2
3
4
5
6
7
8
int i=0;
 for (; i <10; ++i)
     if (arr[i] != arr1[i])
        break;
 if (i==10)
        cout << " Массивы равны " ;
 else
        cout << " Массивы не равны " ;
0
30.07.2016, 13:45

Не по теме:

Цитата Сообщение от shilko2013 Посмотреть сообщение
C++
1
bool a = 1;
Эхъ, вы) А ведь тест был написан вами на сотку :)

0
 Аватар для shilko2013
257 / 234 / 185
Регистрация: 02.04.2016
Сообщений: 898
30.07.2016, 13:59
zss, Зато короче)

Добавлено через 34 секунды
Ferrari F1, У меня компилируется
0
Модератор
Эксперт С++
 Аватар для zss
13766 / 10960 / 6490
Регистрация: 18.12.2011
Сообщений: 29,234
30.07.2016, 15:02
Цитата Сообщение от shilko2013 Посмотреть сообщение
, Зато короче)
Где же короче, если на 1 строчку меньше

Добавлено через 1 минуту
Цитата Сообщение от shilko2013 Посмотреть сообщение
У меня компилируется
Это не значит, что надо пользоваться.
Вы дискредитируете понятие bool.
Пишите уж тогда int.
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
30.07.2016, 15:05
Цитата Сообщение от zss Посмотреть сообщение
Вы дискредитируете понятие bool.
shilko2013, Есть гораздо более веская причина: всем известно, что в коде нужно стремиться минимизировать количество "магических" констант. Поэтому и в Си для таких случаев делают дефайны или enum-константы TRUE и FALSE.
1
 Аватар для shilko2013
257 / 234 / 185
Регистрация: 02.04.2016
Сообщений: 898
30.07.2016, 15:10
DrOffset, Ок
0
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
30.07.2016, 15:28
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include<algorithm>
using namespace std;
int main() {
    setlocale(LC_ALL,"RUS");
    int arr [] = {0,1,2,3,4,5,6,7,8,9};
    int arr1 [] = {0,1,2,3,4,5,6,7,8,9};
    if(equal(arr,arr+10,arr1)) {
        cout<<"Массивы равны";
    } else cout<<"Массивы не равны";
    return 0;
}
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
30.07.2016, 15:54
C++
1
2
3
4
5
6
bool compare_arrays(int * a, int * b, size_t count) {
    for ( size_t i = 0; i < count; ++i )
        if ( a[i] != b[i] )
            return false;
    return true;
}
1
3 / 3 / 3
Регистрация: 23.06.2015
Сообщений: 38
30.07.2016, 16:43
А почему вы не рассматриваете вариант когда массивы разных размеров ?
0
Модератор
Эксперт С++
 Аватар для zss
13766 / 10960 / 6490
Регистрация: 18.12.2011
Сообщений: 29,234
30.07.2016, 16:47
Цитата Сообщение от sham63 Посмотреть сообщение
когда массивы разных размеров
Они априори не равны, зачем сравнивать?
0
3 / 3 / 3
Регистрация: 23.06.2015
Сообщений: 38
30.07.2016, 16:50
zss , это да. Но я бы к примеру сообщение об ошибке выдал.

C++
1
2
3
4
5
6
const int n = 3; // размер первого массива
const int m = 4; // размер второго массива
...
if(!n==m) {
    cout<<"Массивы не равны !";
}
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,679
Записей в блоге: 14
30.07.2016, 17:10
Прежде, чем решать, нужно договориться, что значит "массивы равны". Тут возможны случаи:

1) состоят из одинаковых элементов {1,2,3} и {3,1,2} в этом смысле равны
2) совпадают поэлементно {1,2,3} и {3,1,2} не равны

Все решения относятся ко второму случаю. Первый случай сложнее.
0
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
30.07.2016, 17:33
Цитата Сообщение от Catstail Посмотреть сообщение
Первый случай сложнее
Ненамного, достаточно просто отсортировать оба массива и задача сведется к первому случаю.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,679
Записей в блоге: 14
30.07.2016, 18:04
Цитата Сообщение от Новичок Посмотреть сообщение
Ненамного, достаточно просто отсортировать оба массива и задача сведется к первому случаю.
- в лучшем случай (если ты владеешь хорошими алгоритмами сортировки), то в log2n раз, в худшем случае - значительно сложнее n и n2
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
30.07.2016, 21:49
Цитата Сообщение от Catstail Посмотреть сообщение
Тут возможны случаи
Раз пошла такая пьянка, ещё можно рассматривать ||a|| = ||b||
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.07.2016, 21:49
Помогаю со студенческими работами здесь

Сравнить логически два массива
Сравнить , используя логическое или(||) два одномерных массива (А и В) и записать результат в массив С Массивы создал , но не знаю как...

Как сравнить два массива
Здравствуйте форумчане! Помогите пожалуйста, скажите как сравнить два массива побитово и побайтово. В инете ни чего не могу найти((

Сравнить два массива, заданных классами
Имеется class array и class array2. В них описаны массивы. И два метода, заполняющие их. Нужно сравнить два этих массива (Вывести...

Сравнить два массива одинаковой длины
Сравниваю два массива длиной три. Сравнивать нужно с конца. #include &lt;iostream&gt; using namespace std; int main (){ int array; ...

Как сравнить два элемента массива типа string?
Задание. Вычислить какая компания чаще всего участвовала в роли истца. У меня есть массив в котором хранятся названия компаний ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru