307 / 288 / 116
Регистрация: 23.01.2018
Сообщений: 933
1

Имитировать C# LINQ на C++11

28.03.2018, 09:48. Показов 751. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Простое задание: http://www.codeabbey.com/index... y-checksum

Если вкратце, дается n чисел, подсчитать сумму по формуле s = 113 * (s + n) % 10000007

Пока что я могу это решить только так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// https://ideone.com/zqS0EY
 
#include <iostream>
using namespace std;
 
int main()
{
    int n;
    cin >> n;
    int s = 0;
    while (n-- > 0) {
        int k;
        cin >> k;
        s = 113 * (s + k) % 10000007;
    }
    cout << s << endl;
    return 0;
}
На C# это можно сделать гораздо короче, проще и красивее:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
// https://ideone.com/gLnX4P
 
using System;
using System.Linq;
 
class Program
{
    public static void Main()
    {
        Console.ReadLine();
        Console.WriteLine(Console.ReadLine().Split().Aggregate(0, (y, x) => 113 * (y + Convert.ToInt32(x)) % 10000007));
    }
}
Вопрос: как написать на C++ примерно в таком же стиле? Я слышал, в C++11 появились похожие конструкции.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.03.2018, 09:48
Ответы с готовыми решениями:

Linq или не Linq. Linq медленней стандартных методов?
Есть у нас два массива, нужно найти совпадения в первом из второго. Два варианта реализации, первый...

Почему LINQ to Entity содержит не все методы LINQ to Objects?
Почему не все методы linq to entity содержат все методы?Чем например Linq to object

Литература по EntityFramework, WCF, Linq to Objects, и Linq to SQL
Посоветуйте пожалуйста книги или статьи для освоения следующих вещей: EntityFramework, WCF, Linq to...

LINQ to Interbase/Firebird и вообще LINQ to...
Возникла вот надобность работы с СУБД Interbase. Очень хочется пользоваться удобными средствами...

1
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
28.03.2018, 17:53 2
Можно так, с помощью std::accumulate, но не сказать, что бы сильно похоже
https://ideone.com/dRKdGx
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <iterator>
#include <numeric>
 
 
int main() {
   int const res = std::accumulate(
                       std::istream_iterator<int> { std::cin }, std::istream_iterator<int> {},
                       0,
                       [] (int const y, int const x) { return 113 * (y + x) % 10000007; });  
   std::cout << res << '\n';
}
0
28.03.2018, 17:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.03.2018, 17:53
Помогаю со студенческими работами здесь

Не удаётся неявно преобразовать тип System.Linq.IQueryable<<anonymous type>> в System.Linq.IQueryable<Character>
Здравствуйте. Решили добавить навигацию на страницу и где-то допустили ошибку. Помогите пожалуйста...

Ускорение Linq to SQL (Compiled Linq, Entity SQL, и т.д.)
Здравствуйте! У меня задание стоит ускорить прогу. В проге во многих местах по куче Linq запросов....

1c БП 2.0 имитировать ентер?
День добрый всем. переделываю требование-накладную чтоб на второй закладке(счета затрат) по...

Имитировать человека
Добрый день ув. пользователи! Подскажите пожалуйста можно ли как-то имитировать человека, допустим...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru