• Даны две строки символов, состоящих из цифр, букв и пробелов. Группу символов, не содержащих пробелов внутри себя, будем называть словами. Составить программу переформирования строк так, чтобы в первой строке располагались слова, начинающиеся с цифр, в порядке их возрастания, а во второй – слова, начинающиеся с букв, в алфавитном порядке.
    Перевести из PASCAL в С++

    begin
      var s1:=ReadlnString('Строка 1:');
      var s2:=ReadlnString('Строка 2:');
      var s:=(s1+' '+s2).ToWords;
      s1:=s.Where(t->t[1] in ['0'..'9']).OrderBy(t->t).JoinIntoString;
      s1.Println;
      s2:=s.Where(t->not(t[1] in ['0'..'9'])).OrderBy(t->t).JoinIntoString;
      s2.Println
    end.

Ответы 6

  • "- Как писать долго, длинно и непонятно? - Использовать С++"
    • Автор:

      lynnsqwy
    • 6 лет назад
    • 0
  • Все зависит от предпочтений, это я ещё писал используя STL, на Си это было бы ещё больше кода
  • Но писать свои "костыли" всегда интереснее, ведь кто знает, может, именно Вы реализуя свою реализацию пузырьковой сортировки неожиданно для себя, напишите соверешенно новый алгоритм)
  • Предпочтения - это точно. "один любит арбуз, другой свиной хрящик." (Н.Островский, "Бесприданница")
    • Автор:

      vivian
    • 6 лет назад
    • 0
  • Замечу, еще, что если кому и интересны "свои костыли", то уж точно не школьнику, котором вся эта информатика обычно "да видал я ее..."
  • Незнаю верно ли я все понял, но как вариант можно сделать так//Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23506 for x64#include <iostream>#include <string>#include <sstream>#include <vector>#include <iterator> #include <algorithm>bool DigitFirst(const std::string& rhs, const std::string& lhs){    if (isdigit(rhs[0]) || isdigit(lhs[0]))        return rhs < lhs;}bool LetterFirst(const std::string& rhs, const std::string& lhs){    if (isalpha(rhs[0]) || isalpha(lhs[0]))        return rhs < lhs;}const std::string TrueSort(std::string str, bool(*comparator)(const std::string&rhs, const std::string& lhs)){    std::stringstream ss(str);    std::vector<std::string> vstr(std::istream_iterator<std::string>(ss), {});    std::sort(vstr.begin(), vstr.end(), comparator);    ss.clear();    std::copy(vstr.begin(), vstr.end(), std::ostream_iterator<std::string>(ss, " "));    return ss.str();}int main(){    std::string first  = "position total 12345 2jz asd512fgh";    std::string second = "year 10010 2018r r98k hello";    std::cout << TrueSort(first,  DigitFirst ) << std::endl;    std::cout << TrueSort(second, LetterFirst);}
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years