Пользователь вводит с клавиатуры количество строк и количество столбцов. Программа создает динамический двумерный массив и заполняет его случайными значениями в диапазоне от 1 до 999.
Необходимо подсчитать сумму всех этих значений и полученное число по цифрам записать в одномерный динамический массив. Одна цифра – один элемент.
на С

Ответы

Ответ дал: pacixor
0
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <malloc.h>

int main() {    
    int **a;
      int i, j, n, m;
      setlocale(LC_ALL, "Rus");

      printf("Введите количество строк: ");
      scanf("%d", &n);
      printf("Введите количество столбцов: ");
      scanf("%d", &m);
      
      //Выделение памяти
      a = (int**)malloc(n * sizeof(int*));
      
      long int sum;
      
      /* Заполнение массива случайными числами */
      srand(time(NULL));
      for (i = 0; i < n; i++)
      {
          a[i] = (int*)malloc(m * sizeof(int));
        for (j = 0; j < m; j++)
        {
              a[i][j] = rand() % 999 + 1;
              sum += a[i][j];
          }
    }
    
    /* Вывод массива */
    for (i = 0; i < n; i++) {
        for (j = 0; j < m; j++)
            printf("%5d ", a[i][j]);
        printf("n");
      }
      printf("Сумма всех элементов = %dn", sum);
      
      /* Подсчет количества цифр в сумме всех элементов */
      int k = 0, buf = 0;
      n = sum;
      while (n != 0)
    {
        n /= 10;
        k++;
    }
    
    int *b;
    //Выделение памяти
    b = (int*)malloc(k * sizeof(int));
    
    /* Заполнение массива цифрами */
    i = 0;
    n = sum;
    while (n != 0)
    {
        b[i] = n % 10;
        n /= 10;   
        i++;
    }
    
    /* Переворачиваем массив с цифрами */
    for(i = 0; i < k / 2; i++)
    {
        int tmp = b[i];
        b[i] = b[k - i - 1];
        b[k - i - 1] = tmp;
    }
    
    /* Выводим массив */
    printf("Массив из цифр: ");
    for (i = 0; i < k; i++) printf("%d ", b[i]);
    
    //getch();
    return 0;
}
Вас заинтересует