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

Строки. Проверьте код, пожалуйста. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Изображение физического маятника http://www.cyberforum.ru/cpp-beginners/thread416669.html
здравствуйте, есть исходник на делфи программы по изображению физического маятника, какими способами ее можно реализовать на с++? unit Unit1; interface
C++ Подмена операции сложения на умножение. Си!!! Добрый вечер, господа! Вынужден обратиться снова к вам за помощью. Мне дали одно интересное задание: подменить операцию сложения на умножение. Я сначала написал на С++ через классы и перегрузку... http://www.cyberforum.ru/cpp-beginners/thread416654.html
Нотации массивов и указателей C++
Айвор Хортон в своей книге Beginning Visual C++ 2010 утверждает (стр. 183, 2-й абзац сверху) что нотация указателей работает быстрее нотации массивов. Хочется, чтобы опытные люди подтвердили это или...
C++ функция символьной строки
Дана символьная строка.Написать программу, которая оставляет в исходной строке латинские буквы. Обработку строки оформить в виде функции, ввод и вывод данных - в основной программе. тут...
C++ задача с матрицей http://www.cyberforum.ru/cpp-beginners/thread416636.html
Задача:даны марица А и массив B. Надо написать программу,которая вычисляет массив С, состаящий из элементов А, расположенных между первым и последним положительным элементами каждого столбца, если...
C++ Преобразование в строку Здравствуйте, уважаемые господа. Задача такая: мне необходимо объединить два числа, содержащие только 0 и 1 (по 5 цифр в каждом), в одно, а через некоторое время разбить получившееся число... подробнее

Показать сообщение отдельно
John_10
0 / 0 / 0
Регистрация: 23.12.2011
Сообщений: 5

Строки. Проверьте код, пожалуйста. - C++

24.12.2011, 23:17. Просмотров 448. Ответов 6
Метки (Все метки)

Здравствуйте! Проверьте пожалуйста код, а то у меня не выполняется пункт "Б".
Вот условие задачи -

Задан текст, состоящий из строк произвольной длины. Строки разделаются одним символом или несколькими, называемыми разделителями. Разделители одинаковы для всего текста. Текст заканчивается комбинацией двух специальных символов, отличных от разделителя.
Написать программу, выполняющую над текстом следующую последовательность действий:
А) Определить (считая от начала текста) координаты (номер строки и номер символа в строке) символов, которые задаются в исходных данных;
Б) сформировать новый текст, состоящий из строк заданного текста, в каждой из которых любой из заданных символов встречается не более одного раза.

А вот код -
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <iostream>
#include <string>
#include <fstream>
#include <set>
 
int main()
{
    setlocale( LC_ALL, ".1251" );
    std::ifstream in( "input.txt", std::ios::in );
    std::ofstream out( "output.txt", std::ios::out );
 
    char c;
    std::cout << "Введите символ: ";
    std::cin >> c;
 
    std::string s;
    unsigned int index = 0;
    
    // Читаем файл до конца по строкам
    while ( std::getline( in, s ) )
    {
        // Если есть нужный символ в строке
        if ( s.find( c ) != std::string::npos )
        {
            std::cout << index + 1 << " строка, позиции: ";
            for ( size_t i = 0; i < s.length(); i++ )
                if ( s[ i ] == c )
                    std::cout << i + 1 << " ";
            std::cout << std::endl;
        }
        // Увеличиваем индекс прочитанных строк
        index++;
    }
    in.close();
    std::set < char > charset;
 
    in.open( "input.txt" );
    while ( std::getline( in, s ) )
    {
        unsigned int i = 0;
        bool Checker( false );
 
        // Пока не конец строки...
        while ( i < s.length() && !Checker )
        {
            // Проверяем, есть ли повторные символы
            Checker = ( charset.find( s[ i ] ) != charset.end() );
            if ( !Checker )
                // Если нет, то добавляем символ к множеству
                charset.insert( s[ i ] );
            i++;
        }
        if ( !Checker )
            out << s << std::endl;
        charset.clear();
    }
        
    in.close();
    out.close();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru