Как сравнить элемент 2D-массива с остальными его элементами?

#c #arrays #multidimensional-array

#c #массивы #многомерный массив

Вопрос:

Я знаю, что могу использовать для этого один массив, но если я использую один массив, это усложнит для меня задачу, которую я решаю. Скажем, например, у меня был 2D-массив:

 [["E", "A"], ["R", "B"], ["C", "D"]]
  

Как мне сравнить каждый его элемент с остальными элементами? Например, «E» сравнивается с «A», «R», «B» и т.д. 2D-массив всегда будет состоять из подмассивов размером 1 на 2. Пожалуйста, кто-нибудь может мне помочь, спасибо.

Комментарии:

1. Сравните, и что потом? Что вам нужно делать с результатами таких сравнений? Какую конечную проблему вы пытаетесь решить?

2. Извините, заголовок должен быть «Как сравнить элемент с остальными элементами 2d-массива»

3. Пожалуйста, покажите некоторые из ваших усилий по кодированию, а также добавьте, где у вас возникла проблема, если это возможно, затем добавьте ввод-вывод.

4. Вот простой способ выяснить, как это сделать, и он никогда не перестает работать. Просто достаньте чистый лист бумаги. Запишите, используя короткие, простые предложения на простом английском языке, пошаговый процесс выполнения этого. Когда закончите, позвоните своей резиновой утке, чтобы договориться о встрече . Мы не пишем целые программы для других людей на Stackoverflow. Мы всегда отсылаем такие вопросы к вашей резиновой утке. После того, как ваш резиновый утенок одобрит предложенный вами план действий, просто возьмите то, что вы записали, и переведите это непосредственно на C . Миссия выполнена!

5. Надеюсь, что после получения решения для сравнения элементов я смогу закончить вопрос, который я делал. К сожалению, я не сделал много кодирования, потому что сравнительная часть вопроса была очень важна, следовательно, без нее я мало что мог бы сделать. Я не хочу публиковать весь вопрос, который я делал, потому что единственная часть, с которой я борюсь, — это сравнение элементов. Я искал более часа на разных веб-сайтах, включая stack overflow, но я мог найти свой ответ где угодно. Пожалуйста, вы можете мне помочь.

Ответ №1:

 
#include<iostream>

int main(){
    int arr[2][2] = {
    {1,2},
    {3,4},
    };
    int elem;
    for (int i = 0;i < 2;i  ){
        for(int j = 0;j < 2;j  ){
            //Now you're on the first element
            // I have used a size of 2, but you can use whatever size you want
            elem = arr[i][j];
            for (int a = 0;a < 2;a  ){
                for(int b = 0;b < 2;b  ){
                    if (arr[a][b] == elem) continue;
                    //Do whatever you want now;
                    std::cout << "Comparing " << elem << " with " << arr[a][b] << "n";
                }
            }

        }
    }
    return 1;
}


  

Это результат

 Comparing 1 with 2
Comparing 1 with 3
Comparing 1 with 4
Comparing 2 with 1
Comparing 2 with 3
Comparing 2 with 4
Comparing 3 with 1
Comparing 3 with 2
Comparing 3 with 4
Comparing 4 with 1
Comparing 4 with 2
Comparing 4 with 3

  

Ответ №2:

 #include <array>       // std::array
#include <utility>     // std::pair
    
using namespace std;
    
int main()
{
    // build objects
    pair<char, char> element1('E', 'A');
    pair<char, char> element2('R', 'B');
    pair<char, char> element3('C', 'D');
    array<pair<char, char>, 3> my_array = {element1, element2, element3};

    // perform comparisons
    for (int i = 0; int i != my_array.size();   i) {
        yourCompareFunction(my_array[i].first, my_array[i].second);
        for (int j = i   1; int j != my_array.size();   j) {
            yourCompareFunction(my_array[i].first, my_array[j].first); 
            yourCompareFunction(my_array[i].first, my_array[j].second);
            yourCompareFunction(my_array[i].second, my_array[j].first); 
            yourCompareFunction(my_array[i].second, my_array[j].second);
         };
    };

return 0;
}
  

Комментарии:

1. Большое вам спасибо, но это не совсем то, что я ищу 🙂

2. Который сравнивает каждый char элемент массива с любым другим. Если вы не имели в виду, что отдельные элементы, подлежащие сравнению между собой, должны были быть строками массива (т. е. pair s element1, element2 и т.д. В моей реализации). Если это так, то вы можете захотеть настроить отдельную функцию comparePairs( pair a, pair b).