переключайте определенные элементы между двумя массивами и размещайте переключаемый элемент в конце первого массива

#c

Вопрос:

я пытаюсь сделать так , чтобы, если я введу число 3, матрица изменилась бы на {1,2,4,5,6,7,8,9,10,11,12,0}, я не уверен, что метод переключения элемента между двумя массивами является лучшим способом сделать это, и я пытаюсь сделать это с помощью указателей

 using namespace std;
#include <iomanip>
int main() {

    int arr[3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }, i, j,c;
    int* ptr = amp;arr[0][0];

    int zero[3][4] = { 0,0,0,0,0,0,0,0,0,0,0,0 };
    int* zptr = amp;zero [0][0];

    for (int i = 0; i < 3; i  )
    {
        for (int j = 0; j < 4; j  )
        {
            cout << setw(8) << arr[i][j] << ' ';
        }
        cout << endl;
        cout << ' ' << endl;
    }
    
    for (i = 0; i < 3; i  ) {
        if (arr[i][0] = i)
        {
            break;
        }

        for (int j = 0; j < 4; j  ) 
            cin >> i;
             cout << ptr;
    }
    
        return 0;
}
 

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

1. arr[i][0] = i это задание, а не сравнение. Возможно, вы имели в виду arr[i][0] == i : обратите внимание на два знака равенства. Однако на самом деле это условие arr[i][0] == i не выполняется ни для одного i из них . Неясно, чего пытается достичь этот код. Например cin >> i , не имеет никакого смысла — почему вы принимаете пользовательский ввод и сохраняете его в индексе цикла?

Ответ №1:

вы могли бы использовать более простой подход для достижения этой цели, используя vector в c и найдя индекс входного элемента, рассмотрим этот пример :

 int getIndex(vector<int> v, int K) {
    auto it = find(v.begin(), v.end(), K);

    // calculating the index of K
    // note that here i'm supposed the input is valid
    int index = it - v.begin();
    return index;
}
 

и вы можете использовать полученный индекс, чтобы 1) добавить в A элемент B[индекс], 2) назначить B[индекс] A[индексу] и 3) стереть элемент A[индекс].

надеюсь, это может быть полезно.