Перевести с С# на С - 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;
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы для работы со стандартными функциями, генерацией случайных чисел и временем.
  2. Определяем размер массива N = 24.
  3. Инициализируем генератор случайных чисел с помощью функции srand(time(NULL)).
  4. Создаем массив arr[N] для хранения случайных чисел и массив neg[N] для хранения индексов отрицательных чисел.
  5. Инициализируем переменную neg_count = 0 для подсчета количества отрицательных чисел.
  6. Запускаем цикл for от 0 до N-1 для заполнения массива arr[N] случайными числами в диапазоне от -10 до 25 (включительно) с шагом 36.
  7. Если полученное случайное число отрицательное, то добавляем его индекс в массив neg[N] и увеличиваем значение переменной neg_count на 1.
  8. Выводим на экран значения массива arr[N] с помощью функции printf(%d, arr[i]);.
  9. Вставляем пустую строку с помощью функции putchar('\n');.
  10. Запускаем цикл for для перестановки отрицательных чисел в начало массива arr[N].
  11. Для этого, мы используем два вложенных цикла for, где внешний цикл идет от 0 до neg_count-1, а внутренний от neg_count-1 до 0.
  12. Внутренний цикл меняет значения элементов массива arr[N] с помощью функций arr[neg[i]] = arr[neg[j]]; и arr[neg[j]] = t;.
  13. Выводим на экран значения массива arr[N] с помощью функции printf(%d, arr[i]);.
  14. Вставляем пустую строку с помощью функции putchar('\n');.
  15. Завершаем программу с помощью функции return 0;.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.5 из 5