Получить вектор B, очередная компонента которого равна среднему арифметическому очередной тройки компонент вектора А - C (СИ)

Узнай цену своей работы

Формулировка задачи:

В чем косяк? почему в конце выводит непонятные цифры, по идее, код должен находить вектор Б от вектора А. Так понимаю должно быть так вектор А: 1,2,3,4,5,6, тогда векор Б: (1+2+3)/3 и (4+5+6)/3. Если же вектор А: 1,2,3,4,5,6,7,8, то вектор Б: (1+2+3+4)/4 и (4+5+6+7+8)/4, ТАК ЖЕ? Вот само задание: Из заданного вектора A(3N) получите вектор B(N), очередная компонента которого равна среднему арифметическому очередной тройки компонент вектора А Я делаю так: Задаю два массива, А,Б, заполняю массив А рандомными значениями. Затем делаю проверку, если размерность массива четное, то задаю новую переменную help, присваиваю её к размерности массива и делю на два. (Как бы разделил на две части массив) Теперь пробегаюь циклом по массиву и складываю его элементы. (Бегу циклом по первой части, массив был 8, разделил на 2, бегу до 4) Сложенные элементы делю на переменную help Аналогично со второй частью массива, но тут уже бегу циклом в обратном порядке. Потом также складываю эти элементы и делю на help. Затем. если размерность массива нечетное, то Проблема в том, что при складывании первых элементов массива, складывает какую-то дичь, также и при сложении в обратном порядке. Выводит непонннятные значения, без понятия даже к чему они .. Привожу свой код дрьма:
#include 
 
int main()
{
    int n = 6;
    int a[n];
    int b[n];
    int i,j;
    rand();
    printf("PolyCHILI MASSIV A:\n");
    for (i=0; i\n", a[i]);
    }
   // n = n/2;
    if(n % 2 == 0)           // проверка на четность
    {
    int sum;
    int sum2;
    int help1;
    help1 = n;
    help1 = help1/2;
    printf("Chislo n: ");
    printf("%d\n", help1);
    i =1;
    j =1;
  //  printf("PolyCHILI Vektor B:\n");
    while(i\n");
    printf("%d\n", sum);
    printf("%d\n", sum2);
    }
        else
        {
           printf("...");
        }

    return 0;
}

Решение задачи: «Получить вектор B, очередная компонента которого равна среднему арифметическому очередной тройки компонент вектора А»

textual
Листинг программы
for (size_t i = 0, k = 0; i < N; ++i, k += 3)
    b[i] = (a[k] + a[k+1] + a[k+2]) / 3.0;

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

В данном коде выполняется следующая последовательность действий:

  1. Вектор a перебирается по компонентам:
    • i увеличивается на 1 при каждой итерации цикла.
    • k увеличивается на 3 при каждой итерации цикла.
    • Компоненты вектора a получаются по индексам k, k+1 и k+2.
  2. На каждой итерации цикла находится средняя арифметическая значений компонент вектора a:
    • Среднее арифметическое вычисляется путем сложения трех компонент и деления их суммы на 3.0.
  3. Полученное среднее арифметическое записывается в компонент вектора b:
    • Индекс i используется для определения номера компонента вектора b, в который необходимо записать значение. Таким образом, после выполнения данного кода, в векторе b будут содержаться компоненты, каждая из которых является средним арифметическим соответствующей тройки компонент вектора a.

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


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

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

5   голосов , оценка 4.2 из 5
Похожие ответы