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

Все положительные элементы массива, расположенные правее первого нулевого элемента, увеличить в два раза - C++

Восстановить пароль Регистрация
 
wizard 007
0 / 0 / 0
Регистрация: 19.04.2011
Сообщений: 39
06.11.2011, 13:20     Все положительные элементы массива, расположенные правее первого нулевого элемента, увеличить в два раза #1
Все положительные элементы массива а1, а2 , ..., а20, расположенные правее первого нулевого элемента, увеличить в два раза
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2011, 13:20     Все положительные элементы массива, расположенные правее первого нулевого элемента, увеличить в два раза
Посмотрите здесь:

C++ Удалить из массива все элементы, встречающиеся ровно два раза
Борланд Си++ (Увеличить все элементы массива, начиная с первого положительного) C++
C++ Увеличить все элементы этого массива начиная с первого положительного элемента в два раза.
C++ Дана последовательность из целых чисел. Все элементы меньше заданного числа, увеличить в два раза
C++ Найти номер первого положительного элемента массива и сумму элементов правее него
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
06.11.2011, 19:03     Все положительные элементы массива, расположенные правее первого нулевого элемента, увеличить в два раза #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <cstdlib>
#include <ctime>
 
template <int min, int max>
class RandomInteger {
 public:
  int operator()() {
    return rand() % (max - min + 1) + min;
  }
};
 
std::ostream &operator<<(std::ostream &stream,
  const std::vector<int> &array) {
  for (std::vector<int>::const_iterator i = array.begin();
    i != array.end(); ++i)
    stream << (*i) << (((i + 1) != array.end()) ? ", " : "");
  return stream;
}
 
void IncreasePositive(int &value) {
  if (value > 0) value *= 2;
}
 
int main(int argc, char *argv[]) {
  srand(time(NULL));
  size_t arraySize = 18 + rand() % 5;
  std::vector<int> array(arraySize);
 
  std::generate(array.begin(), array.end(), RandomInteger<-5, 5>());
 
  std::cout << array << std::endl;
 
  std::for_each(std::find(array.begin(), array.end(), 0), array.end(),
    IncreasePositive);
 
  std::cout << array << std::endl;
 
  return 0;
}
Сыроежка
Заблокирован
06.11.2011, 19:17     Все положительные элементы массива, расположенные правее первого нулевого элемента, увеличить в два раза #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от wizard 007 Посмотреть сообщение
Все положительные элементы массива а1, а2 , ..., а20, расположенные правее первого нулевого элемента, увеличить в два раза
Если использовать стандартные алгоритмы, то ваше задание делается в две строчки!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include   <algorithm>
#include   <functional>
 
int main()
{
   int a[20];
 
   //  задаете значения массива каким-нибудь образом. Можно при его инициализации int a[20] = { ...};
 
   int *p = std::find( a, a + 20, 0 );
 
   std::transform( p, a + 20, p, p, std::plus<int>() );  
 
   return ( 0 );
}
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
07.11.2011, 19:00     Все положительные элементы массива, расположенные правее первого нулевого элемента, увеличить в два раза #4
Осталось только проверку на положительность значения воткнуть...
Yandex
Объявления
07.11.2011, 19:00     Все положительные элементы массива, расположенные правее первого нулевого элемента, увеличить в два раза
Ответ Создать тему
Опции темы

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