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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.95
Ressyx
0 / 0 / 0
Регистрация: 17.07.2012
Сообщений: 38
#1

Вывод суммы четных элементов массива - C++

23.07.2012, 13:52. Просмотров 2650. Ответов 27
Метки нет (Все метки)

Напишите программу, печатающую на экране сумму четных элементов заданного массива вещественных чисел.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2012, 13:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод суммы четных элементов массива (C++):

Найти суммы четных элементов (элементов с четным номером) массива вещественных чисел A(22) и нечетных элементов - C++
Здравствуйте, дорогие форумчане. Не могли бы вы мне помочь? Мне нужно составить программу с таким условием: "Найти суммы четных...

Составить программу вычисления и печати суммы отрицательных элементов среди четных элементов массива - C++
#include <math.h> #include <stdio.h> #include<malloc.h> void pech_m(float *, int, int); void f1(float *, int, int); float ...

Подсчет количества, суммы и произведения четных положительных элементов массива - C++
помогите пожалуйста! разработка программы для подсчета количества, суммы и произведения четных положительных элементов массива. на языке...

Найти произведение и сумму четных элементов массива, разность произведения и суммы - C++
Ввести массив А(N). Найти произведение и сумму четных элементов массива, разность произведения и суммы. Вывести все результаты.

Вывод элементов массива, стоящих на четных позициях, а затем – на нечетных - C++
добрый времени суток помогите решить задачку: разработайте программу, в которой реализован ввод элементов одномерного массива и вывод...

Рекурсия (вычисление суммы, вывод элементов одномерного массива в обратном порядке) - C++
Я хочу реализовать рекурсивные функции:1)вычисления суммы k первых членов арифметической прогрессии. 2)вывода в консоль элементов...

27
Avazart
Нарушитель
Эксперт С++
7232 / 5404 / 293
Регистрация: 10.12.2010
Сообщений: 23,951
Записей в блоге: 17
23.07.2012, 19:02 #16
Вообщето нет, порядок должен быть четко определен по логике вещей так как тогда нельзя было определять такие вещи как деление и вычитание, к примеру

Добавлено через 4 минуты
Как минимум 1 раз функтор точно копируется
Ну да хотя бы потому что я не создавал объект класса функтура.
0
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
23.07.2012, 19:05 #17
C++
1
F<int>()
а это что по твоему?)
0
Avazart
Нарушитель
Эксперт С++
7232 / 5404 / 293
Регистрация: 10.12.2010
Сообщений: 23,951
Записей в блоге: 17
23.07.2012, 19:14 #18
А разве это одно и тоже с
C++
1
2
F<int> fobj; 
int sum= std::accumulate(&A[0],&A[size],0,fobj );
0
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
23.07.2012, 19:17 #19
Avazart, Без оптимизаций - конечно да. Например студия, при примерно таком коде, если вставить в copy конструктор вывод - получим что один раз объект создается и копируется (в первом случае мы используем временный объект, который создается и затем копируется, если включены оптимизации - конструктор копии вызван не будет, во втором случае мы создаем объект, который затем так же копируется).
0
Avazart
Нарушитель
Эксперт С++
7232 / 5404 / 293
Регистрация: 10.12.2010
Сообщений: 23,951
Записей в блоге: 17
23.07.2012, 19:51 #20
Что-то не понимаю состояние объекта после выполнения алгоритма не сохраняется?
Добавлено через 10 минут
В g++
C++
1
int sum= std::accumulate(&A[0],&A[size],0,fobj );
Вызывает копирующий конструктор - деструктор
C++
1
int sum= std::accumulate(&A[0],&A[size],0,F<int>() );
Вызывает конструктор- деструктор
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
23.07.2012, 20:00 #21
Цитата Сообщение от Avazart Посмотреть сообщение
int sum= std::accumulate(&A[0],&A[size],0,F<int>() );
и недолжно, это временный объект

Цитата Сообщение от ForEveR Посмотреть сообщение
никто не гарантирует в каком порядке будет обходиться массив алгоритмом accumulate и сколько раз функтор будет копироваться.
да, но накладные расходы никому не нужны и реализовывать последовательный алгоритм непоследовательно не имеет смысла
0
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
23.07.2012, 20:06 #22
Jupiter, И что, что он временный? При передаче в функцию, которая принимает параметр по значению, если действовать без оптимизаций, будет проведена копия, как и должно быть (ну или будет вызван move-ctor). Ну или может работать с регистром.
0
Avazart
Нарушитель
Эксперт С++
7232 / 5404 / 293
Регистрация: 10.12.2010
Сообщений: 23,951
Записей в блоге: 17
23.07.2012, 20:12 #23
Цитата Сообщение от Jupiter Посмотреть сообщение
и недолжно, это временный объект
Я про второй случай, я почему то считал что объект можно использовать для хранения значений и после выполнения алгоритма.( например для подсчета количества вызовов)
0
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
23.07.2012, 20:41 #24
n3337 12.2

2 [ Example: Consider the following code:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class X {
public:
X(int);
X(const X&);
X& operator=(const X&);
~X();
};
class Y {
public:
Y(int);
Y(Y&&);
~Y();
};
X f(X);
Y g(Y);
void h() {
X a(1);
X b = f(X(2));
Y c = g(Y(3));
a = f(a);
}
An implementation might use a temporary in which to construct X(2) before passing it to f() using X’s
copy constructor; alternatively, X(2) might be constructed in the space used to hold the argument. Likewise,
an implementation might use a temporary in which to construct Y(3) before passing it to g() using Y’s
move constructor; alternatively, Y(3) might be constructed in the space used to hold the argument. Also,
a temporary might be used to hold the result of f(X(2)) before copying it to b using X’s copy constructor;
alternatively, f()’s result might be constructed in b. Likewise, a temporary might be used to hold the result
of g(Y(3)) before moving it to c using Y’s move constructor; alternatively, g()’s result might be constructed
in c. On the other hand, the expression a=f(a) requires a temporary for the result of f(a), which is then
assigned to a. —end example ]
Добавлено через 15 минут
Avazart, Гарантировано состояние сохраняется только у std::for_each (который возвращает свой функтор обратно).
1
Doctor_
234 / 234 / 71
Регистрация: 03.02.2011
Сообщений: 1,431
23.07.2012, 21:03 #25
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 <iostream>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
 
using namespace std;
 
int main() {
    srand(time(NULL));
    setlocale(LC_ALL,"Russian");
    int N;
    cout << "Введите количество элементов в массиве: ";
    cin >> N;
    int *vector = new int[N];
    int sum = 0;
    for(int i=0; i<N; i++)
    vector[i] = rand()%50;
    for(int i=0; i<N; i++)
    cout << vector[i] << " ";
    for(int i=0; i<N; i++)
    if(vector[i] % 2 == 0)
    sum += vector[i];
    cout << endl;
    cout << "Сумма четных элементов: " << sum << endl;
    delete [] vector;
    getche();
}
0
Thinker
Эксперт С++
4227 / 2201 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.07.2012, 21:58 #26
C
1
2
3
4
5
6
7
int Sum(int *a, int *end)
{
   return  a < end ? ((*a) & 1 == 0) + Sum(a + 1, end) : 0;
}
 
...
   printf("sum = %d\n", Sum(a, a + sizeof(a)/sizeof (*a)));
Цитата Сообщение от Ressyx Посмотреть сообщение
четных элементов заданного массива вещественных чисел.

Не по теме:

понятие четности определено для целых чисел

1
alkagolik
Заблокирован
24.07.2012, 02:22 #27
Thinker, очевидно подразумевается четность индексов массива.
0
stem
0 / 0 / 0
Регистрация: 16.02.2015
Сообщений: 27
27.02.2015, 12:16 #28
!!!
0
27.02.2015, 12:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2015, 12:16
Привет! Вот еще темы с ответами:

Вывод на экран подсчета суммы элементов массива между первым и вторым отрицательными элементами - C++
На С++ написана программа подсчета суммы элементов массива между первым и вторым отрицательными элементами . Но не получается сделать вывод...

Массивы: Определить частное от деления суммы положительных элементов массива на модуль суммы отрицательных элементов - C++
Всем привет, учусь в 9-ом классе. Помогите решить 3 задачи, пожалуйста. 1) Известны данные о количестве осадков, выпавших за каждый...

Нахождение суммы всех элементов массива и суммы первых 3-х элементов массива - C++
Нужно создать алгоритм нахождения суммы всех элементов массива А и В ,и сумму первых 3-х элементов массива С. Проблема в том ,что я...

Найти сумму четных элементов массива, стоящих на четных местах - C++
Вы моя последняя надежда( помогите пожалуйста)) прогу с комментариями... 1. Найти сумму четных элементов массива, стоящих на четных...


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

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

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