2013-06-12 2 views
0

Что не так в этом коде? Он получает две строки и определяет, содержится ли строка 1 в строке 2. Иногда это работает.Строка одна неузнаваемо найдена в строке 2

#include <iostream> 
using namespace std; 

int main() 
{ 
    char a[1000], b[1000]; 
    int k = -1; 
    int salir = 0; 
    cin >> a; 
    cin >> b; 

    for (int i = 0; i < strlen(a); i++) 
    { 
     for (int j = k + 1; j < strlen(b); j++) 
     { 
      if (a[i] = b[j]) 
      { 
       k = j; 
       break; 
      } 
     } 
     if (a[i] = b[k + 1]) 
     { 
      salir = 0; 
     } 
     else 
     { 
      salir = 1; 
      break; 
     } 

    } 

    if (salir == 0) 
     cout << "Si esta contenido" << endl; 
    else 
    { 
     cout << "No esta contenido" << endl; 
    } 

    system("pause"); 
} 
+2

Что плохого в ['std :: str :: find'] (http://en.cppreference.com/w/cpp/string/basic_string/find) и [' strstr'] (http: // en.cppreference.com/w/cpp/string/byte/strstr)? –

ответ

5

Одна ошибка:

if(a[i]=b[j]){ 
    k=j; 
    break; 
} 

должно быть:

if(a[i] == b[j]){ 
     //^^logical comparison, not assignment 
    k=j; 
    break; 
    } 

Похожие ошибки могут быть найдены в других местах.

+0

Jajaja, но если я это сделаю, программа не работает хорошо! –

+2

@SergioOvalle Какие ошибки вы получаете? Это помогает нам найти проблему, которую вы знаете. – 0x499602D2

+0

И лучший совет для этой ошибки - позволить вашему компилятору найти их для вас, включив предупреждения. – chris

Смежные вопросы