Проход по двумерному массиву в функции
У меня возникла ошибка, у меня есть поле (двумерный массив), и в нем есть цифры, у которых нужно поменять знак на противоположный, например есть 1, -2, 2 на выходе должно получиться -1, 2, -2.
В принципе ничего сложного тут нету, но у меня возникла ошибка segmentation fault. Я не знаю точное количество столбцов (вместо семи может быть другое значение), и соответственно, не знаю как закончить цикл.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
void swp(const int size, int array[][size]);
int main() {
int array[7][3] = { {1,-2,2}, {-3,-13,-10},{1,3,-1},{-45,32,0},{13,0,0}, {-3,13,-11},{1,0,-1} };
swp(3,array);
for (int y = 0; y < 7; y++) {
for (int x = 0; x < 3; x++) {
printf("%d ", array[y][x]);
}
printf("\n");
}
return 0;
}
void swp(const int size, int array[][size]) {
int pt = size;
int pc = 0;
for (int y = 0; y < 100; y++) {
for (int x = 0; x < pt; x++) {
if (array[y][x] == '\0') {
pc = pc + 1;
}
array[y][x] = array[y][x] * -1;
}
if (pc == size) {
break;
} else {
pc = 0;
}
}
}
Ответы (1 шт):
Автор решения: Sergey
→ Ссылка
Надо просто указать размеры массива в самой функции:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
void swp(const int size1, const int size2, int array[size1][size2]);
int main() {
int array[7][3] = { {1,-2,2}, {-3,-13,-10},{1,3,-1},{-45,32,0},{13,0,0}, {-3,13,-11},{1,0,-1} };
swp(7, 3,array);
for (int y = 0; y < 7; y++) {
for (int x = 0; x < 3; x++) {
printf("%d ", array[y][x]);
}
printf("\n");
}
return 0;
}
void swp(const int size1, const int size2, int array[size1][size2]) {
for (int y = 0; y < size1; y++) {
for (int x = 0; x < size2; x++) {
array[y][x] = array[y][x] * -1;
}
}
}