|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.05.2011, 15:17 | #1 |
Регистрация: 05.12.2010
Сообщений: 6
|
си++, работа со строками
суть: написать программу которая считывает текст из файла и выводит на экран только предложения содержащие введенное с клавиатуры слово.
вопрос: программа работает только если в конце предложения стоит точка, как её подправить, чтобы она шла и на вопросительные и восклицательные предложения? Код:
|
08.05.2011, 15:32 | #2 |
Регистрация: 11.04.2011
Сообщений: 7
|
#include <string>
#include <iostream> #include <vector> using namespace std; string Stroka () { char S[200]; cin.getline (S, 200); string Str (S); return Str; } string V (string S) { int i=0; string S2,S3="?!,.:;"; for (int c=0; c<S3.size();c++) {i=0; while ( i>-1) { i=S.find(S3[c]); if (i>-1) { S.erase(i,1); S.insert(i," "); } } } int f=0; while (f<S.size()) { if (S[f]==' ') { if (S[f+1]==' ') S.erase(f,1); else f++; } else f++; } return S; } vector <string> Vect (string S) { vector <string> Result; S=V(S); cout<< S<<endl; int i=0; string S2; while ( i>-1) { i=S.find(" "); S2=S.substr(0,i); Result.push_back(S2); S.erase(0,i+1); } return Result; } void Vivod ( vector <string> V1) // функция для вывода вектора { for (vector<string>::iterator i=V1.begin(); i!=V1.end(); i++) //вывод в строку { cout<<*i<<endl; } cout<<endl; } int Number ( vector <string> V, string Slovo) { int Pos; int i; for(i=0;i<V.size();i++) { Pos=V[i].find(Slovo); if (Pos>-1) return i+1; } return 0; } vector <string> Bukva (vector <string> S) { vector <string> V; for (int i=0;i<S.size();i++) { int c=S[i].size()-1; if (S[i][0]==S[i][c]) V.push_back(S[i]); } return V; } int main () { setlocale(0,"Rus"); string S=Stroka(); cout << S << endl << S.size()<<endl; vector <string> V1; V1=Vect(S); Vivod(V1); cout<< "enter slovo "<<endl; cin>>S; int Num = Number(V1,S); if (Num==0) cout<<"Нет такого слова "<<endl; else cout<< Num<<endl; vector <string> V2; V2=Bukva(V1); if (V2.size()==0) cout<<"Нет таких слов "<<endl; else { Vivod(V2); cout<<V2.size()<<endl; } system ("pause"); return 0; } // Вот тебе готовая прога=) разбирай (только отформатировать надо немного) |
08.05.2011, 15:38 | #3 |
Регистрация: 05.12.2010
Сообщений: 6
|
это сильно, спасибо
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с матрицами (норма матрицы, работа со строками) | Neitrosha | Помощь студентам | 1 | 26.11.2010 20:19 |
работа со строками | DeDoK | Общие вопросы Delphi | 2 | 02.02.2010 23:27 |
Работа со строками (Си) | Geremy | Помощь студентам | 5 | 04.12.2009 21:46 |
работа со строками | Андрей.12 | Помощь студентам | 7 | 29.11.2009 19:24 |
Работа со строками в С++ | Sien | Помощь студентам | 3 | 09.01.2009 20:02 |