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

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

  1. Screamer

    Screamer New Member

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

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

    Есть пример этой же задачи с пойнтерами но нужно написать код используя только функций 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;
    }
    Заранее спасибо.
     
  2. rrrFer

    rrrFer Гость

    Репутация:
    0
    что не работает?
     
  3. Screamer

    Screamer New Member

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

    rrrFer Гость

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

    rrrFer Гость

    Репутация:
    0
    на вот без 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;
    }
     
Загрузка...

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