Я пытаюсь перетасовать 2D-массив структур без использования векторов. Код, который я до сих пор работает в одном измерении, но у меня возникают проблемы с его расширением до двух измерений. Вот что у меня есть до сих пор:Передача 2d массива структур в C++
#include <iostream>
#include <algorithm>
#include <time.h>
using namespace std;
struct bingo {
int set1;
int set2;
};
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
void randomize(int arr[], int n) {
srand(time(NULL));
for(int i = n-1; i > 0; i--) {
int j = rand() % (i + 1);
swap(&arr[i], &arr[j]);
}
}
int main() {
const int n = 28;
bingo arr[n] = { // array of structs
{0,1}, {1,2}, {2,3}, {3,4}
};
randomize(arr, n); // My error happens here and it says "cannot convert
// "bingo* to int* for argument '1' to void randomize(int*, int)
for(int i = 0; i < n; i++) {
std::cout << arr[i].set1 << arr[i].set2 << endl;
}
return(0);
}
Ну, да. 'randomize()' принимает 'int *', а не 'bingo'. Вы должны сначала изменить эту функцию, чтобы взять «bingo *», в первую очередь. – mauzel
Является ли это C или C++? Вы говорите C, но отметили C++. Пожалуйста, либо сделайте его допустимым C, либо удалите упоминания C. – Vality
@Vality От включенных утверждений и использования 'std :: cout' это явно C++. У ОП, похоже, есть неправильные представления об используемом языке. –