Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Dasha-
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 5
#1

поиск слова в строке - C++

09.11.2013, 16:37. Просмотров 991. Ответов 4
Метки нет (Все метки)

Добрый день! Помогите найти ошибку.
Задание длина файла 1000 символов (длина строки 70 символов). Данные из файла занести в структуру с полем строка. Определить порядковый номер заданного слова в каждом предложении текста. По нажатию клавиши поочередно выделять каждое предложение текста, а в выделенном предложении - заданное слово.
Не работает функция поиска. И не знаю как номер слова найти, если строку посимвольно считываю.
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
67
68
69
70
71
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <fstream>
#include <string.h>
 
using namespace std;
 
struct file_res
   {  char stroka[70]; //Переменная в которой будет содержимое файла
   };
 
char slovo[15]; //Слово вводимое с клавиатуры
   
char* findword(char* str1, char* str2);
 
 
char* findword(char* str1, char* str2)
{    for (int i = 0; str1[i] != '\0'; i++)
        if (isspace(str1[i])) {//перевірка параметру чи є він символом пробілу.
            char word[256] = "\0", pchars[256] = ".,!";
            for (int n = i+1, k = 0; !isspace(str1[n]) && str1[n] != '\0'; n++)
                if (!strchr(pchars,str1[n])) word[k++] = str1[n];
 
            char* buf = NULL; 
            if ((buf = strstr(word, str2)) != NULL) 
                return buf;
         }
    return NULL;
}
 
 
int main()
{
    int n;
    setlocale( LC_ALL,"RUS");
    char* buf = NULL;
     int size=0;
     file_res F1[1000]; //F1 - Масив структур типу file_res в 999 элементов
     int i=0;
     ifstream myfile("text.dat");
     if(myfile == NULL ) {//Проверка есть ли файл
        cout<<"Файл не знайдено"<<endl;
     return 1;  
     }   
     
     while (!myfile.eof())//Пока не кінець файлу
     {
      myfile.getline(F1[i].stroka,70); //getline-взяти рядок з файлу і занести у структуру
      cout<<F1[i].stroka<<endl; //вивести рядок на екран
      i++;
     }
     size=i-1; //size розмір масиву
     
     cout<<endl<<"Введiть слово: ";
     cin>>slovo;
     
     for(int j = 0; j < size; j++){
       if (findword(F1[j].stroka, slovo)!=NULL) {
        cout<<endl<<" В рядку " <<F1[j].stroka<<endl<<" знайдено слово \'"
              <<buf<<"\' пiд номером "<<j<<endl;
       }
       cout << "Press any key to continue . . ."<<endl;
       getch();
     }
     
     myfile.close();
     cout << "Press any key to exit . . ."<<endl;
     getch();
     return 0;
}
Содержимое файла text.dat
The so-called analytical capabilities of our mind are difficult of a.
Cess an analysis We judge about them only on results We know among o.
Her, that for a man, especially gifted The gift of analysis serves a.
The source of the most living pleasure. Like that as an athlete is p.
Oud of the force and adroitness. An analyst is glad any possibility .
O make clear something or extricate. Every, even and simple task, ca.
Ving sparks from his talent. He adores riddles, rebuses and cryptogr.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2013, 16:37     поиск слова в строке
Посмотрите здесь:

Поиск слова в строке - C++
Реализовать и использовать функцию поиска слова в строке: int searchWord( const char str, const char word); Входные данные: str...

поиск слова в строке - C++
вот есть программка, которая должна искать слово word_r (отдельный файл) в строке rus (отедельный файл) и в случае нахождения выводить на...

Поиск слова в строке - C++
Исходя из сабжа - тысячу раз разжеванная тема, но у меня немного другой вопрос. string surname; while (getline(f, S)){ if...

Поиск слова в строке - C++
if(name.Pos(&quot;Ïðîãðàììèðîâàíèå&quot;) == 1) price *= 2; если слово Программирование в начале строки то price *= 2 подскажите а как...

поиск слова в строке - C++
Всем привет! задача нужно найти слово в строке например: char str1=&quot;hello world&quot;; char str2=&quot;world&quot;; if(str1==str2) ...

Поиск слова в строке - C++
Есть переменная search стринг типа, в которую введено с клавы слово. Нужно найти это слово в текстовом файле и вывести полностью строку, в...

Функция: поиск слова в строке - C++
нужно написать свою ф-цию, которая проверяет, есть ли какое-то слово в строке! возвращает позицию слова, ести оно есть!

Поиск и замена слова в строке - C++
Добрый вечер. Помогите написать программу которая ищет в введенной строке одинаковые слова и меняет на слово введенное с клавиатуры (любых...

Поиск слова в строке без функций - C++
Задание найти слово в заданной строке, если слово есть то вывести индекс, с которого начин слово. все темы которые я смотрела не...

Реализовать поиск заданного слова в строке - C++
наверное, уже надоел, но я ввел в строки данные. теперь при поиске соответствий значение поиска является истинным при нахождении любого...

C++ поиск слова в строке, игнорируя остальные - C++
Поиск слова в строке, игнорируя остальные дано: string text = &quot;Hello myw.o.r.,ld!&quot;; string word = &quot;world&quot;; //...

Поиск слова в массиве символов (строке) - C++
Вроде правильно все а не работает. В чем причина? #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;Windows.h&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
09.11.2013, 16:59     поиск слова в строке #2
strstr, не?
Dasha-
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 5
09.11.2013, 17:12  [ТС]     поиск слова в строке #3
Спасибо, так на много проще, а номер слова в строке как вывести?

C++
1
2
3
4
5
6
7
for(int j = 0; j < size; j++){
       if (strstr(F1[j].stroka, slovo)!=NULL) {
        cout<<endl<<" В рядку " <<F1[j].stroka<<endl<<" знайдено слово \'" <<slovo<<"\' на позиції "<<j<<endl;
       }
       cout << "Press any key to continue . . ."<<endl;
       getch();
     }
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
09.11.2013, 17:55     поиск слова в строке #4
strstr возвращает указатель на позицию слова в строке.
Dasha-
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 5
09.11.2013, 21:55  [ТС]     поиск слова в строке #5
Как его вывести?

Добавлено через 22 минуты
указатель на подстроку, если нашёлся вывести разницу указателей (позиция в строке), в строке 70 символов, а какая должна быть переменная для указателя и как ее использовать?

Добавлено через 2 часа 18 минут
C++
1
2
3
4
5
6
7
8
9
     for(int j = 0; j < size; j++){
       if (strstr(F1[j].stroka, slovo)!=NULL) {
      char*  p=strstr(F1[j].stroka, slovo);
        cout<<endl<<" В строке " <<F1[j].stroka<<endl<<" слово \'"
              <<slovo<<"\' под номером "<<p<<endl; //выводит буквы, а если написать 70-*p тоже не работает 
         cout << "Press any key to continue . . ."<<endl;
         getch();
       }
     }
Люди помогите, нужно сделать до завтра
Yandex
Объявления
09.11.2013, 21:55     поиск слова в строке
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru