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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2012, 15:46   #1
fasty
Пользователь
 
Регистрация: 09.11.2011
Сообщений: 25
По умолчанию Замена повторяющихся слов в тексте

Задание: есть текст в файле, необходимо заменить каждое повторяющееся слово на S(NN) где S-первая буква слова, а NN - номер повторения
представление в программе: структура текст, структура строка, считывание постраничное, то есть каждые 60 строк - это 1 страница
вот то что я написал:
Код:
#include "stdafx.h"
#include <string>
#include <iostream>
#include <fstream>
#include <conio.h>
#include <locale.h>
#include <string.h>
using namespace std;

const int maxv=10;
const int maxw=10;
struct str
{
char a[maxv];
unsigned L; 
char s;
};
struct text
{
str m[60];
unsigned Len; 
};
int change(str *p);



void intext(fstream &f,fstream &g,str *p,text *t)
{
f.open("C:\\proga\\in.txt",ios::in);
f.unsetf(ios::skipws);
g.open("C:\\proga\\out.txt",ios::out);
g.unsetf(ios::skipws);
int i=0,j=0;
t->Len=0;
p->L=0;
while (1)
	{
	f>>p->s;
	if (f.eof()) break;
	if (p->s=='\n')
		{
		p->L=j;
		j=-1;
		i++;
		g << " str len" << p->L << endl;
		//izmenenie(f,g,p,t);
	//g << change(p) << endl;
		}

	j++;
	if (i<60)
		{
		if (j<=maxv)
			{	
			p->a[j]=p->s;
			g<<p->a[j];
			} 
		}
	else
		{
		t->Len=i; 
		g<<endl<<i<<endl<<" Новая страница "<<endl;
		i=0;
		}
	}
g << "text len " << t->Len << endl;
f.close();
}



int change(str *p)
{
char *s1 =p->a;
char *a;a=p->word;char *b;*b=p->word[0];
char s2[10];
// для начала скопировать всю строку
strcpy(s2, s1);
// установить p1 на слово а в оригинале
char *p1=strstr(s1,a);
// установить р2 на слово а в копии
char *p2=s2-s1+p1;
// копировать слово b
strcpy(p2,b);
// сместить указатель в оригинале
p1+=strlen(a);
// сместить указатель в копии
p2+=strlen(b);
// скопировать остаток строки
strcpy(p2,p1);
cout << s2 << endl ; 
rerurn(0)
}


void main ()
{
str p;
text t;
fstream f,g;
intext(f,g,&p,&t);
//izmenenie(f,g,&p,&t);
//outtext(f,g,&p,&t);
}
вроде считывает нормально, со страницами тоже нормально, но вот замена слов никак не получается так же не получается продстваить всё в структуре текст, то есть надо t.m[i] присвоить каждую строку, а не получается, не знаю почему
вобщем проблема состиоит в самой замене слов и в представлении в структуре текст
fasty вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi7. Копирование не повторяющихся слов Сароникус Помощь студентам 2 28.10.2011 18:44
Замена повторяющихся символов C# MyXa C# (си шарп) 7 02.02.2011 14:32
Поиск повторяющихся слов и их удаление!!!!!!!! в делфи Ejevila Помощь студентам 2 20.12.2010 21:55
Удаление повторяющихся слов C vivo89 Помощь студентам 2 24.12.2009 09:18
Составить в алфавитном порядке список всех слов, встречающихся в тексте, и количество этих слов. KAPAHDAW Паскаль, Turbo Pascal, PascalABC.NET 2 17.02.2009 01:19