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

Массивы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ ошибки в проге http://www.cyberforum.ru/cpp-beginners/thread386143.html
задание: вычислить y=cos(x)+cos(x)^2+cos(x)^3+...+cos(x)^30 #include<iostream> #include<math.h> #include<conio.h> using namespace std; int main() {
C++ Работа со строками,поиск предложений. Доброго вечера. Пытаюсь написать программу выводящую из тхт. фаила все предложения начинающиеся с вводимой буквы. #include <iostream> #include <string.h> #include <fstream> #include <stdio.h> using namespace std; http://www.cyberforum.ru/cpp-beginners/thread386138.html
Виртуальные методы класса C++
Скажите, зачем нужны виртуальные методы? Почему нельзя использовать стандартные? Спасибо.
Построение новой матрицы по части заданой матрицы C++
Доброго времени суток, уважаемые форумчане!:) Не могу реализовать свою идею, посдкажите как, пожалуйста. Задача. Получить квадратную матрицу В порядка n, каждый элемент bij(i,j индексы) которой равен максимуму из элементов исходной квадратной матрицы А порядка n, расположенных в закрашенной области, определяемой индексами i, j, на рисунке. Добавил также фото, где показано по какому...
C++ Написать программу используя операторы ветвления и операторы циклов http://www.cyberforum.ru/cpp-beginners/thread386121.html
Написать программу, используя операторы ветвления и операторы циклов на С++. Дано действительные числа , внести единую упорядоченность в получив такие, что Число сравнений не должно превышать p+q.
C++ цикл с условием дано число N (>1). Вывести наиболее из целых чисел к, ДЛЯ КОТОРЫХ СУММА 1+1/2+...+1/К будет больше А, и саму эту сумму. подробнее

Показать сообщение отдельно
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
24.01.2012, 16:33     Массивы
Как-то так.

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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <iostream>
#include <vector>
#include <random>
#include <algorithm>
#include <map>
#include <functional>
#include <iterator>
 
int check_correct_input()
{
   int value = 0;
   std::cin >> value;
   while (value < 1 || value > 2)
   {
      std::cout << "Wrong" << std::endl;
      std::cin >> value;
   }
   return value;
}
 
std::vector<double> random_generator(size_t size)
{
   std::vector<double> vec(size);
   std::mt19937 generator(time(0));
   std::uniform_int_distribution<> distr(0, 1000);
   std::generate(vec.begin(), vec.end(), [&generator, &distr] () {return static_cast<double>(distr(generator)) / 100;});
   return vec;
}
 
std::vector<double> keyboard_input(size_t size)
{
   std::vector<double> vec;
   for (size_t i = 0; i < size; ++i)
   {
      double value = 0.0;
      std::cin >> value;
      vec.push_back(value);
   }
   return vec;
}
 
int main()
{
   typedef std::function<std::vector<double>(size_t)> fill_function;
   std::pair<int, fill_function> array[] = 
   {
      std::make_pair(1, random_generator),
      std::make_pair(2, keyboard_input)
   };
   std::map<int, fill_function> functions(array, array + sizeof(array) / sizeof(*array));
   size_t size = 0;
   std::cout << "Enter array size: ";
   std::cin >> size;
   std::cout << "Press 1 for auto generate" << std::endl
             << "Press 2 for entering from keyboard" << std::endl;
   int value = check_correct_input();
   std::vector<double>&& vec = functions[value](size);
   std::cout << "Array is: ";
   std::copy(vec.begin(), vec.end(), std::ostream_iterator<double>(std::cout, " "));
   std::cout << std::endl;
   auto minmax = std::minmax_element(vec.begin(), vec.end());
   std::cout << "Min: " << *minmax.first << " Max: " << *minmax.second << std::endl;
   std::ptrdiff_t diff = std::distance(minmax.first, minmax.second);
   if (diff > 1 || diff < -1)
   {
      std::cout << "Mult is: " << std::accumulate(diff >= 0 ? minmax.first + 1 : minmax.second + 1,
            diff >= 0 ? minmax.second : minmax.first, 1.0, std::multiplies<double>()) << std::endl;
   }
   else
   {
      std::cout << "No elements between min and max" << std::endl;
   }
   std::sort(vec.begin(), vec.end(), [] (const double first, const double second) {return first > second; });
   std::cout << "Sorted array: ";
   std::copy(vec.begin(), vec.end(), std::ostream_iterator<double>(std::cout, " "));
   std::cout << std::endl;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru