Форум программистов, компьютерный форум CyberForum.ru

Функция - C++

Восстановить пароль Регистрация
 
NakedSnake
Сообщений: n/a
23.05.2011, 11:07     Функция #1
Написать функцию. Задан массив вещественных чисел х1, х2, ..., хn. Вычислить y=x1+x1x2+x1x2x3+...+x1x2...xm, где m - либо номер первого отрицательного элемента массива х, либо общее количество элементов n в массиве x.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2011, 11:07     Функция
Посмотрите здесь:

C++ Функция
C++ Функция...
функция C++
Функция C++
C++ Функция
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
23.05.2011, 11:33     Функция #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <numeric>
#include <iostream>
#include <algorithm>
#include <functional>
 
 
int main()
{
   const size_t n = 5;
   float x[n] = {3, 2, 4, -4, 5};
   std::cout<<std::accumulate(x, x+n, 0)<<std::endl;
   float *neg = std::find_if(x, x+n, std::bind2nd(std::less<float>(), 0));
   if(neg!=x+n)
      neg++;
   std::cout<<std::accumulate(x, neg, 0)<<std::endl;
}

Неправильно сделал, невнимательно прочитал задание.
NakedSnake
Сообщений: n/a
23.05.2011, 11:44     Функция #3
gooseim
Так это ты правильно написал или нет? И можно этот код как то упростить, а то я тут не которых вещей еще в глаза не видел, то есть не учил 8( привести его к виду С, если вдруг можешь то спасибо.
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
23.05.2011, 12:10     Функция #4
NakedSnake, неправильно я написал, я не увидел знаки умножения

Добавлено через 24 минуты
Так вроде правильно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <numeric>
#include <iostream>
#include <algorithm>
#include <functional>
 
 
int main()
{
   const size_t n = 4;
   float x[n] = {1, -1, 2, 3};
   float res = 0;
   for(float *f=x+1; f<=x+n; ++f)
        res += std::accumulate(x, f, 1, std::multiplies<float>());
   std::cout<<res<<std::endl;
   
   float *neg = std::find_if(x, x+n, std::bind2nd(std::less<float>(), 0));
   
   if(neg!=x+n)
      neg++;
      
   res = 0;
      
   for(float *f=x+1; f<=neg; ++f)
        res += std::accumulate(x, f, 1, std::multiplies<float>());
   
   std::cout<<res<<std::endl;;
}
Yandex
Объявления
23.05.2011, 12:10     Функция
Ответ Создать тему
Опции темы

Текущее время: 11:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru