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

Помогите С Лабой

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

Screamer

Здравствуйте, помогите пожалуйста с задачей

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

Есть пример этой же задачи с пойнтерами но нужно написать код используя только функций strtok и strlen

Код:
# include <iostream.h>
# include <conio.h>
# include <stdio.h>
# include <stdlib.h>
#include <string.h>


int main()
{
system("cls");

char str1[60], str2[60];
cout<<"Введите первое предложение "<<endl;
cin.getline(str1,60);
cout<<"Введите второе предложение "<<endl;
cin.getline(str2,60);

char *t, *ps, i = 0, j = 0;
int k = 0;
cout << "1-> " << str1 << endl<< "2-> "<<str2 << endl<<endl;

t = strtok(str1," ");

while(t!=NULL)
{
ps = strstr(str2,t);

if(ps != NULL) 
cout << "\n"<< t <<" ( " <<strlen(t)<< " ) ";
t = strtok(NULL, " ");
k++;
}

getch();
return 0;
}

Заранее спасибо.
 
R

rrrFer

на вот без strtok:
Код:
#include <iostream>
#include <cstring>
int main() {
char str1[60], str2[60];
std::cout << "Введите первое предложение " << std::endl;
std::cin.getline(str1, 60);
std::cout << "Введите второе предложение " << std::endl;
std::cin.getline(str2, 60);

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;
}
 
Мы в соцсетях:

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