Я получаю сообщение об ошибке, когда хочу bubblesort
массив. Думаю, проблема в указателях. Ошибка здесь if (array[i * 3 + j] > array[i * 3 + m])
Имя ошибки: subscripted value is neither array nor pointer nor vector
.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int *create_matrix_fill_random(int satir, int sutun);
int *bubblesort(int array);
int main() {
srand(time(NULL));
printf("Matrix automatically created 3x3");
int a = 3;
int *matrix = create_matrix_fill_random(a, a);
matrix = bubblesort(matrix);
return 0;
}
int *create_matrix_fill_random(int row, int col) {
int *ptr;
ptr = malloc(row * col * sizeof(int));
int i, j;
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
ptr[i * col + j] = rand() % 40000 + 5;
}
}
return ptr;
}
int *bubblesort(int array) {
int m, a = 3;
int temp;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
for (m = 0; m < 3 - 1; m++) {
if (array[i * 3 + j] > array[i * 3 + m]) {
//Mistake ^ ^ ^ ^ ^ ^ ^ ^
temp = array[i * 3 + j];
array[i * 3 + j] = *array[i * 3 + m];
array[i * 3 + j] = temp;
}
}
}
return array;
}
}