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

Screamer

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

Вот код:
Код:
#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;
}
 

interacia

New member
24.01.2013
2
0
#2
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;
}
Исходный код с комментарием