Я хотел бы создать массив чисел от 80 до 86, разделенных с шагом 0,5. Я знаю, что могу создать массив, чтобы представить это, написав

float Vector1[] = {80, 80.5, 81, 81.5, 82, 82.5, 83, 83.5, 84, 84.5, 85, 85.5, 86};

В Matlab, который я обычно использую, это просто

Vector1 = 80:0.5:86;

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

0
zaen 24 Сен 2018 в 21:31

2 ответа

Лучший ответ

Нет, это невозможно без циклов. Все языки, которые предлагают функции, которые вы запрашивали, используют цикл для достижения этого. В C вам просто нужно написать свой собственный.

0
kerastf 24 Сен 2018 в 18:46

Вы можете написать отдельный фрагмент кода, который генерирует статическое объявление:

Makevector.c :

#include <stdio.h>

int main()
{
    float i;
    int first = 1;
    printf("float Vector1[] = { ");
    for (i = 80; i <= 86; i += 0.5) {
        if (first) {
            first = 0;
        } else {
            printf(", ");
        }
        printf("%.1f", i);
    }
    printf(" };\n");
    return 0;
}

Затем запустите это:

gcc -o makevector makevector.c
./makevector > vector.c

Хотя технически у вас все еще есть цикл, он делается заранее, чтобы создать код, так что вам не нужен цикл в вашем реальном коде.

2
dbush 24 Сен 2018 в 18:37