решение 3х задач

  • Автор темы NaFkA
  • Дата начала
N

NaFkA

#1
1)Даны два предложения. Напечатать слова, которые есть только в одном из них.
2)Фирма имеет N магазинов. В двумерном массиве хранятся данные о выручке каж-дого магазина за последние M месяцев (первого магазина – в первой строке, второго – во второй и т.д.). Определить: а) среднюю выручку каждого магазина за К произвольных идущих подряд месяцев (с К1 по K2); б) магазин с наибольшей выручкой за выбранный период.
3)В файле хранятся названия фильмов на английском языке – одна строка: одно на-звание. Вывести на экран список фильмов, а) отсортировав по названию без учета артик-лей the и а, б) перенести артикли в конец названий.
 
R

Rififi

#2
1.

C++:
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>

#include <iostream>
#include <sstream>

/*
1)Даны два предложения. Напечатать слова, которые есть только в одном из них.
*/

std::vector<std::string> words(const std::string& text)
{
std::vector<std::string> v;

std::stringstream ss(text);
std::string s;

while (ss >> s)
v.push_back(s);

std::sort(v.begin(), v.end());

return v;
}

template <typename Range>
void diff(const Range& r1, const Range& r2)
{
Range result;
std::set_difference(r1.begin(), r1.end(), r2.begin(), r2.end(), std::back_inserter(result));
std::copy(result.begin(), result.end(), std::ostream_iterator<typename Range::value_type>(std::cout, " "));
}

void diff(const std::string& text1, const std::string& text2)
{
diff(words(text1), words(text2));
}

int main()
{
setlocale(LC_ALL, "");

const std::string text1 = "one two three bar";
const std::string text2 = "foo bar one four";

diff(text1, text2);

return 0;
}
Проверка:

http://codepad.org/gISTQTR5


3.
C++:
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>

#include <iostream>
хотя нет, что-то слишком много запарок получается, так что я пожалуй пас :)