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

Заменить все повторяющиеся слова на S##, где ## - номер слова - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ матрицы в с++ http://www.cyberforum.ru/cpp-beginners/thread34545.html
Надо сделать программу в c++,в которой вводится матрица, транспонируется и затем начальная перемнажается на транспонентную. Премножение не получается. Подскажите пожалуйста в чем ошибка? ...
C++ матрицы Надо сделать программу в c++,в которой вводится матрица, транспонируется и затем начальная перемнажается на транспонентную. Премножение не получается. Подскажите пожалуйста в чем ошибка? ... http://www.cyberforum.ru/cpp-beginners/thread34544.html
C++ Циклы с++
П|m 0.5*(2-0,1!) |n=1 "Найти макс. величину М, для которой произведение не будет превышать число N. Вывести произведение и М" #include<stdio.h> #include<conio.h> #include<math.h> void...
Описание класса: определение одномерных массивов C++
Составить описание класса для определения одномерных массивов строк фиксированной длины. Предусмотреть возможность обращения к отдельным строкам массива по индексам, контроль выхода за пределы...
C++ Кто-нибудь создаёт потоки как в MSDN? http://www.cyberforum.ru/cpp-beginners/thread34528.html
Приветствую, жизнь заставила писать на 2005м MVS и использовать MS SQL SERVER (требует ObjectARX). Вообщем, раньше было какое-то предвзятое отношение, что C++ - это зло, но поработав с этим...
C++ надо реализивать поиск С++ помогите пожалуйста с прогой надо организовать поиск по некоторому критерию.Инфу должно запрашивать с файла Вот некоторsе мои наброски,а как реализовать посик по любому слову из файла я не... подробнее

Показать сообщение отдельно
aweds
0 / 0 / 0
Регистрация: 17.05.2009
Сообщений: 10

Заменить все повторяющиеся слова на S##, где ## - номер слова - C++

17.05.2009, 19:22. Просмотров 650. Ответов 1
Метки (Все метки)

Ребят, помогите плз с лабой, а то я ее уже 4 раз переписываю =(

Вечно я ее сначала пишу, а потом она все усложняется усложняется и я ее переписываю.

Суть такова: заменить все повторяющиеся слова на S##, где ## - номер слова.
Текст является структурой
C++
1
2
3
4
5
6
7
struct Text1{
    struct strings{
    char str[80];
    int len;
}strs[80];
int len;
} MyText;
чтение и запись в файл.
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
34
35
36
37
38
39
40
41
42
43
44
#include<iostream.h>
#include<conio.h>
#include<fstream.h>
#include<string.h>
#include<io.h>
 
extern ifstream a;
extern ofstream b;
//extern MyText;
 
char *readstring( char *st){
char *q=st;
a.getline(st,80);
cout<<st<<endl;
return st;
}
 
void readfile( char *an){
int q;
a.open(an);
int i=0; char *uk=&MyText.strs[i].str[0];
while(i<=80&&MyText.strs[i].str!=""){
uk=&MyText.strs[i].str[0];
uk="";
readstring(&MyText.strs[i].str[0]);
MyText.strs[i].len=strlen(MyText.strs[i].str);
cout<<MyText.strs[i].len<<endl;
if(MyText.strs[i].str[0]==0){MyText.len=i;break;}
i++;
}
MyText.len=i;}
 
int writestring(char *st){
b<<st<<endl;
return 0;}
 
int writetext(char *bn){
b.open(bn);
int i=0; char *uk;//=MyText.strs[i].str;
while(i<=MyText.len){
uk=&MyText.strs[i].str[0];
writestring(uk);
i++;}
return 0;}
обработка
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include<iostream.h>
//#include "c:\struct.h"
#include <io.h>
#include<string.h>
#include <iostream.h>
#include<stdlib.h>
extern char word[80],word1[80];
extern int num[50][50];
extern  int l,d;
extern count;
//extern MyText;
 
int getword(int n,int i,int fl){
int j=0,tm=0,ti=i;
label:if (fl==1) {while(tm<=MyText.strs[n].len){word[tm]=0;tm++;}j=0;while(MyText.strs[n].str[i]!=' '&&i<=strlen(MyText.strs[n].str)) {word[j]=MyText.strs[n].str[i];i++;j++;}}
else
 {j=0;while(tm<=80){word1[tm]=0;tm++;}while(MyText.strs[n].str[i]!=' '&&i<=strlen(MyText.strs[n].str))
  {word1[j]=MyText.strs[n].str[i];i++;j++;}}
if (word1==""||word==""||word1==" "||word==" ") goto label;
if (fl==1) count++;
if(MyText.strs[n].str[i+1]==' ')i--;;
return i;}
 
int newword(int n,int i){
int ti=i,f=0,k=1; char tmc[3];
MyText.strs[n].str[i]='s';
if (count<=9) {i++;itoa(count,tmc,3);MyText.strs[n].str[i]=tmc[0];}
if (count>9 && count<=99){i++;itoa(count,tmc,3);MyText.strs[n].str[i]=tmc[0];i++;MyText.strs[n].str[i]=tmc[1];}
          //{i++;MyText.strs[n].str[i]='2';}
if (count>99&& count <=999)//{i++; MyText.strs[n].str[i]=count/100+47; i++;MyText.strs[n].str[i]=(count-(count/100)*100)/10+47; i++;MyText.strs[n].str[i]=count-(count/100)*100-(count/10)*10-1+47;f=3;}
     {i++;itoa(count,tmc,3);MyText.strs[n].str[i]=tmc[0];i++;MyText.strs[n].str[i]=tmc[1];i++;MyText.strs[n].str[i]=tmc[2];}
i++;
ti=i;
k=1;
while(MyText.strs[n].str[i]!=' ' && MyText.strs[n].str[i]!='\0'  && k<=80){ti=i;
while(ti<=80){MyText.strs[n].str[ti]=MyText.strs[n].str[ti+1];ti++;}
k++;}
d=k-1;
return 1;
}
 
int find(int p,int s){
int i=0,j=0,lj=0;
while(i<=80){j=0;
while(j<=80){
j=getword(i,j,0);
if((strlen(word1)==strlen(word))&&(word[1]==word1[1])&&(word[strlen(word)]==word1[strlen(word1)]))
{if (MyText.strs[i].str[j-2]!=' '){
newword(i,j-strlen(word1));j=j-d;}else
{
newword(i,j-strlen(word1)-1);j=j-d;}
}else{lj=0;}
if(word[0]==0||word1[0]==0)break;
j++;}
i++;}
return 0;}
а вот мэйн.
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.h>
#include<conio.h>
#include <fstream.h>
#include "c:\struct.h"
#include "c:\input.cpp"
#include "c:\work.cpp"
ifstream a;
ofstream b;
char word[80],word1[80],name[80],name1[80],*q=&name[0],*z=&name1[0];
int count,d=0;
 
 
void main(){
int i=0,j;
cout<<"Лабораторная работа №4"<<endl;
cout<<"произвести замену всех одинаковых слов на S##, где ##-номер первого включения слова"<<endl;
cout<<"Введите имя файла для считывания: "<<endl;
cin>>q;
readfile(q);
while(i<=MyText.len&&i<=80){j=0;
while(j<=80){
j=getword(i,j,1);
if (word[0]==0)break;
if (word!=" ")find(j+strlen(word),i);
}
i++;}
 
 
cout<<"Введите имя файла для записи: "<<endl;
cin>>z;
writetext(z);
getch();
}

Вся прога разбита на библиотеки.

В общем мне нужна помощь в той функции, где надо как раз искать и заменять слова.

Добавлено через 7 часов 15 минут 22 секунды
Поднимаю тему. Если поможете до сегодня, то с меня что нить хорошее! =)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru