Найти произведение членов ряда - C (СИ) (74607)

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

Даны натуральные числа А1;А2;А3;.... . Признак конца последовательности 0. Определить: (А2-А1)*(А3-А2)*...*(Аn-A(n-1)) Помогите пожалйста Из C++ в C
#include <iostream>
#include <vector>
#include <iterator>
using namespace std;
int main ( )
{
  std :: vector < int > vec ( ( std :: istream_iterator < int > ( std :: cin ) ) , std :: istream_iterator <int> ( ) ) ;
  int x;
  do
  {
      cin>>x;
      vec.push_back(x);
  }while (x);
  int result = 1 ;
  if ( vec.size ( ) > 1 ) 
  {
     for ( int i = 1 ; vec[i]; ++i ) 
        result *= vec[i]-vec[i-1] ;
     
  }
  std :: cout << "\n" << result << std :: endl ;
  system("pause");
}


textual

Код к задаче: «Найти произведение членов ряда - C (СИ) (74607)»

#include <stdio.h>
#include <stdlib.h>
 
//-----------------------------------------------------------------------------
unsigned GetArray(int* array[])
{
    static unsigned i = 0;
    unsigned size;
    int val;
 
    if ((scanf("%d", &val) == 1) && (val != 0))
    {
        ++i;
        size = GetArray(array);
        (*array)[--i] = val;
    }
    else
    {
        size = i;
        *array = malloc(sizeof(int) * size);
    }
 
    return size;
}
//-----------------------------------------------------------------------------
int Func(int array[], unsigned size)
{
    int result = 1;
    unsigned i;
 
    size = size / 2 * 2; // Отсееваем остаток в случае нечётности
 
    for (i = 0; i < size; i += 2)
    {
        result *= array[i + 1] - array[i];
    }
 
    return size ? result : 0;
}
//-----------------------------------------------------------------------------
 
int main()
{
    int* array;
 
    unsigned size = GetArray(&array);
 
    printf("result = %d\n", Func(array, size));
 
    free(array);
 
    return 0;
}
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.


СДЕЛАЙТЕ РЕПОСТ

9   голосов, оценка 4.333 из 5

Источник
Похожие ответы