
C/C++
Помогите с задачкой на Си

★ Любопытно, а в каком направлении производить замену: от начала матрицы к её концу или наоборот?
Ведь в первом случае уже вычисленные суммы участвуют в формировании последующих сумм. Последняя сумма накапливается как лавина.
Ведь в первом случае уже вычисленные суммы участвуют в формировании последующих сумм. Последняя сумма накапливается как лавина.
Спасибо, задача интересная, решение эффективное на скрине.


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand(time(NULL)); /* будем генерировать значения матрицы */
int N,M;
do
{
printf("Введите количество строк матрицы: ");
scanf("%d", &N);
} while (N < 1);
do
{
printf("Введите количество столбцов матрицы: ");
scanf("%d", &M);
} while (M < 1);
int ** A;
A = (int **) malloc(N * sizeof(int*));
for(int x = 0; x < N; x++)
A[x] = (int *) malloc(M * sizeof(int));
/* начинаем генерировать значения */
for(int x = 0; x < N; x++)
for(int y = 0; y < M; y++)
A[x][y] = rand() % 50 + 1;
/* выведем значения на экран */
for(int x = 0; x < N; x++)
{
for(int y = 0; y < M; y++)
printf("%d\t", A[x][y]);
putchar('\n');
}
putchar('\n');
int sum;
/* начинаем менять значения */
for(int x = N - 1; x >= 0; x--)
for(int y = M - 1; y >= 0; y--)
{
sum = 0;
for(int p = x; p >= 0; p--)
for(int q = y; q >= 0; q--)
sum += A[p][q];
A[x][y] = sum;
}
/* выведем значения на экран */
for(int x = 0; x < N; x++)
{
for(int y = 0; y < M; y++)
printf("%d\t", A[x][y]);
putchar('\n');
}
putchar('\n');
if(A != NULL)
{
for(int x = 0; x < N; x++)
{
if(A[x] != NULL)
{
free(A[x]);
A[x] = (int*) NULL;
}
else
{
printf("Ошибка при удалении элементов матрицы.");
exit(1);
}
}
free(A);
A = (int**) NULL;
}
return 0;
}
#include <stdlib.h>
#include <time.h>
int main()
{
srand(time(NULL)); /* будем генерировать значения матрицы */
int N,M;
do
{
printf("Введите количество строк матрицы: ");
scanf("%d", &N);
} while (N < 1);
do
{
printf("Введите количество столбцов матрицы: ");
scanf("%d", &M);
} while (M < 1);
int ** A;
A = (int **) malloc(N * sizeof(int*));
for(int x = 0; x < N; x++)
A[x] = (int *) malloc(M * sizeof(int));
/* начинаем генерировать значения */
for(int x = 0; x < N; x++)
for(int y = 0; y < M; y++)
A[x][y] = rand() % 50 + 1;
/* выведем значения на экран */
for(int x = 0; x < N; x++)
{
for(int y = 0; y < M; y++)
printf("%d\t", A[x][y]);
putchar('\n');
}
putchar('\n');
int sum;
/* начинаем менять значения */
for(int x = N - 1; x >= 0; x--)
for(int y = M - 1; y >= 0; y--)
{
sum = 0;
for(int p = x; p >= 0; p--)
for(int q = y; q >= 0; q--)
sum += A[p][q];
A[x][y] = sum;
}
/* выведем значения на экран */
for(int x = 0; x < N; x++)
{
for(int y = 0; y < M; y++)
printf("%d\t", A[x][y]);
putchar('\n');
}
putchar('\n');
if(A != NULL)
{
for(int x = 0; x < N; x++)
{
if(A[x] != NULL)
{
free(A[x]);
A[x] = (int*) NULL;
}
else
{
printf("Ошибка при удалении элементов матрицы.");
exit(1);
}
}
free(A);
A = (int**) NULL;
}
return 0;
}
Похожие вопросы
- Задачка по СИ на вставку элемента в динамический массив.
- Помогите написать программу на СИ
- Помогите с программированием на Си
- Помогите решить задачку пжпж условие на фото. Код необязателен, главное идею подскажите пжпж
- Помогите решить задачку по программированию
- Помогите решить задачки C++
- Помогите решить задачку c++.
- Помогите с задачкой по C++
- Помогите с задачкой на С++
- Помогите решить задачку по теме работа с файлами C++