Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2011, 15:17   #1
irina belka
 
Регистрация: 05.12.2010
Сообщений: 6
По умолчанию си++, работа со строками

суть: написать программу которая считывает текст из файла и выводит на экран только предложения содержащие введенное с клавиатуры слово.
вопрос: программа работает только если в конце предложения стоит точка, как её подправить, чтобы она шла и на вопросительные и восклицательные предложения?
Код:
#include <fstream.h>
#include <string.h>
#include <stdio.h>
int main(){
	const int len =81;
	char word[len],line[len];
	cout<<"Enter word";
	cin>>word;
    char z[81]=".";
	ifstream fin("test.txt", ios::in|ios::nocreate );
	if (!fin) {cout<<"ERROR! "<<endl; return 1;}

	fin.getline(line,len);

	long i=0,g=0,t1=0,t2=0,p,c=0,x=0,ok=0,a=0;

while(word[g]) g++;  

while (line[i])
	{

	if (line[i]==z[0])
	{
		p=t2;
		t1=p;
		t2=i;
	}
    a=i+g;
    if (line[i]==word[c])
	{
    		while (i<a)
		{
				if (line[i]==word[c]) x++;else{ break; c=0;}
			if(x==g) ok=i-g;
		i++;
		c++;
		}
	}

	if ((ok>t1)&&(ok<t2))
	{
	    while (t1<t2) 
		{
			t1++;
			cout<<line[t1];
            c=0;

		}

	}
	
	i++;
	}
	return 0;
}
irina belka вне форума Ответить с цитированием
Старый 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
irina belka
 
Регистрация: 05.12.2010
Сообщений: 6
По умолчанию

это сильно, спасибо
irina belka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с матрицами (норма матрицы, работа со строками) 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