profile
Опубликовано 6 лет назад по предмету Информатика от innessabest

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

  1. Ответ
    Ответ дан pacixor
    #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;
    }
Самые новые вопросы