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

Работа со строками,поиск предложений. - C++

Восстановить пароль Регистрация
 
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 143
17.11.2011, 20:18     Работа со строками,поиск предложений. #1
Доброго вечера.
Пытаюсь написать программу выводящую из тхт. фаила все предложения начинающиеся с вводимой буквы.
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
#include <iostream>
#include <string.h>
#include <fstream>
#include <stdio.h>
using namespace std;
 
int main ()
{
    const int len = 81;
    char word[len],line[len];
    char delims[]=".?!";
    int s;//длина строки
    bool flab=false;
    ifstream fin("text.txt");
    if(!fin) {cout<<"error";return 1;}
    
    cout <<"Вводим букву с которой начнем искать слово,заглавную буквуВ: ";
    cin >> word;
    s=strlen(word);
    cout<<"Длина строки=="<< s<<endl;
    if(strlen(word)!= 2){cout<<" Буква не заглавная! "<<endl;}
    char *token;
    while (fin.getline(line,len)){
        token=strtok(line,delims);
        while (token != NULL){
            if(!strstr(token,word)) {flab=true;cout<<" "<< line;}
            token=strtok(NULL,delims);
        }
    }
    if (flab=false){cout<<" Нет таковых";}
 
}
Работа кода не корректна.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2011, 20:18     Работа со строками,поиск предложений.
Посмотрите здесь:

Работа со строками в C++ C++
C++ Работа с строками
C++ работа со строками
C++ Работа со строками, поиск нужных элементов и их вывод
Работа со строками (подсчитать количество предложений) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
17.11.2011, 20:21     Работа со строками,поиск предложений. #2
Цитата Сообщение от scofielcl Посмотреть сообщение
if(strlen(word)!= 2){cout<<" Буква не заглавная! "<<endl;}
Почему?

Добавлено через 33 секунды
Цитата Сообщение от scofielcl Посмотреть сообщение
cout <<"Вводим букву с которой начнем искать слово,заглавную буквуВ: ";
* * cin >> word;
так буква это просто
C++
1
char c;
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 143
17.11.2011, 20:33  [ТС]     Работа со строками,поиск предложений. #3
По моему размер русской буквы (заглавной) равен 2.потому такая проверка,
Как же организовать правильную проверку?
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
17.11.2011, 20:36     Работа со строками,поиск предложений. #4
Цитата Сообщение от scofielcl Посмотреть сообщение
По моему размер русской буквы (заглавной) равен 2
Какой размер? (он одинаков, если считать в байтах, это символ)
strlen (char *str); - возвращает длину строки.
AvengerAlive
5 / 5 / 0
Регистрация: 30.07.2011
Сообщений: 257
17.11.2011, 20:39     Работа со строками,поиск предложений. #5
scofielcl, что вы делаете? Как заглавная буква читается как слово длиной 2??? Чем заглавная буква отличается от обычной что у неё длина больше? Используйте просто символ. Можно использовать библиотечную функцию на проверку заглавности или же просто создать массив заглавных букв и там проверять.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
17.11.2011, 20:43     Работа со строками,поиск предложений. #6
Цитата Сообщение от AvengerAlive Посмотреть сообщение
Можно использовать библиотечную функцию на проверку заглавности или же просто создать массив заглавных букв и там проверять.
Просто
C
1
 if ( (c>=65) && (c<=90) )
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 143
17.11.2011, 20:44  [ТС]     Работа со строками,поиск предложений. #7
Рабочий код,но предложение выводиться без знака на конце ,для string я бы вывел последний символ предложения (. ? ! ) через at ,как сделать таковое в 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
#include <iostream>
#include <string.h>
#include <fstream>
using namespace std;
 
int main ()
{
    const int len = 81;
    char word[len],line[len];
    char delims[]=".?!";
    int s;//длина строки
    bool flab=false;
    ifstream fin("text.txt");
    if(!fin) {cout<<"error";return 1;}
    
    cout <<"Вводим букву с которой начнем искать слово,заглавную буквуВ: ";
    cin >> word;
    s=strlen(word);
 
    char *token;
    while (fin.getline(line,len)){
        token=strtok(line,delims);
        while (token != NULL){
            if(!strstr(token,word)) {flab=true;cout<<" "<< line;}
            token=strtok(NULL,delims);
        }
    }
    if (flab==false){cout<<" Нет таковых";}
 
}
AvengerAlive
5 / 5 / 0
Регистрация: 30.07.2011
Сообщений: 257
17.11.2011, 20:53     Работа со строками,поиск предложений. #8
scofielcl, используйте стандартный GetWord, так быстрее будет...
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 143
17.11.2011, 21:02  [ТС]     Работа со строками,поиск предложений. #9
Сегодня мне не разобрать что такое getwordю
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
17.11.2011, 21:10     Работа со строками,поиск предложений. #10
Цитата Сообщение от scofielcl Посмотреть сообщение
как сделать таковое в char
первый способ
C
1
2
char c='!';
pritntf ("%c",c);
второй способ
C
1
printf ("!");
Добавлено через 4 минуты
третий способ
C
1
2
    char *cc="!";
    printf ("%c",*cc);
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 143
17.11.2011, 21:21  [ТС]     Работа со строками,поиск предложений. #11
Не понима. как это связано ? Нужно вывести символ ,который после cтроки token ,там или . или ? или ! .
к тому же сhar c ,как правильно оформить его задание ,чтоб strstr работала с ним.
C++
1
2
main.cpp:30: error: invalid conversion from ‘char’ to ‘const char*’
main.cpp:30: error:   initializing argument 2 of ‘char* strstr(char*, const char*)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2011, 22:00     Работа со строками,поиск предложений.
Еще ссылки по теме:

Работа со строками, поиск, запись C++
Работа со строками C++
C++ Работа со строками

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

Или воспользуйтесь поиском по форуму:
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
17.11.2011, 22:00     Работа со строками,поиск предложений. #12
Цитата Сообщение от scofielcl Посмотреть сообщение
к тому же сhar c ,как правильно оформить его задание ,чтоб strstr работала с ним.
C
1
2
char *cc="!";
strstr (VashaStroka,cc);
Yandex
Объявления
17.11.2011, 22:00     Работа со строками,поиск предложений.
Ответ Создать тему
Опции темы

Текущее время: 15:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru