Не перестраховались ли?

 
Вот такая штука получается

задаю переменную

extern double x; // количество баров
// почему double - потому что предполагаю что это число может быть не четным, а мне его дальше там делить на два придется, поэтому оно должно быть с плавающей точкой

int summa_x; // Это арифметическая прогрессия

summa_x = (1 + x)* x/2; // обычная арифметическая прогрессия

double y; // цена бара
y = Close[x]; // И здесь редактор говорит ошибка - ошибка в том что x - это не целое число.

Вопрос: Стоило ли так перестраховываться в том что номер бара может быть только целым числом?

Я же из-за этого получил сложность в другом, приходится изворачиваться, чтобы в этой формуле не возникло ошибки summa_x = (1 + x)* x/2;
 
просто вместо y = Close[x]; напиши int z = x; y = Close[z];
должно помочь ;)
 
Не боись. Произведение (1+х)*х всегда четно. Ставь смело int.
 
правильно :)
 
Не боись. Произведение (1+х)*х всегда четно. Ставь смело int.

Roger абсолютно прав. Это простая математика. Раскроем скобки, получим x*x + x. Если х четное число, то получаем сумму двух четных чисел, которая тоже есть четное число. Если х нечетное число, большее единицы, то его можно представить в виде (q+1), где q - четное число, большее или равное 2. В этом случае получаем (q+1)*(q+1) + q + 1. Далее получаем q*q + 2*q + 1 + q + 1 или q*q + 3*q + 2, т.е. опять получаем сумму четных чисел, что и требовалось доказать.
 
Может кто подскажет пример. Как просуммировать цены, например, close на барах от 1 до i
 
z=i;
sum=0;
while(z>1)
{
sum=sum+Close[z];
z--;
}
 
спасибо :)
 
Roger Может еще подскажешь? :)

Как корень квадратный извлечь из какого то выражения? :(
 
double MathSqrt( double x)
Смотри хелп к Метэдитору - математические функции.
 
Смотрел, поэтому и спросил. то ли double MathSqrt( double x)
то ли double Sqrt( double x)