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

Максимумы и минимумы. Векторы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Удалить из файла 3 последние строки. http://www.cyberforum.ru/cpp-beginners/thread138487.html
Дан текстовый файл, содержащий более 3х строк. Удалить из файла 3 последние строки.
C++ Матрицы 1). Дана матрица размера M*N. Для каждой строки матрицы найти сумму её элементов. 2). Дана квадратная матрица А порядка М. Найти сумму элементов её главной диагонали, содержащей следующие элементы:... http://www.cyberforum.ru/cpp-beginners/thread138482.html
Программа создания словника по тексту. C++
Уважаемые программисты, помогите пожалуйста! Я ничего не соображаю в С++, а задание очень большое и сложное. Вся надежда на вас - мыслящих людей!:) Заранее спасибо! а) Программа создает (или...
код к заданиям C++
1. Дана целочисленная квадратная матрица порядка n. Найти сумму элементов той строки, в которой расположен максимальный элемент матрицы. Если таких строк несколько, вывести все суммы. Матрицу...
C++ векторы http://www.cyberforum.ru/cpp-beginners/thread138431.html
скажите в чём разница между функциями setvect и getvect??
C++ sleep в с++ Скажите, есть программа на с++, в ней используется функция sleep. Вроде все правильно, но выдает ошибку: Function 'Sleep' should have a prototype Я вроде понимаю, что тут нужно подключить... подробнее

Показать сообщение отдельно
fasked
Эксперт С++
4945 / 2525 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
04.06.2010, 19:07
вторая задача
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
#include <functional>
 
template <typename T> class is_odd : public std::unary_function<T, bool> {
public: bool operator () (const T &w) const { return w & 1; }
};
 
int main()
{
   // initial vector
   int arr [] = { 6, 7, 8, 9, 1, 2, 9, 4, 5, 3 };
   //
   std::vector<int> v(arr, arr + sizeof(arr)/sizeof(int));
   // print vector
   std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
   std::cout << std::endl;
   // print even elements
   std::copy_if(v.rbegin(), v.rend(), std::ostream_iterator<int>(std::cout, " "), std::not1(is_odd<int>()));
   std::cout << std::endl;
}
может быть с классами опять перебор, но вроде бы это в концепции Си++
Цитата Сообщение от neske Посмотреть сообщение
а в шестой задачи, каким ты способсом сделаешь?
сейчас и до нее дойдем

Добавлено через 6 минут
третья задача
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
 
int main()
{
   // initial vector
   int arr [] = { 6, 7, 8, 9, 1, 2, 9, 4, 5, 3 };
   //
   std::vector<int> v(arr, arr + sizeof(arr)/sizeof(int));
   // print vector
   std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
   std::cout << std::endl;
   // right shift
   std::reverse(v.begin(), v.end() - 1);
   std::reverse(v.begin(), v.end());
   // print vector
   std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
   std::cout << std::endl;
}
Добавлено через 55 минут
Родил наконец-то шестую задачу без использования дополнительного массива, обошлось двумя временными переменными. конечно ни о каком STL тут и говорить нечего. Стандартными алгоритмами такое не решается по-моему
Крайние значения я решил тоже не менять, но в принципе это не проблема. Можно их посчитать как (псевдокод: индексация от 1 до n включительно)
Код
v[1] = (v[1] + v[2]) / 2;
v[n] = (v[n - 1] + v[n]) / 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
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
 
int main()
{
   // initial vector
   int arr [] = { 6, 7, 8, 9, 1, 2, 9, 4, 5, 3 };
   //
   std::vector<int> v(arr, arr + sizeof(arr)/sizeof(int));
   // print vector
   std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
   std::cout << std::endl;
   // set elements
   int buf_1 = 0;
   int buf_2 = *(v.begin() + 1);
   for(std::vector<int>::iterator it = v.begin() + 1; it != v.end() - 1; ++it)
   {
      buf_1 = *it;
      *it = (buf_2 + *(it) + *(it+1)) / 3;
      buf_2 = buf_1;
   }
   // print vector
   std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
   std::cout << std::endl;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru