1String присоединяется к концу другого C ++ - PullRequest
0 голосов
/ 08 марта 2020

Мне нужно написать функцию, которая возвращает «1», если в строке 3 или более одинаковых буквы в двух строках.

Функция, которую я написал, возвращает «1», несмотря ни на что.

Я попытался распечатать, какие буквы он находит аналогичными, и обнаружил, что компилятор считает, что после окончания первого из них он совпадает со второй строкой. Если я пытаюсь распечатать str1, вывод "qwe". Но если я напечатаю str1 [4], вывод будет "u"

#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int Similar(char* str1, char* str2) {
  int i = 0, j = 0;
  for (i = 0; i < strlen(str1) + strlen(str2); i++) {
    for (j = 0; j < strlen(str1) + strlen(str2); j++) {
      if ((str1[i] == str2[j]) && (str1[i + 1] == str2[j + 1]) &&
          (str1[i + 2] == str2[j + 2])) {
        cout << str1[i] << " <1  2>" << str2[j]
             << endl;  // this is just for checking
        cout << str1[i + 1] << " <1  2>" << str2[j + 1]
             << endl;  // this is just for checking
        cout << str1[i + 2] << " <1  2>" << str2[j + 2]
             << endl;  // this is just for checking
        cout << i << " <1  2>" << j << endl;  // this is just for checking
        return 1;
      }
    }
  }
  return 0;
}

int main() {
  int size = 256;
  char str1[size] = {"qwe"}, str2[size] = {"uilo"};
  cout << Similar(str1, str2) << endl;
}

Вывод:

u<1   2>u

i<1   2>l

l<1   2>l

4<1   2>0

1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...