• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Помогите С Измерением Длинны Слов.

  • Автор темы Screamer
  • Дата начала
S

Screamer

Здравствуйте, есть программа которая работает не совсем правильно. Задача в том что бы в двух данных предложениях измерить длину одинаковых слов если такие имеются. Проблема в том что если пишу оба предложения одинаковые считает всё как надо а если изменить порядок слов то не считает. Заранее спасибо.

Вот код:
Код:
#include <iostream>
#include <cstring>
int main() {
char str1[100], str2[100];
std::cout << "Vvedite pervoe predlojenie " << std::endl;
std::cin.getline(str1, 100);
std::cout << "Vvedite vtoroe predlojenie " << std::endl;
std::cin.getline(str2, 100);

int i, j;
std::cout << "1-> " << str1 << std::endl 
<< "2-> " << str2 << std::endl;
i = j = 0;
while (true) {
int t = strstr(&str1[i], " ") - &str1[i];
if (t <= 0) break;
str1[t + i] = '\0';
j = strstr(str2, &str1[i]) - str2;
if (j >= 0)
std::cout << "\n" << &str1[i] << " ( " << strlen(&str1[i]) << " ) ";
i = t + 1;
}

std::cin.get(), std::cin.get();
return 0;
}
 
I

interacia

C++:
#include <iostream>
#include <cstring>
int main() {
char str1[100], str2[100];
char slovo1[100], slovo2[100];
std::cout << "Vvedite pervoe predlojenie " << std::endl;
std::cin.getline(str1, 100,'\n');
std::cout << "Vvedite vtoroe predlojenie " << std::endl;
std::cin.getline(str2, 100,'\n');
int Dlina; 
int n,m;
n=0; m=0;
int i=0;
int j=0;
Dlina=0;
if ((str1[i]!=' ')&&(str1[i]!='\0')) 
{slovo1[n]=str1[i]; n++;} 
while (str1[i]!='\0') 
{ i++;
if ((str1[i]!=' ')&&(str1[i]!='\0'))
{slovo1[n]=str1[i]; n++;} 
if (((str1[i]==' ')||(str1[i]=='\0'))&&(str1[i-1]!=' ')) 
{ slovo1[n]='\0';
n=0; 
j=0;
m=0;
if ((str2[j]!=' ')&&(str2[j]!='\0')) 
{slovo2[m]=str2[j]; m++;}
while (str2[j]!='\0') 
{j++;
if ((str2[j]!=' ')&&(str2[j]!='\0')) 
{slovo2[m]=str2[j]; m++;} 
if (((str2[j]==' ')||(str2[j]=='\0'))&&(str2[j-1]!=' '))
{ slovo2[m]='\0';
bool ravno;
ravno=true;
int n1=0;
int m1=0;
while((slovo1[n1]!='\0')&&(slovo2[m1]!='\0'))
{ if (slovo1[n1]!=slovo2[m1])ravno=false;
n1++; m1++;
}
if (ravno){ 
Dlina+=m; 
std::cout << slovo1 << '\n'; 
}
m=0; 
}
}
}
}
std::cout << "Otvet " << Dlina;
getchar();
return 0;
}
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!