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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2013, 17:31   #1
Evateli
Новичок
Джуниор
 
Регистрация: 11.05.2013
Сообщений: 2
По умолчанию Расстояние между заданными словами в файле. (с++)

Текст задачи: Дан файл, содержащий текст на русском языке и некоторые два слова. Определить, сколько раз они встречаются в тексте и найти наибольшее расстояние между этими словами. (сколько слов между ними).

Код:
#include<fstream>
#include<iostream>
#include<string>
#include<conio.h>
#include<stdio.h>
#include <sstream>
#include <locale.h>
#include <Windows.h>
using namespace std;
int main()
{ SetConsoleCP(1251);
setlocale(LC_ALL, "rus");
int n=0;
int k=0;
string c1;
string c2;
string s;
cout<<"Vvedite 1 slovo:"<<endl;
cin>>c1;
cout<<"Vvedite 2 slovo:"<<endl;
cin>>c2;
ifstream fin;
fin.open("Text.txt");
int i=0;
while (getline(fin,s))
{
    istringstream iss(s);
string s2;
while (iss>>s2)
{if (s2==c1)
n++;
if (s2==c2)
k++;
}}
fin.close(); 
cout<<"Kolichestvo 1 slova:";
cout<<n<<endl;
cout<<"Kolichestvo 2 slova:";
cout<<k<<endl;
getch();
return 0;
}

Я написала код для определения количества заданных слов в тексте файла, но не знаю, как найти расстояние. Напишите пожалуйста, как его можно найти.
Evateli вне форума Ответить с цитированием
Старый 11.05.2013, 17:56   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ладно...
Предположу ч потолка что так:
Код:
int minX=0,maxX=0,minY=0,maxY=0,distance=0;
while (iss>>s2){
 if (s2==c1) {n++; if(n>0) minX=i; maxX=i;}
 if (s2==c2) {k++; if(k>0) minY=i; maxY=i;}
}

if(maxX<maxY) distance=maxY; esle distance=maxX;
if(minX<minY)  distance-=minX; esle distance=minY;
distance по идее должно дать расстояние.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.05.2013, 21:47   #3
Evateli
Новичок
Джуниор
 
Регистрация: 11.05.2013
Сообщений: 2
По умолчанию

Выводит ноль.

Код:
#include<fstream>
#include<iostream>
#include<string>
#include<conio.h>
#include<stdio.h>
#include <sstream>
#include <locale.h>
#include <Windows.h>
using namespace std;
int main()
{ SetConsoleCP(1251);

setlocale(LC_ALL, "rus");
int distance=0;
int n=0;
int k=0;
string c1;
string c2;
string s;
cout<<"Vvedite 1 slovo:"<<endl;
cin>>c1;
cout<<"Vvedite 2 slovo:"<<endl;
cin>>c2;
ifstream fin;
fin.open("Text.txt");
while (getline(fin,s))
{ 
	istringstream iss(s);
string s2;
int i=0,minX=0,maxX=0,minY=0,maxY=0;

while (iss>>s2)
{
 if (s2==c1)
 {n++; if(n>0) minX=i; maxX=i;}
if (s2==c2)
{k++; if (k>0) minY=i; maxY=i;}
}
if (maxX<maxY) distance=maxY;
else distance=maxX;
if (minX<minY) distance=minX;
else distance=minY;
}
 

fin.close(); 
cout<<"Kolichestvo 1 slova:";
cout<<n<<endl;
cout<<"Kolichestvo 2 slova:";
cout<<k<<endl;
cout<<distance;
getch();
return 0;
}
Evateli вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В строке между словами вставить зак / Евгений7777 Общие вопросы C/C++ 0 24.03.2011 17:49
копирование текста между двумя словами pavel.lug Microsoft Office Word 14 28.08.2009 14:27
Паскаль*Найти расстояние между двумя заданными множе-ствами точек tipson Помощь студентам 2 11.07.2009 12:19
Разделитель между словами в запросе artemavd БД в Delphi 10 20.05.2009 18:18