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

Удаление подстрок из строки. Суммировать "вес" удаленных строк - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Антивирусы http://www.cyberforum.ru/cpp-beginners/thread519863.html
На чём кроме C и C++ пишут антивирусы?
C++ метод ньютона плиз проверьте всё ли правильно???логически??? # include <iostream> # include <windows.h> # include <conio.h> # include <stdlib.h> # include <stdio.h> # include <math.h> # include <cmath> # include <iomanip> http://www.cyberforum.ru/cpp-beginners/thread519857.html
Помогите с классами C++
Задание: Разработать классы для описанных ниже объектов. Включить в класс методы set (…), get (…), show (…). Определить другие методы. Написать программу, демонстрирующую работу с этим классом. Abiturient: Фамилия, Имя, Отчество, Адрес, Оценки. Задать проходной балл для поступления и определить, поступил ли абитуриент в ВУЗ. Программа: #include<iostream>
Перегрузка операторов С++ C++
Для строки символов реализовать операции: а) сравнение строк (операция ==); б) удаление из строки заданного символа (операция –). Кроме того, членом класса сделать функцию с именем strset() для удаления из первой строки всех символов, встречающихся во второй строке. я новичок в этой теме, вроде написала, но оно не работает. можете подправить пожалуйста? #include <iostream> #include...
C++ Считать с файла http://www.cyberforum.ru/cpp-beginners/thread519819.html
есть такая вот задачка(чистый С) #include<stdio.h> #include<stdlib.h> void main () { int a,i,S,k; FILE *f, *g, *d; f=fopen("1.txt", "r"); if(f==0) {printf("Takogo faila net!!!\n"); exit(1);}
C++ Типы векторов не одинаковы? Как добавить исключение если при вводе массива векторов тип оказались не одинаковые то ест я создал template <class T> Но при вводе не правильно ввел (допустим) как при таком условии добавить исключение через try и catch? подробнее

Показать сообщение отдельно
AncinetHero
49 / 49 / 3
Регистрация: 22.05.2011
Сообщений: 326
16.03.2012, 22:25  [ТС]     Удаление подстрок из строки. Суммировать "вес" удаленных строк
Где? Здесь обычный цикл, никаких просчетов делать не надо. Тогда задачу "найти сумму чисел в массиве" тоже динамикой можно считать

Добавлено через 8 часов 12 минут
На досуге, пожалуйста, попробуйте проверить этот кусок кода, у меня выдает ошибку в библиотеке STD. В коде ошибку не вижу

Тут C[i].first - подстрока, которую можно удалить, C[i].second - ее стоимость. i = 0..n
COMB[i].first - комбинация(идея поста №4), COMB[i].second - ее стоимость. i = 0..COMB.size()
x - строка размером l ( l=x.length() )
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
       vector < pair < string, int > > COMB;
       COMB.push_back( make_pair( "", 0 ) ); // у нас 1 пустая комбинация стоимостью 0
 
       for( i=0; i<l; i++ ){ // идем поочередно по каждому символу строки х
         int size_start = COMB.size(); // сейчас мы будем искать новые комбинации 
              //(см. пост №4) и добавлять их в конец этого же массива, 
              // и потому нужно запомнить начальную границу
 
         for( j=0; j<size_start; j++ ){ //
           COMB[j].first.push_back( X[i] ); // к каждой комбинации добавляем символ строки (за индекс отвечает первый цикл)
 
           for( k=0; k<n; k++ ){ // n - количество заданных подстрок (см. условие)
 
             int q = find( COMB[j].first.begin(), COMB[j].first.end(), C[k].first ) - COMB[j].first.begin(); 
             //ищем, есть ли в сочетании с индексом j рассматриваемая подстрока
 
             if( q < COMB[j].first.size() ){ // если есть
                 string temp = COMB[j].first;
                 temp.erase( COMB[j].first.begin() + q, COMB[j].first.begin() + q + C[k].first.length() );
             // удаляем ее
                 int w = find( COMB[j].first.begin(), COMB[j].first.end(), temp ) - COMB[j].first.begin();
            // проверяем, 
            // не пришли ли мы к такой комбинации раньше
 
                 if( w < COMB[j].first.size() ) // если не пришли
                   COMB.push_back( make_pair( temp, COMB[j].second + C[k].second ) ); // добавляем
             }
 
           }
 
         }
 
       }
Добавлено через 8 минут
Ошибку в реализации нашел .. на строке 9 нужно сделать while .. в коде до сих пор нет.

Добавлено через 3 минуты
Может кто то откомпилировать его у себя?
 
Текущее время: 21:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru