Как добавить квадратичную последовательность в массиве целых чисел в C - PullRequest
0 голосов
/ 07 октября 2019

Я пытаюсь добавить квадратичную последовательность в массив целых чисел (в C) вместо того, чтобы вводить ее вручную.

#include <stdio.h>

    int main () 
    {    
    int x [100] = {0, 50, 150, 300, 500, 750, 1050, 1400};
                //+0, +50, +100, +150, +200, +250, +300, +350, etc.
    return 0;
    }

Есть ли способ сделать это?

Ответы [ 3 ]

1 голос
/ 07 октября 2019

num_add добавить 50 в каждом цикле.

#include <stdio.h>

int main() {
    int x[100];
    int num_add = 50;
    x[0] = 0;
    for (int i = 1; i < 100; i++) {
        x[i] = x[i - 1] + num_add;
        num_add += 50;
    }
    for (int i = 0; i < 100; i++) {
        printf("%d ", x[i]);
    }
    return 0;
}
0 голосов
/ 12 октября 2019

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

В вашем случае оба D & C одинаковы, 50.

#include <stdio.h>

int main() {
    int x[100];
    int D = 50;
    int C = 50;
    for (int i = 0; i < 100; i++) {
        x[i] = (D*i) + (C*i*(i - 1))/2
    }
    for (int i = 0; i < 100; i++) {
        printf("%d ", x[i]);
    }
    return 0;
}

, если C == D (как в вашем случае), замените одну переменную

x[i] = (D*i) + (C*i*(i - 1))/2
     = (D*i) + (D*i*(i - 1))/2
     = D * i * ( 1 + (i - 1)/2 )
     = D * i * (2 + (i - 1)) / 2
     = D * i * (i + 1) / 2
x[i] = D * i * (i+1) / 2
0 голосов
/ 12 октября 2019

для изменения основной разности измените значение переменной приращения.

#include <stdio.h>

int main() {
    int x[100];
    int increment = 50;
    for (int i = 0; i < 100; i++) {
        x[i] = increment * i * (i+1) / 2
    }
    for (int i = 0; i < 100; i++) {
        printf("%d ", x[i]);
    }
    return 0;
}
...