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

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

Войти
Регистрация
Восстановить пароль
 
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
#1

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

17.11.2011, 20:18. Просмотров 740. Ответов 11
Метки нет (Все метки)

Доброго вечера.
Пытаюсь написать программу выводящую из тхт. фаила все предложения начинающиеся с вводимой буквы.
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<<" Нет таковых";}
 
}
Работа кода не корректна.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2011, 20:18
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Работа со строками,поиск предложений. (C++):

Работа со строками (подсчитать количество предложений) - C++
в введенном с клавиатуры тексте подсчитать количество предложений(конец предложения обозначается . ! ?) в которые входит заданное с...

Работа со строками, поиск, запись - C++
Дорогие друзья, пишу программу. При написании возникли проблемы, а точнее столь слабые познания в с++. Имеем .xml файл вида: ...

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

Поиск английских гласных в указанном количестве предложений - C++
Здравствуйте. Дано количество предложений i и сами предложения. Требуется в каждом найти количество всех гласных букв. Код написал, но...

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

Работа со строками - C++
Подсчитать количество вхождений слова «мама» в строку и вывести номера первых позиций этих вхождений. Если этого слова в строке нет, то...

11
go
Эксперт С++
3587 / 1367 / 130
Регистрация: 16.04.2009
Сообщений: 4,527
17.11.2011, 20:21 #2
Цитата Сообщение от scofielcl Посмотреть сообщение
if(strlen(word)!= 2){cout<<" Буква не заглавная! "<<endl;}
Почему?

Добавлено через 33 секунды
Цитата Сообщение от scofielcl Посмотреть сообщение
cout <<"Вводим букву с которой начнем искать слово,заглавную буквуВ: ";
* * cin >> word;
так буква это просто
C++
1
char c;
0
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
17.11.2011, 20:33  [ТС] #3
По моему размер русской буквы (заглавной) равен 2.потому такая проверка,
Как же организовать правильную проверку?
0
go
Эксперт С++
3587 / 1367 / 130
Регистрация: 16.04.2009
Сообщений: 4,527
17.11.2011, 20:36 #4
Цитата Сообщение от scofielcl Посмотреть сообщение
По моему размер русской буквы (заглавной) равен 2
Какой размер? (он одинаков, если считать в байтах, это символ)
strlen (char *str); - возвращает длину строки.
0
AvengerAlive
5 / 5 / 0
Регистрация: 30.07.2011
Сообщений: 257
17.11.2011, 20:39 #5
scofielcl, что вы делаете? Как заглавная буква читается как слово длиной 2??? Чем заглавная буква отличается от обычной что у неё длина больше? Используйте просто символ. Можно использовать библиотечную функцию на проверку заглавности или же просто создать массив заглавных букв и там проверять.
0
go
Эксперт С++
3587 / 1367 / 130
Регистрация: 16.04.2009
Сообщений: 4,527
17.11.2011, 20:43 #6
Цитата Сообщение от AvengerAlive Посмотреть сообщение
Можно использовать библиотечную функцию на проверку заглавности или же просто создать массив заглавных букв и там проверять.
Просто
C
1
 if ( (c>=65) && (c<=90) )
0
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
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<<" Нет таковых";}
 
}
0
AvengerAlive
5 / 5 / 0
Регистрация: 30.07.2011
Сообщений: 257
17.11.2011, 20:53 #8
scofielcl, используйте стандартный GetWord, так быстрее будет...
0
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
17.11.2011, 21:02  [ТС] #9
Сегодня мне не разобрать что такое getwordю
0
go
Эксперт С++
3587 / 1367 / 130
Регистрация: 16.04.2009
Сообщений: 4,527
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);
1
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
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*)
0
go
Эксперт С++
3587 / 1367 / 130
Регистрация: 16.04.2009
Сообщений: 4,527
17.11.2011, 22:00 #12
Цитата Сообщение от scofielcl Посмотреть сообщение
к тому же сhar c ,как правильно оформить его задание ,чтоб strstr работала с ним.
C
1
2
char *cc="!";
strstr (VashaStroka,cc);
1
17.11.2011, 22:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2011, 22:00
Привет! Вот еще темы с ответами:

Работа со строками - C++
Прошу помочь написать код для двух программ: 1) Написать программу подсчета числа слов в строке *) 2) написать программу подсчета букв...

Работа со строками - C++
Дан набор слов, разделенных точкой с запятой &quot;;&quot;. Набор заканчивается двоеточием &quot;:&quot;. Определить, сколько в нем слов, заканчивающихся...

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

Работа со строками C++ - C++
Решил посвятить этой проблеме отдельную тему. В попытке написать ответ к этой задаче на С++ запнулся на работе со строками. Собственно...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

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