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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
John_10
0 / 0 / 0
Регистрация: 23.12.2011
Сообщений: 5
#1

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

24.12.2011, 23:17. Просмотров 415. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2011, 23:17     Строки. Проверьте код, пожалуйста.
Посмотрите здесь:

Проверьте пожалуйста код (C++) - C++
Вот я сам написал код(!)) Можете проверить: main() { printf(&quot;Content-type:text/html\n\n&quot;);

Проверьте код пожалуйста - C++
В чем ошибка? Если он в ответе выдает только: Vvedite element massiva: A= #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include...

Проверьте код пожалуйста - C++
Цель работы Создать программу, которая вычисляет значения функции заданного диапазона; необходимо организовать ввод границ интервала,...

Проверьте пожалуйста код - C++
#include &lt;iostream&gt; #include&lt;stdlib.h&gt; // в этом файле содержатся функции rand() и srand() #include&lt;time.h&gt; ...

Проверьте пожалуйста код - C++
Программа должна проверить введенную строчку на соответствие слову как паролю.Условия Не меньше 8 символов, содержание латинских букв и...

Проверьте пожалуйста код на ошибку - C++
Всем привет , программа при вводе сравнивает является ли слово Палиндромом или нет. Проблема 1)Если я введу например aabcaa то...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Wanderer1
23 / 23 / 4
Регистрация: 26.03.2011
Сообщений: 54
25.12.2011, 01:00     Строки. Проверьте код, пожалуйста. #2
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
#include <iostream>
#include <string>
#include <fstream>
#include <set>
 
int main()
{
    setlocale( LC_ALL, ".1251" );
    std::ifstream in( "input.txt" );
    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.clear();
    in.open( "input.txt" );
    if(!in){std::cout<<"Error not opened file"<<std::endl;}
    while ( std::getline( in, s ) )
    {
        unsigned int i = 0;
        bool Checker( false );
 
                // Пока не конец строки...
        while ( i < s.length() )
        {   
            // Проверяем, есть ли повторные символы            
                                // Если нет, то добавляем символ к множеству
            if(charset.find( s[ i ] ) == charset.end()){
                out<<s[i];charset.insert( s[ i ] );}
            i++;
        }
        out<<std::endl;     
        charset.clear();
    }        
    in.close();
    out.close();
    return 0;
}
John_10
0 / 0 / 0
Регистрация: 23.12.2011
Сообщений: 5
25.12.2011, 18:58  [ТС]     Строки. Проверьте код, пожалуйста. #3
Wanderer1, ошибка у Вас где-то... Программа не определяет координаты символа и неправильно создает новый текст.
Wanderer1
23 / 23 / 4
Регистрация: 26.03.2011
Сообщений: 54
25.12.2011, 19:13     Строки. Проверьте код, пожалуйста. #4
Цитата Сообщение от John_10 Посмотреть сообщение
Проверьте пожалуйста код, а то у меня не выполняется пункт "Б".
я и не проверял пункт А.
как это не правильно?
John_10
0 / 0 / 0
Регистрация: 23.12.2011
Сообщений: 5
25.12.2011, 19:27  [ТС]     Строки. Проверьте код, пожалуйста. #5
Wanderer1, ну вот, например, напишем вот такой текст -
"тест программы
программа"

И вот что получается в output файле http://img651.imageshack.us/img651/1332/98765b.png
Программа удаляет нужные символы.
Wanderer1
23 / 23 / 4
Регистрация: 26.03.2011
Сообщений: 54
25.12.2011, 19:51     Строки. Проверьте код, пожалуйста. #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
while ( std::getline( in, s ) )
    {
        bool Checker( true );
                // Если есть нужный символ в строке
        if ( s.find( c ) != std::string::npos )
        {            
            for ( size_t i = 0; i < s.length(); i++ )
                if ( s[ i ] == c ){
                    if (Checker) {std::cout << index + 1 << " строка, позиции: ";
                    Checker=false;}
                    std::cout << i + 1 << " ";}
            std::cout << std::endl;
        }
                // Увеличиваем индекс прочитанных строк
        index++;
    }
это к пункту А

Добавлено через 15 минут
C++
1
2
3
4
5
6
7
8
9
10
11
while ( std::getline( in, s ) )
{
    unsigned int i = 0;        
       if ( s.find( c ) != std::string::npos )
       {            
          for ( size_t i = 0; i < s.length(); i++ )
            if ( s[ i ] != c ){
    out<<s[i];charset.insert( s[ i ] );} 
    out<<std::endl; }       
       charset.clear();
}
это к пункту Б.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2011, 19:56     Строки. Проверьте код, пожалуйста.
Еще ссылки по теме:

Проверьте код пожалуйста на цикл в С++ - C++
Почему он не выдает мне полную сумму? Где здесь не правильно написано #include &quot;stdafx.h&quot; #include &lt;math.h&gt; #include &lt;conio.h&gt; int...

Проверьте пожалуйста код на правильность ! - C++
2. Даны два вектора и найти угол между ними и модуль векторного произведения векторов X и Y. При вычислении использовать...

Проверьте пожалуйста код на правильность ! ! ! - C++
2. Дан массив размера 5 x 6 с элементами целого типа. Написать программу для вычисления числа элементов массива кратных 3. За ранее...

проверьте, пожалуйста, мой первый код на c++ - C++
Переучиваюсь с Delphi на C++ Посмотрите, пожалуйста, корректность, стиль программирования, и т.п. с точки зрения visual c++ Если бы...


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

Или воспользуйтесь поиском по форуму:
John_10
0 / 0 / 0
Регистрация: 23.12.2011
Сообщений: 5
25.12.2011, 19:56  [ТС]     Строки. Проверьте код, пожалуйста. #7
Wanderer1, ой, да, извиняюсь... Все правильно.
И пункт А тоже работает. Спасибо большое!
Yandex
Объявления
25.12.2011, 19:56     Строки. Проверьте код, пожалуйста.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru