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

Проверка задачи. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Считывание расположения (пути) файла с клавиатуры http://www.cyberforum.ru/cpp-beginners/thread438321.html
Нужно реализовать в консольной программе открытие файла, путь которого будет считан с клавиатуры. Если файл находится в директории программы, то его ввести его название не составляет большого труда и...
C++ Получить данные из другой программы. Каким образом можно получить данные из другой программы? Другая программа: вывод реализован в свой класс, вроде не стандартный. gettext не срабатывает. ListView_GetItemCount возвращает ноль,... http://www.cyberforum.ru/cpp-beginners/thread438310.html
numeric_limits<unsigned int>::digits C++
при запуске такой скомпилиной проги на 32р. системе должно вывести bits in int: 32 а при запуске на 64р. системе bits in int: 64 так ли это? #include <iostream> #include <limits> using...
C++ Построить содержательный граф
Построить содержательный граф операции сложения целых чисел с разными знаками.
C++ Проверка введенных данных: число/не число http://www.cyberforum.ru/cpp-beginners/thread438297.html
проходим try catch throw в универе. взял стаааааарую прогу и в нее вкладываю проверки введенных данных посредством try catch throw но у меня почему-то не выходит - не работает проверка цифра/не...
C++ построить структурную схему управляющего автомата Для содержательного графа операции сложения построить структурную схему управляющего автомата с жёсткой логикой. подробнее

Показать сообщение отдельно
neske
1498 / 865 / 84
Регистрация: 26.03.2010
Сообщений: 2,967

Проверка задачи. - C++

30.01.2012, 23:49. Просмотров 626. Ответов 5
Метки (Все метки)

вечер добрый.
решал тут задачу, был уверен в решении, получил 30/100 баллов.

у кого будет время, посмотрите пожалуйста, и дайте пример, где она будет валится, у меня не получилось.
Задача B. Сокращение ссылок. - http://neerc.ifmo.ru/school/io/archi...l-20120129.pdf

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <fstream>
#include <string>
#include <cctype>
 
int main() {
    std::ifstream ifs("twi.in");
    std::ofstream ofs("twi.out");
    const std::string link = "http://",
                      pat = "...";
    std::string str;
    int size;
    bool flag;
    ifs >> size;
    ifs.ignore(1, '/n');
    std::getline(ifs, str);
    if (size >= str.size()) {
        ofs << str << std::endl << "0";
        return 0;
    }
    int reduce = str.size() - size;
    int cnt, temp, idx = 0;
    while ((idx = str.find(link, idx)) != std::string::npos) {
        flag = true;
        if (!reduce)
            break;
        cnt = 0;
        while (str[idx] != ' ' && idx < str.size()) {
            if (!std::isalpha(str[idx]) && !std::isdigit(str[idx]) &&
                str[idx] != '/' && str[idx] != ':' && str[idx] != '.')
                flag = false;
            ++cnt, ++idx;
        }
        if (!flag)
            continue;
        temp = cnt - (cnt - reduce) + pat.size();
        if (temp > cnt)
            temp = cnt;
        str.erase(idx - temp, temp);
        str.insert (idx - temp, pat);
        idx -= temp - pat.size();
        reduce -= temp - pat.size();
    }
    ofs << str << std::endl << reduce;
    ifs.close();
    ofs.close();
    return 0;
}
Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru