Задача состоит в том, чтобы удалить в матрице столбцы, индекс которых кратен трём, то-есть 3,6,9 и тд. код программы: #include <stdlib.h> #include <stdio.h> #include <time.h> #define N 7 [B]int[/B] main() { [B]int[/B] i = 0, j = 0, k; srand(time([B]NULL[/B])); [B]int[/B] a[N][N]; [B]for[/B] (i; i < N; i++) { [B]for[/B] ([B]int[/B] j = 0; j < N; j++) { [B]if[/B] (j%3==0){k=j;} a[i][j] = rand() % 50; printf("%3d ", a[i][j]); } printf("\n\n"); } [B]int[/B] a1[N-1][N-1]; printf("new:\n"); /*код удаления столбца */ [B]for[/B] ([B]int[/B] i = 0; i < N; i++) [B]for[/B] ([B]int[/B] j = k; j < N; j++) a[i][j] = a[i][j]; #define N1 N - N/3 //новый размер [B]for[/B] (i = 0; i < N; i++) { [B]for[/B] ([B]int[/B] j = 0; j < N1; j++) { printf("%3d ", a[i][j]); } printf("\n\n"); } } проблема состоит в том, что он пропускает выборку столбца и удаляет последние несколько строк[
как-то так? #include <stdlib.h> #include <stdio.h> #include <time.h> #define N 7 int main() { srand(time(NULL)); int a[N][N]; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { a[i][j] = rand() % 50; printf("%3d ", a[i][j]); } printf("\n\n"); } #define N1 N - N/3 //новый размер int a1[N1][N1]; printf("new:\n"); /*код удаления столбца */ for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) if ((i + 1) % 3 != 0 && (j + 1) % 3 != 0) a1[i - i/3][j - j/3] = a[i][j]; for (int i = 0; i < N1; i++) { for (int j = 0; j < N1; j++) { printf("%3d ", a1[i][j]); } printf("\n\n"); } } C #include <stdlib.h> #include <stdio.h> #include <time.h> #define N 7 int main() { srand(time(NULL)); int a[N][N]; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { a[i][j] = rand() % 50; printf("%3d ", a[i][j]); } printf("\n\n"); } #define N1 N - N/3 //новый размер int a1[N1][N1]; printf("new:\n"); /*код удаления столбца */ for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) if ((i + 1) % 3 != 0 && (j + 1) % 3 != 0) a1[i - i/3][j - j/3] = a[i][j]; for (int i = 0; i < N1; i++) { for (int j = 0; j < N1; j++) { printf("%3d ", a1[i][j]); } printf("\n\n"); } }