
Вопрос задан 29.07.2023 в 06:18.
Предмет Информатика.
Спрашивает Соловьёва Лена.
Пользователь вводит с клавиатуры количество строк и количество столбцов. Программа создает
динамический двумерный массив и заполняет его случайными значениями в диапазоне от 1 до 999. Необходимо подсчитать сумму всех этих значений и полученное число по цифрам записать в одномерный динамический массив. Одна цифра – один элемент. на С

Ответы на вопрос

Отвечает Патрахов Димас.
#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;
}
#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;
}



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Для решения этой задачи на языке программирования C, следуйте следующим шагам:
- Включите необходимые библиотеки.
- Получите от пользователя количество строк и столбцов для двумерного массива.
- Создайте динамический двумерный массив и заполните его случайными значениями.
- Посчитайте сумму всех элементов в двумерном массиве.
- Запишите полученное число по цифрам в одномерный динамический массив.
Вот полный код программы на языке 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;
}
Код выше позволяет создать динамический двумерный массив, заполнить его случайными значениями, посчитать сумму всех элементов, а затем разбить полученное число на цифры и записать их в одномерный динамический массив.


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