Вопрос задан 29.07.2023 в 06:18. Предмет Информатика. Спрашивает Соловьёва Лена.

Пользователь вводит с клавиатуры количество строк и количество столбцов. Программа создает

динамический двумерный массив и заполняет его случайными значениями в диапазоне от 1 до 999. Необходимо подсчитать сумму всех этих значений и полученное число по цифрам записать в одномерный динамический массив. Одна цифра – один элемент. на С
0 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("Сумма всех элементов = %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
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для решения этой задачи на языке программирования C, следуйте следующим шагам:

  1. Включите необходимые библиотеки.
  2. Получите от пользователя количество строк и столбцов для двумерного массива.
  3. Создайте динамический двумерный массив и заполните его случайными значениями.
  4. Посчитайте сумму всех элементов в двумерном массиве.
  5. Запишите полученное число по цифрам в одномерный динамический массив.

Вот полный код программы на языке C, выполняющий указанные действия:

c
#include <stdio.h> #include <stdlib.h> #include <time.h> // Функция для генерации случайных чисел в диапазоне [min, max] int generateRandomNumber(int min, int max) { return rand() % (max - min + 1) + min; } // Функция для вычисления суммы всех элементов в двумерном массиве int calculateSum(int** arr, int rows, int cols) { int sum = 0; for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { sum += arr[i][j]; } } return sum; } // Функция для вычисления количества цифр в числе int countDigits(int number) { int count = 0; while (number != 0) { number /= 10; count++; } return count; } // Функция для разбиения числа на цифры и записи в одномерный массив int* splitNumberToDigits(int number, int numDigits) { int* digits = (int*)malloc(numDigits * sizeof(int)); for (int i = numDigits - 1; i >= 0; i--) { digits[i] = number % 10; number /= 10; } return digits; } int main() { int rows, cols; printf("Введите количество строк: "); scanf("%d", &rows); printf("Введите количество столбцов: "); scanf("%d", &cols); // Создаем динамический двумерный массив int** array = (int**)malloc(rows * sizeof(int*)); for (int i = 0; i < rows; i++) { array[i] = (int*)malloc(cols * sizeof(int)); } // Заполняем массив случайными значениями от 1 до 999 srand(time(NULL)); for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { array[i][j] = generateRandomNumber(1, 999); } } // Вычисляем сумму всех элементов в массиве int sum = calculateSum(array, rows, cols); printf("Сумма всех элементов: %d\n", sum); // Вычисляем количество цифр в числе и записываем их в одномерный массив int numDigits = countDigits(sum); int* digitsArray = splitNumberToDigits(sum, numDigits); // Выводим результат printf("Результат (каждая цифра в отдельной ячейке массива): "); for (int i = 0; i < numDigits; i++) { printf("%d ", digitsArray[i]); } printf("\n"); // Освобождаем память for (int i = 0; i < rows; i++) { free(array[i]); } free(array); free(digitsArray); return 0; }

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

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос