С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
e73t4ph
0 / 0 / 0
Регистрация: 07.05.2012
Сообщений: 34
#1

последовательность (1+R)/(1+S) под DevC++ - C++

22.05.2012, 21:54. Просмотров 1248. Ответов 30
Метки нет (Все метки)

Даны n, последовательность n x , x ,...x 1 2 . Получить (1+R)/(1+S), где R – сумма тех членов
последовательности, которые не превосходят 1, а S – сумма членов, больших 1. Использовать динамические
массивы.
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
#include <iostream>
#include <algorithm>
#include <iterator>
 
int main()
{
    const int n = 10;
    int arr[n] = {-5, 2, 5, -1, 4, 2, 4, 0, -1, 10}, Rn, Sn, *R, *S;
    std::copy(arr, arr + n, std::ostream_iterator<int>(std::cout, " ")); 
    Rn = std::count_if(arr, arr + n, [](const int value) {return value <=1; } );
    Sn = n - Rn;
    R = new int[Rn]; 
    S = new int[Sn];
    Rn = Sn = 0; 
    std::for_each(arr, arr + n, [R, &Rn, S, &Sn](const int value) 
        {if (value <=1) R[Rn++] = value; else S[Sn++] = value; } );
    std::cout<< std::endl;
    std::copy(R, R + Rn, std::ostream_iterator<int>(std::cout, " "));  
    std::cout<< std::endl;
    std::copy(S, S + Sn, std::ostream_iterator<int>(std::cout, " "));  
    std::cout<< std::endl<< "(1 + R)/(1 + S) = "
             << (double) (1 + std::accumulate(R, R + Rn, 0) ) / (1 + std::accumulate(S, S + Sn, 0) );
    delete []R;
    delete []S; 
    return 0;
}
------------------------------------------

не компилирует
ошибка в строчке
C++
1
std::copy(arr, arr + n, std::ostream_iterator<int>(std::cout, " "));
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2012, 21:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос последовательность (1+R)/(1+S) под DevC++ (C++):

функция проверки правильности написания адреса почты (под DevC++ - C++
Написать функцию проверки правильности написания адреса почты. Функция возвращает указатель на переданную в неё строку с адресом почты,...

DevC++ - C++
здрасти всем, народ у меня один и тот же код на разных компиляторах делает разные вещи, это нормально(DevC++ vs VS 2008)? да и как в...

BGL на DEVC++ - C++
Здравствуйте. Я не знаю как подлюлючить BGL в DEVC++. Если кто знает напишите пож.

А компилятор DevC++ поддерживает С++11? - C++
А компилятор DevC++ поддерживает С++11? #include&lt;iostream&gt; using namespace std; int main() { double prices {4.99, 10.99,...

очистка экрана на DevC++ - C++
Почему пишет ошибку оператора очистки экрана clrscr () на DevC++ ?

Запись формулы в DevC++ - C++
1. http://s42.***********/i096/1210/72/70e54d54c960.jpg как записать эту формулу в DevC++? 2. #include &lt;stdio.h&gt; #include...

30
e73t4ph
0 / 0 / 0
Регистрация: 07.05.2012
Сообщений: 34
23.05.2012, 16:07  [ТС] #16
кстати если компилировать через Visual Studio то ошибка в следующей строчке
<< (double) (1 + std::accumulate(R, R + Rn, 0) ) / (1 + astd::ccumulate(S, S + Sn, 0) );

а именно в слове accumulate

Добавлено через 13 часов 51 минуту
заменил строчку
Rn = std::count_if(arr, arr + n, [](const int value) {return value <=1; } );
на

struct predicate : std::unary_function<bool, int> {
bool operator ()(int value) const {
return value <= 1;
}
};

эта заработала теперь ошибка в следующей

std::for_each(arr, arr + n, [R, &Rn, S, &Sn](const int value)
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
23.05.2012, 18:53 #17
Цитата Сообщение от e73t4ph Посмотреть сообщение
эта заработала теперь ошибка в следующей
C++
1
std::for_each(arr, arr + n, [R, &Rn, S, &Sn](const int value)
ну дык аналогично надо заменить лямбду:
C++
1
2
[R, &Rn, S, &Sn](const int value)
{if (value <=1) R[Rn++] = value; else S[Sn++] = value; }
1
e73t4ph
0 / 0 / 0
Регистрация: 07.05.2012
Сообщений: 34
23.05.2012, 19:31  [ТС] #18
Цитата Сообщение от gray_fox Посмотреть сообщение
ну дык аналогично надо заменить лямбду:
C++
1
2
[R, &Rn, S, &Sn](const int value)
{if (value <=1) R[Rn++] = value; else S[Sn++] = value; }
это не принимает
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
23.05.2012, 19:37 #19
Цитата Сообщение от e73t4ph Посмотреть сообщение
это не принимает
Надо заменить вот это:
C++
1
2
[R, &Rn, S, &Sn](const int value)
{if (value <=1) R[Rn++] = value; else S[Sn++] = value; }
таким же образом, как поменяли лямбду здесь:
C++
1
Rn = std::count_if(arr, arr + n, [](const int value) {return value <=1; } );
Если вдруг обновили компилятор, попробуйте скомпилировать с опцией -std=c++11 или -std=c++0x
0
e73t4ph
0 / 0 / 0
Регистрация: 07.05.2012
Сообщений: 34
23.05.2012, 19:58  [ТС] #20
обновлял. не помогло.

ну так вот
std::for_each(arr, arr + n, [R, &Rn, S, &Sn](const int value)

заменить на эту

C++
1
2
3
4
5
struct predicate : std::_______<bool,int>
{boot operator(R, &Rn, S, &Sn) int value;
{return value <=1;
}
};
так ли? и какой оператор подставить там где пробел?
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
23.05.2012, 20:18 #21
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
struct predicate : std::unary_function<void, int> {
 
   predicate(int * R, int & Rn, int * S, int & Sn) : R(R), Rn(Rn), S(S), Sn(Sn) {}
   
   void operator ()(int value) const {
      if (value <= 1) {
         R[Rn++] = value;
      } else {
         S[Sn++] = value;
      }
   }
 
private:
   int * R;
   int & Rn;
   int * S;
   int & Sn;
};
C++
1
std::for_each(arr, arr + n, predicate(R, Rn, S, Sn));
Добавлено через 44 секунды
Было бы проще просто цикл написать, кстати.
1
e73t4ph
0 / 0 / 0
Регистрация: 07.05.2012
Сообщений: 34
23.05.2012, 20:24  [ТС] #22
блин опять не то.
выдает ошибку:
redefinition of `struct main():redicate'
previous definition of `struct main():redicate'
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
23.05.2012, 20:26 #23
Вроде ясно всё написано, переопределение predicate. Назовите по другому.
1
e73t4ph
0 / 0 / 0
Регистрация: 07.05.2012
Сообщений: 34
23.05.2012, 20:28  [ТС] #24
вот этот DevC++
http://ifolder.ru/30669895

Может ты в нем разберешься и заставишь его компилироваться?
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
23.05.2012, 20:37 #25
Весь код в студию.
1
e73t4ph
0 / 0 / 0
Регистрация: 07.05.2012
Сообщений: 34
23.05.2012, 20:40  [ТС] #26
изначальный код

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
#include <iostream>
#include <algorithm>
#include <iterator>
 
int main()
{
const int n = 10;
int arr[n] = {-5, 2, 5, -1, 4, 2, 4, 0, -1, 10}, Rn, Sn, *R, *S;
std::copy(arr, arr + n, std::ostream_iterator<int>(std::cout, " ")); 
Rn = std::count_if(arr, arr + n, [](const int value) {return value <=1; } );
Sn = n - Rn;
R = new int[Rn]; 
S = new int[Sn];
Rn = Sn = 0; 
std::for_each(arr, arr + n, [R, &Rn, S, &Sn](const int value) 
{if (value <=1) R[Rn++] = value; else S[Sn++] = value; } );
std::cout<< std::endl;
std::copy(R, R + Rn, std::ostream_iterator<int>(std::cout, " ")); 
std::cout<< std::endl;
std::copy(S, S + Sn, std::ostream_iterator<int>(std::cout, " ")); 
std::cout<< std::endl<< "(1 + R)/(1 + S) = "
<< (double) (1 + std::accumulate(R, R + Rn, 0) ) / (1 + std::accumulate(S, S + Sn, 0) );
delete []R;
delete []S; 
return 0;
}
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
23.05.2012, 20:46 #27
Я имел ввиду последний вариант. Ну да ладно. Так?
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
#include <algorithm>
#include <numeric>
#include <iterator>
 
struct predicate : std::unary_function<void, int> {
 
   predicate(int * R, int & Rn, int * S, int & Sn) : R(R), Rn(Rn), S(S), Sn(Sn) {}
   
   void operator ()(int value) const {
      if (value <= 1) {
         R[Rn++] = value;
      } else {
         S[Sn++] = value;
      }
   }
 
private:
   int * R;
   int & Rn;
   int * S;
   int & Sn;
};
 
bool f(int value) {
    return value <= 1;
}
 
int main()
{
const int n = 10;
int arr[n] = {-5, 2, 5, -1, 4, 2, 4, 0, -1, 10}, Rn, Sn, *R, *S;
std::copy(arr, arr + n, std::ostream_iterator<int>(std::cout, " ")); 
Rn = std::count_if(arr, arr + n, f);//[](const int value) {return value <=1; } );
Sn = n - Rn;
R = new int[Rn]; 
S = new int[Sn];
Rn = Sn = 0; 
std::for_each(arr, arr + n, predicate(R, Rn, S, Sn));//[R, &Rn, S, &Sn](const int value) 
//{if (value <=1) R[Rn++] = value; else S[Sn++] = value; } );
std::cout<< std::endl;
std::copy(R, R + Rn, std::ostream_iterator<int>(std::cout, " ")); 
std::cout<< std::endl;
std::copy(S, S + Sn, std::ostream_iterator<int>(std::cout, " ")); 
std::cout<< std::endl<< "(1 + R)/(1 + S) = "
<< (double) (1 + std::accumulate(R, R + Rn, 0) ) / (1 + std::accumulate(S, S + Sn, 0) );
delete []R;
delete []S; 
return 0;
}
1
e73t4ph
0 / 0 / 0
Регистрация: 07.05.2012
Сообщений: 34
23.05.2012, 21:08  [ТС] #28
большое спасибо все заработало.
последняя прозьба
[IMG]http://s019.***********/i607/1205/7c/4f231681610c.jpg[/IMG]

правильно ли блок-схема составлена?
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
23.05.2012, 21:19 #29
Цитата Сообщение от e73t4ph Посмотреть сообщение
правильно ли блок-схема составлена?
Без понятия.
1
e73t4ph
0 / 0 / 0
Регистрация: 07.05.2012
Сообщений: 34
23.05.2012, 21:25  [ТС] #30
еще раз спасибо за такую работу
0
23.05.2012, 21:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2012, 21:25
Привет! Вот еще темы с ответами:

одномерный массив в devC++ - C++
Как этот пример написать в dev-C++?

Массив: Выделить возрастающую под последовательность элементов наибольшей длины. - C++
Задан массив размера N. Выделить возрастающую под последовательность элементов наибольшей длины.

Использование русского языка в DevC++ - C++
Пишу программу на С++ (недавно начал изучение). Весь код есть, компиляция проходит успешно, запускаю - вместо букв, &quot;каракули&quot;....

Как запустить программу в DevC++? - C++
Как в Del C++ попробовать свою программу, ну как бы запустить свою программу в самой Del C++?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.