Для решения этой задачи в языке Си нужно выполнить следующие шаги:
1. Вначале объявим константы N и M с помощью директивы define:
“`c
#define N 3
#define M 4
“`
Это позволит нам объявить массив размером N х M.
2. Далее объявим двумерный массив из N х M элементов:
“`c
int array[N][M];
“`
3. Теперь заполним массив случайными числами от 10 до 100. Для этого воспользуемся функцией `rand()` из стандартной библиотеки C:
“`c
srand(time(0)); // Инициализация генератора случайных чисел
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
array[i][j] = rand() % 91 + 10; // Генерация случайного числа от 10 до 100
}
}
```
Обратите внимание, что мы используем `rand() % 91 + 10`, чтобы получить числа в диапазоне от 10 до 100.
4. Далее будем вычислять сумму элементов каждой строки и определять номер строки, в которой эта сумма максимальна. Для этого создадим переменные `maxSum` и `maxSumRow`:
```c
int maxSum = 0;
int maxSumRow = 0;
```
И затем с помощью двух вложенных циклов пройдем по всем элементам массива и вычислим сумму для каждой строки:
```c
for (int i = 0; i < N; i++) {
int rowSum = 0; // Переменная для хранения суммы элементов строки
for (int j = 0; j < M; j++) {
rowSum += array[i][j];
}
if (rowSum > maxSum) {
maxSum = rowSum;
maxSumRow = i;
}
}
“`
5. Наконец, выведем полученные суммы и номер строки в файл с заданным пользователем именем или в файл с именем “results.txt”, если имя не указано:
“`c
char filename[256];
printf(“Введите имя файла (или нажмите Enter для использования имени по умолчанию – results.txt): “);
fgets(filename, sizeof(filename), stdin);
strtok(filename, “n”); // Убираем символ новой строки
FILE *file;
file = fopen(filename[0] != ‘n’ ? filename : “results.txt”, “w”);
if (file != NULL) {
fprintf(file, “Суммы элементов каждой строки:n”);
for (int i = 0; i < N; i++) {
int rowSum = 0;
for (int j = 0; j < M; j++) {
rowSum += array[i][j];
}
fprintf(file, "Строка %d: %dn", i + 1, rowSum);
}
fprintf(file, "nНомер строки с максимальной суммой: %dn", maxSumRow + 1);
fclose(file);
printf("Результаты записаны в файл %sn", filename[0] != 'n' ? filename : "results.txt");
} else {
printf("Не удалось открыть файл для записи.n");
}
```
Здесь мы используем функцию `fgets()` для считывания имени файла с консоли, а затем проверяем, было ли введено имя или пользователь просто нажал Enter. В зависимости от этого выбирается имя файла для записи результатов.
Теперь программа полностью сформирована и решает поставленную задачу: объявляет двумерный массив, заполняет его случайными числами, находит максимальную сумму элементов в строках и выводит результаты в файл.