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

Тема в разделе "C/C++/C#", создана пользователем Screamer, 19 дек 2012.

  1. Screamer

    Screamer New Member

    Регистрация:
    19 дек 2012
    Сообщения:
    4
    Симпатии:
    0
    Здравствуйте, помогите пожалуйста с задачей

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

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

    Код (Text):
    # 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;
    }
    Заранее спасибо.
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    что не работает?
     
  3. Screamer

    Screamer New Member

    Регистрация:
    19 дек 2012
    Сообщения:
    4
    Симпатии:
    0
    Всё работает, но нужно решение задачи без указателей.
     
  4. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    совсем без них не выйдет если ты хочешь strtok использовать - оно указатель возвращает )
     
  5. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    на вот без strtok:
    Код (Text):
    #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;
    }
     
  6. Screamer

    Screamer New Member

    Регистрация:
    19 дек 2012
    Сообщения:
    4
    Симпатии:
    0
    Большое спасибо!
     
Загрузка...

Поделиться этой страницей