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

Выяснить, можно ли строку st2 получить из строки st1 путем вычеркивания некоторых символов - C++

Восстановить пароль Регистрация
 
JoHarvelle
0 / 0 / 0
Регистрация: 08.12.2013
Сообщений: 21
13.12.2013, 12:53     Выяснить, можно ли строку st2 получить из строки st1 путем вычеркивания некоторых символов #1
Даны две строки st1 и st2. Нужно выяснить, можно ли строку st2 получить из строки st1 путем вычеркивания некоторых символов.

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
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
int main ()
{
 int i, j;
 char s1[256], s2[256];
 cout<<"2 stroki";
 cout<<"\n";
 gets (s1);
 gets (s2);
 for (i=0; i<strlen(s2); i++)
 {
   for (j=0; j<strlen(s1); j++)
    {
      if (s1[j]==s2[i])
       {
     i=j;
    break;
       }
     }
     if (i!=j) {
      cout<<"FAIL"<<endl;  
      cout<<"\n";
      return 0;
     }
   }
   cout<<"OK"; 
   cout<<"\n";
   return 0;
  fflush (stdin);
 }
Программа работает, НО не для всех случаев
Например:
1 строка: 123_45__67_8
2 строка: 34_5
Подскажите, пожалуйста, как подправить программу, чтобы она правильно работала для этого случая с пробелами
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2013, 12:53     Выяснить, можно ли строку st2 получить из строки st1 путем вычеркивания некоторых символов
Посмотрите здесь:

C++ Выяснить, можно ли из строки st1 сделать строку st2 путем перестановки символов
C++ Требуется вычислить сколькими способами можно получить строку В из строки А
Даны три строки. Определить, можно ли из символов первых двух строк получить третью строку. C++
Можно ли строку получить из другой строки путем вычеркивания некоторых символов? C++
C++ Получить 2 строку из 1 путем вычеркивания символов
C++ Получить матрицу, путем вычеркивания с данной матрицы, Н-ой строки и М-го столбика
Выяснить, можно ли из строки str1 получить строку str2 путем перестановки символов C++
Найти сколько различных трехзначных чисел можно получить из заданного числа n путем вычеркивания цифр C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6160 / 2889 / 282
Регистрация: 04.12.2011
Сообщений: 7,689
Записей в блоге: 3
14.12.2013, 00:00     Выяснить, можно ли строку st2 получить из строки st1 путем вычеркивания некоторых символов #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
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
int main(){
SetConsoleCP (1251); SetConsoleOutputCP (1251);
string targe_str = "123_45__67_8";
string candidate_str = "3_5";// эту найдёт
 
//string candidate_str = "34_5";// эту НЕ найдёт (а-ну, попробуйте, что-то вычеркнуть из targe_str
// и получить 34_5, подчёркивания между 4 и 5 не удастся получить никакими ухищрениями))
 
//идея:
//ищем по-символьно каждый символ из candidate_str в копии targe_str и убеждаемся, что 
// 1. Он там есть
// 
// 2. Номер каждой следующей находки больше номера предыдущей (решаем инициализацией нач. зн. счётчика)
int found_pos = 0;
 
int is_present;
for( size_t i = 0; i < candidate_str.size(); ++i ){
is_present = 0;
for( size_t j = found_pos; j < targe_str.size(); ++j ){
 
    if(targe_str[j] == candidate_str[i]){
 
        found_pos = j+1;
is_present = 1;
break;
    }
    }
if(!is_present) break;
}
cout<<endl;
if(is_present) cout << "Есть все" << endl;
else
cout << "Что-то не так" << endl;
 
cout<<endl;
system("pause");
return 0;
}
Yandex
Объявления
14.12.2013, 00:00     Выяснить, можно ли строку st2 получить из строки st1 путем вычеркивания некоторых символов
Ответ Создать тему
Опции темы

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