Составить из исходного массива новый по правилу - C (СИ)
Формулировка задачи:
Дан массив A[N][N] N<=10. Нужно составить из исходного массива новый, где числа будут числами - сумма цифр из исходного массива в десятичной системе счисления. Вывести исходный массив по правому краю экрана, полученный по левому краю.
Примерный алгоритм:
1. объявление массива
2. запрос у пользователя размерности массива
3. вывод массива на экран
4. цикл на замену исходных данных массива A[N][N] на числа, сумму цифр в 10-ой системе счисления.
5. формирование нового массива B из полученных данных.
6. вывод полученных массивов на экран (исходный выровнять по левому краю, полученный по правому краю).
4. приблизительный цикл на замену исходных данных:
Помогите составить
s=0;
while(N[i][j]>0) {
s+=N[i][j]%10;
N[i][j]/=10;
}Решение задачи: «Составить из исходного массива новый по правилу»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int sumOfDigits(int);
int main(void)
{
int **A, **B, N, i, j;
srand(time(NULL));
printf("Enter N: ");
scanf("%d", &N);
A = malloc(sizeof(int *) * N);
B = malloc(sizeof(int *) * N);
for (i=0; i < N; i++)
{
A[i] = malloc(sizeof(int) * N);
B[i] = malloc(sizeof(int) * N);
for (j=0; j < N; j++)
{
A[i][j] = rand() % 100;
printf("%d ", A[i][j]);
B[i][j] = sumOfDigits(A[i][j]);
}
printf("\n");
}
printf("\n");
for (i=0; i < N; i++)
{
for (j=0; j < N; j++)
printf("%d ", A[i][j]);
printf("%30c", ' ');
for (j=0; j < N; j++)
printf("%d ", B[i][j]);
printf("\n");
free(A[i]);
free(B[i]);
}
free(A);
free(B);
return 0;
}
int sumOfDigits(int n)
{
int sum = 0;
while(n)
{
sum += n % 10;
n /= 10;
}
return sum;
}
Объяснение кода листинга программы
- Сохраняем время в переменную
time(NULL)для использования в качестве случайного числа в диапазоне от 0 до 99. - Выводим сообщение с просьбой ввести число N.
- Считываем число N с помощью функции
scanf(). - Выделяем память под массив указателей на int с помощью функции
malloc(). - Выделяем память под двумерный массив с помощью цикла и функции
malloc(). - Заполняем двумерный массив случайными числами от 0 до 99 с помощью функции
rand()и оператора%. - Выводим заполненный массив с помощью цикла и функции
printf(). - Вычисляем сумму цифр каждого числа в массиве с помощью функции
sumOfDigits(). - Выводим сумму цифр каждого числа в массиве с помощью цикла и функции
printf(). - Освобождаем память, выделенную под массив, с помощью функции
free(). - Возвращаем 0, чтобы указать, что программа успешно завершилась.