Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2011, 11:24   #1
anytka2k
Новичок
Джуниор
 
Аватар для anytka2k
 
Регистрация: 16.11.2011
Сообщений: 4
Лампочка Для массива подсчитать удвоенную сумму всех положительных элементов (С++)

реШение на языке с++.
Задан массив, состоящий из m элементов. Подсчитать удвоенную сумму всех положительных элементов заданной последовательности.

как пишется программа?



_________
Убедительнейшая просьба - давать название темы так,
чтобы название адекватно отражало суть решаемой задачи/проблемы.
эту тему я исправил.
Но в будущем неукоснительно соблюдайте это правило!

Модератор.
Чем умнее человек, тем более он находит оригинальных людей. Заурядные личности не находят разницы между людьми(Б.Паскаль)

Последний раз редактировалось Serge_Bliznykov; 16.11.2011 в 13:31. Причина: неполные данные
anytka2k вне форума Ответить с цитированием
Старый 16.11.2011, 12:20   #2
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Код:
const int m = 10;   // размерность массива
float Array[m];
float sum = 0;


// ...
// Тут надо ввести элементы массива
// ...


for (int i = 0; i < m; i++)
    if (Array[i] > 0)
        sum += Array[i] * 2;

cout << sum << endl;    // Вывод результата
ЗЫ Ну хоть какие-то знания должны иметься все-таки... Задача-то проще некуда...
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 16.11.2011, 12:22   #3
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Код:
for (int i=0; i<=m; i++)

{
int s = 0;
if (a[i]>0) s = s + a[i];
s = s*2;

}
Вадим Мошев вне форума Ответить с цитированием
Старый 16.11.2011, 12:31   #4
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Код:
for (int i=0; i<=m; i++)

{
int s = 0;
if (a[i]>0) s = s + a[i];
s = s*2;

}

Точно.
Невнимательно прочитал условие -)
Мой код считает не удвоенную сумму положительных элементов, а сумму удвоенных положительных элементов.
Спасибо за поправку -)
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 16.11.2011, 12:40   #5
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от Mandrivnyk Посмотреть сообщение
Точно.
Невнимательно прочитал условие -)
Мой код считает не удвоенную сумму положительных элементов, а сумму удвоенных положительных элементов.
Спасибо за поправку -)
А это одно и то же

2*(a1+a2+...+an) = 2*a1 + 2*a2 + ... + 2*an
Вадим Мошев вне форума Ответить с цитированием
Старый 16.11.2011, 15:53   #6
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
А это одно и то же
Да я, как бы, в курсе...
Вот знает ли об этом ТС? -)
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 16.11.2011, 15:57   #7
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Код:
for (int i=0; i<=m; i++)

{
int s = 0;
if (a[i]>0) s = s + a[i];
s = s*2;

}
Только обнуление суммы и ее удваивание лучше вынести за пределы цикла, думаю

А, да, и условие продолжения же должно быть <, а не <=
Son Of Pain вне форума Ответить с цитированием
Старый 16.11.2011, 16:09   #8
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Да, подарю и тебе немного хардкорного плюсокодца во имя добра
Код:
#include <numeric>
#include <iostream>
#include <iterator>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
	cout<<"Enter m: ";
	vector<int> data(*istream_iterator<int>(cin));
	cout<<"Now enter values: ";
	generate(data.begin(), data.end(), []() { return *istream_iterator<int>(cin); } );
	cout<<"Result="<<(2*accumulate(data.begin(), data.end(), 0, [](int r, int v) { return (v>0?r+v:r); }))<<endl;
}
Для компиляции понадобится gcc 4.5+ или visual studio 2010 или любой другой нормальный компилятор, который уже научился понимать лямбды.
Son Of Pain вне форума Ответить с цитированием
Старый 16.11.2011, 18:44   #9
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
Сообщение от Son Of Pain Посмотреть сообщение
Для компиляции понадобится gcc 4.5+ или visual studio 2010 или любой другой нормальный компилятор, который уже научился понимать лямбды.
В первую очередь понадобиться любой другой нормальный ТС, который уже научился хоть что-то понимать -)
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 16.11.2011, 21:18   #10
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от Son Of Pain Посмотреть сообщение
Только обнуление суммы и ее удваивание лучше вынести за пределы цикла, думаю

А, да, и условие продолжения же должно быть <, а не <=
Ну да, ошибся. Виноват.
Но почему знаки строгие?
Цитата:
условие продолжения же должно быть <, а не <=
Вадим Мошев вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчитать сумму ненулевых элементов массива Daniel$ Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 02.05.2011 13:26
вычислить сумму положительных элементов массива Rapira Помощь студентам 3 15.10.2010 13:25
Для массива определить сумму всех элементов, стоящих после максимального HECTOR.A. Паскаль, Turbo Pascal, PascalABC.NET 4 17.06.2009 22:04
В массиве A, состоящем из 10 элементов, подсчитать количество положительных элементов Alex61 Помощь студентам 5 16.05.2009 23:06
Найти максимальный из положительных элементов матрицы и сумму отрицательных элементов. bessonov12 Microsoft Office Excel 7 04.05.2009 05:44