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

заполнение вектора по модулю - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ как реализовать второй рабочий стол своей же системы в окне браузера? http://www.cyberforum.ru/cpp-beginners/thread1087793.html
Я профан, поэтому прошу профессионалов разъяснить, возможно ли такое написать. В общем проблема такая — в страницу браузера, сайта требуется автоматически эмулировать второй рабочий стол операционной системы, установленной на машине, на которой мы открываем данную веб страницу. То есть в появившемся окне второго рабочего стола можно делать все тоже что и в самой текущей системе. При этом чтобы...
C++ Отладить функцию для сложения, вычитания, умножения и деления двух чисел Не могу найти ошибок,программа не правильно работает. Вот условие : Напишите программу, которая использукет 4 функции. Каждая функция используется для сложения, вычитания, умножения и деления двух чисел соответственно. Передавайте параметры по значению. Используйте цикл while, который будет вызывать функции на выбор пользователя и после выполнения справшивать: "Do you want to quit?(y/n): ".... http://www.cyberforum.ru/cpp-beginners/thread1087787.html
Расставить арифметические знаки в выражении C++
Здравствуйте, хочу представить вашему внимаю одну задачу из олимпиадной работы. У меня самого котелок еще не доварил как её решить, поэтому хочу предоставить эту возможность вам!) Не уделяйте внимание на то как оформлено условие, Молдавская олимпиада( переводилась с румынского языка, да и люди которые составляли условие к задачи, большим интеллектом по всей видимости не отличались) : D Файл...
C++ Предупреждение 2 warning LNK4075: не учитывается "/INCREMENTAL"
Предупреждение 1 warning C4996: 'swprintf': swprintf has been changed to conform with the ISO C standard, adding an extra character count parameter. To use traditional Microsoft swprintf, set _CRT_NON_CONFORMING_SWPRINTFS. D:\Прога2014\Копиявчар\wchar\wchar\wchar.cpp 37 1 wchar Предупреждение 2 warning LNK4075: не учитывается "/INCREMENTAL" из-за спецификации...
C++ Напишите программу, которая по желанию пользователя выводит таблицу пересчета из дюймов в сантиметры на экран http://www.cyberforum.ru/cpp-beginners/thread1087775.html
46. Напишите программу, которая по желанию пользователя выводит таблицу пересчета из дюймов в сантиметры на экран, принтер или в файл. Ниже приведен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом. *** Таблица пересчета из дюймов в миллиметры *** Результат выводить: 1 — на экран; 2 — на принтер; 3 — в файл. Введите число от 1...
C++ Составить функцию по составлению дробной части числа суммы элементов массива Класс DoubleArray. Тип элементов массива – double. Функция (fract) – определения дробной части числа суммы элементов массива. Помогите пожалуйста составить функцию по составлению дробной части числа суммы элементов массива:) А класс я сделал уже:) подробнее

Показать сообщение отдельно
TrueBit
 Аватар для TrueBit
95 / 95 / 12
Регистрация: 19.11.2012
Сообщений: 195
02.02.2014, 21:58  [ТС]     заполнение вектора по модулю
Цитата Сообщение от Somebody Посмотреть сообщение
В C++11 rand по модулю на фиг не нужен, там uniform_int_distribution есть.
В C++98 можно
C++
1
2
std::transform(vector.begin(), vector.end(), vector.begin(),
  std::bind2nd(std::modulus<int>(), 2));
но vector всё равно из-за этого придётся делать int, чтобы туда сначала результаты rand'ов писать.
Еще бы с диапазоном и было бы норм. Например для диапазона значений [-10,10] можно так, но это как-то неприлично смотрится(к тому же 2 прохода transform):

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstdlib>
#include <ctime>
#include <functional>
 
int main() {
    srand(unsigned(std::time(0)));
    std::vector<int> vector(10);
 
    std::generate(vector.begin(),vector.end(),rand);
    std::transform(vector.begin(),std::transform(vector.begin(),vector.end(),vector.begin(),std::bind2nd(std::modulus<int>(),21)),vector.begin(), std::bind2nd(std::minus<int>(),10));
 
    return 0;
}
 
Текущее время: 05:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru