В
Все
Х
Химия
В
Видео-ответы
А
Алгебра
Г
Геометрия
О
ОБЖ
Д
Другие предметы
У
Українська література
Р
Русский язык
Б
Беларуская мова
У
Українська мова
Э
Экономика
Ф
Физика
М
Математика
Ф
Французский язык
Г
География
И
Информатика
М
МХК
О
Окружающий мир
П
Психология
Н
Немецкий язык
О
Обществознание
П
Право
И
История
М
Музыка
Л
Литература
Қ
Қазақ тiлi
Б
Биология
А
Английский язык
Anastasia987654321
Anastasia987654321
13.11.2022 05:39 •  Информатика

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

Ответ:
svetakotelniko
svetakotelniko
08.10.2020 21:17
#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("Сумма всех элементов = %d\n", 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;
}
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?