#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[индекс].
надеюсь, это может быть полезно.