Составить из исходного массива новый по правилу - 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;
}

Объяснение кода листинга программы

  1. Сохраняем время в переменную time(NULL) для использования в качестве случайного числа в диапазоне от 0 до 99.
  2. Выводим сообщение с просьбой ввести число N.
  3. Считываем число N с помощью функции scanf().
  4. Выделяем память под массив указателей на int с помощью функции malloc().
  5. Выделяем память под двумерный массив с помощью цикла и функции malloc().
  6. Заполняем двумерный массив случайными числами от 0 до 99 с помощью функции rand() и оператора %.
  7. Выводим заполненный массив с помощью цикла и функции printf().
  8. Вычисляем сумму цифр каждого числа в массиве с помощью функции sumOfDigits().
  9. Выводим сумму цифр каждого числа в массиве с помощью цикла и функции printf().
  10. Освобождаем память, выделенную под массив, с помощью функции free().
  11. Возвращаем 0, чтобы указать, что программа успешно завершилась.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.5 из 5
Похожие ответы