Перевести с С# на С - C (СИ)
Формулировка задачи:
using System; using System.Linq; class Program { static void Main() { int[] arr = Enumerable.Repeat(new Random(), 24).Select(r => r.Next(-10, 26)).ToArray(); Console.WriteLine(String.Join(", ", arr)); int[] negativeIndexes = Enumerable.Range(0, arr.Length).Where(i => arr[i] < 0).ToArray(); for (int i = 0, j = negativeIndexes.Length - 1; i < j; i++, j--) { int t = arr[negativeIndexes[i]]; arr[negativeIndexes[i]] = arr[negativeIndexes[j]]; arr[negativeIndexes[j]] = t; } Console.WriteLine(String.Join(", ", arr)); } }
Решение задачи: «Перевести с С# на С»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 24 int main(void) { srand(time(NULL)); int arr[N]; int neg[N]; int neg_count = 0; for (int i = 0; i < N; i++) { arr[i] = rand() % 36 - 10; if (arr[i] < 0) { neg[neg_count++] = i; } printf("%d ", arr[i]); } putchar('\n'); for (int i = 0, j = neg_count - 1; i < j; i++, j--) { int t = arr[neg[i]]; arr[neg[i]] = arr[neg[j]]; arr[neg[j]] = t; } for (int i = 0; i < N; i++) { printf("%d ", arr[i]); } putchar('\n'); return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы со стандартными функциями, генерацией случайных чисел и временем.
- Определяем размер массива N = 24.
- Инициализируем генератор случайных чисел с помощью функции srand(time(NULL)).
- Создаем массив arr[N] для хранения случайных чисел и массив neg[N] для хранения индексов отрицательных чисел.
- Инициализируем переменную neg_count = 0 для подсчета количества отрицательных чисел.
- Запускаем цикл for от 0 до N-1 для заполнения массива arr[N] случайными числами в диапазоне от -10 до 25 (включительно) с шагом 36.
- Если полученное случайное число отрицательное, то добавляем его индекс в массив neg[N] и увеличиваем значение переменной neg_count на 1.
- Выводим на экран значения массива arr[N] с помощью функции printf(
%d
, arr[i]);. - Вставляем пустую строку с помощью функции putchar('\n');.
- Запускаем цикл for для перестановки отрицательных чисел в начало массива arr[N].
- Для этого, мы используем два вложенных цикла for, где внешний цикл идет от 0 до neg_count-1, а внутренний от neg_count-1 до 0.
- Внутренний цикл меняет значения элементов массива arr[N] с помощью функций arr[neg[i]] = arr[neg[j]]; и arr[neg[j]] = t;.
- Выводим на экран значения массива arr[N] с помощью функции printf(
%d
, arr[i]);. - Вставляем пустую строку с помощью функции putchar('\n');.
- Завершаем программу с помощью функции return 0;.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д