Форум программистов, компьютерный форум, киберфорум
Наши страницы

Поиск слов в файле - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Пересечение множеств http://www.cyberforum.ru/cpp-beginners/thread151307.html
Помогите исправить программу для нахождения пересечений множеств. вот мой код. Но он слишком долгий, хотя алгоритм верен. Может здесь что то лишнее. #include <iostream> using namespace std; ...
C++ Найти произведение элементов массива, расположенных между максимальным и минимальным элементами в одномерном массиве,состоящем из n вещественных элементов,вычислить: 1)сумму отрицательных элементов массива 2)произведение элементов массива,расположенных между максимальным и минимальным... http://www.cyberforum.ru/cpp-beginners/thread151289.html
C++ Указатели и ссылки. Как сохранить адрес?
Небольшая путаница с указателями и ссылками. Допустим,есть некий указатель p1, который указывает на экземпляр класса a1 в динамической памяти. В следующей инструкции S (обозначим её так) в...
Графы!!!!..Нужно очень... C++
Очень нужна помощь с решением задач на Си!!!! Помогите кто сможет) Задачи из теории графов запрограммировать на языке Си! Задача 1. Для неориентированного графа определить вершины с максимальной...
C++ Готовый код.Подскажите,как ограничить ввод строки. http://www.cyberforum.ru/cpp-beginners/thread151253.html
Как правильно ограничить строку при помощи strncpy,"вводимую" сразу в переменную структуры? #include <cstdlib> #include <iostream> #include <new> #include <cstring> struct chaff { char...
C++ Целые и дробные числа на языке С как делить и умножать целое число и дробное. например 2 * 3,5 . и 2/3,5. интересует именно запись в обьявлении переменных.какой тип данных нужно указывать в результате,если одно число... подробнее

Показать сообщение отдельно
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3

Поиск слов в файле - C++

03.07.2010, 03:36. Просмотров 1419. Ответов 19
Метки (Все метки)

Попытался сделать вот эту: Поиск слов в файле

Программу... Сложность ее по-моему мнению, в том, что поиск подстроки должен быть независим от регистра. Поправьте, если я не прав, ибо с регистром это абсолютно без проблем. Но вот я попытался сделать без регистра. Навертел жуткий велосипед. Это не работа с файлом. Просто заготовка. Но я запутался по полной программе. Сижу уже три часа и тупо не могу ее написать. Вот что вышло, за код не ругать, пытался всеми доступными средствами. Да кстати. Обязательно через char.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
#include <cstdlib>
#include <cstring>
int main()
{
    char str[100];
    std::cout<<"Enter string\n";
    std::cin.getline(str, 100);
    char str2[100];
    std::cout<<"Enter substring\n";
    std::cin.getline(str2,100);
    char str3[100];
    strcpy(str3, str);
    char *ptr;
    char* TempPtr;
    ptr=strtok(str, ".");
    TempPtr=strtok(str3," ");
    while (1)
    {
        if(!stricmp(TempPtr,str2))
        {
            std::cout<<ptr<<'\n';
            break;
        }
        if (strchr(TempPtr,'.')!=0)
            break;
        if(strchr(TempPtr,'.')==0)
            TempPtr=strtok(0, " ");
    }
    while(ptr)
    {
        ptr=strtok(0,".");
        if (ptr)
            while(1)
                {
                    TempPtr=strtok(ptr, " ");
                    if (TempPtr)
                    {
                        if(!stricmp(TempPtr,str2))
                            {
                                std::cout<<ptr<<'\n';
                                break;
                            }
                        if (strchr(TempPtr,'.')!=0)
                            break;
                        if(TempPtr==ptr)
                            break;
                        //if(strchr(TempPtr,'.')==0)
                        //  TempPtr=strtok(0, " ");
                /*      if(TempPtr)
                            {
                                if(!stricmp(TempPtr,str2))
                                    {
                                        std::cout<<ptr<<'\n';
                                        break;
                                    }
                            }
                        else
                            break;*/
                    }
                    else
                        break;
                }
    }
    return 0;
}
Добавлено через 24 минуты
Вот с учетом регистра, а как все же без него?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <cstring>
#include <cstdlib>
int main()
{
    char Str[100];
    std::cout<<"Enter string\n";
    std::cin.getline(Str, 100);
    char SubStr[100];
    std::cout<<"Enter substring\n";
    std::cin.getline(SubStr, 100);
    char*Ptr;
    Ptr=strtok(Str, ".");
    if(strstr(Ptr, SubStr)!=0)
        std::cout<<Ptr<<'\n';
    while (Ptr)
    {
        Ptr=strtok(0, ".");
        if (Ptr)
        {
            if (strstr(Ptr, SubStr)!=0)
                std::cout<<Ptr<<'\n';
        }
    }
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru