Составить из исходного массива новый по правилу - 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, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д