Member 12270086 Ответов: 1

Как объединить символы в строку


вход:
азбука
аккумулятор
баккара

ААА Ааб
AAC abc
ОЦК бак

выход:
нет
да
да

я хочу найти слова, которые присутствуют в приведенных выше словах, из двух нижних слов;первые три слова называются диктонариями, а в последних трех строках я изменю букву и проверю слово, если оно существует в словаре, а затем напечатаю "да" или "нет"; в первой строке последних трех строк первое слово - "ААА", после изменения оно становится "Ааб".aab не существует в приведенном выше словаре, поэтому no.in следующая строка " aac "становится" abc", которая является первым словом в словаре, поэтому существует печать да.....как я могу получить измененное слово из нижеприведенных трех строк..как "bac " от"bcc bac".- помогите, пожалуйста...

Что я уже пробовал:

#include <iostream>
#include
#define pii pair<int,int>
using namespace std;

int main()
{
    map<string,int>m;
    string s;
    while(cin>>s)
    {
        if(s=="--")
            break;
        m[s]++;
    }
    getline(cin,s);
    while(getline(cin,s))
    {
        int len=s.size();
        int check=0;
       size_t pos;

       pos=s.find(" ");
       string str=s.substr(pos);

      if(m.find(str)==m.end())
      cout<<"No\n";
      else
        cout<<"Yes\n";
   }
}

1 Ответов

Рейтинг:
2

Patrice T

Вы должны научиться использовать отладчик как можно скорее. Вместо того чтобы гадать, что делает ваш код, пришло время увидеть, как он выполняется, и убедиться, что он делает то, что вы ожидаете.

Отладчик позволяет вам следить за выполнением строка за строкой, проверять переменные, и вы увидите, что есть точка, в которой он перестает делать то, что вы ожидаете.
Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

getline(cin,s);
while(getline(cin,s))

Первая строка бесполезна, если вы не хотите пропустить первую строку.

В чем именно заключается проблема в коде?