Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 17.05.2009
Сообщений: 10

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

17.05.2009, 19:22. Показов 1219. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.05.2009, 19:22
Ответы с готовыми решениями:

Удалить слова, содержащие все повторяющиеся буквы первого слова, из последовательности символов
Дана последовательность символов, состоящая из слов. Удалить слова, которые содержат все повторяющиеся буквы первого слова, с сохранением...

Создать очередь, содержащую слова. Удалить из очереди все повторяющиеся слова, оставив только их первые вхождения
#include &lt;iostream&gt; using namespace std; struct queue { int inf; queue *next; }; void push(queue *&amp;h, queue *&amp;t, int x) { ...

Напечатать все слова, отличные от последнего слова. Если слово нечетной длины, заменить все строчные гласные буквы
Дана строка содержащая любое количество слов на латинском , отделенные друг от друга пробелами. Напечатать все слова, отличные от...

1
0 / 0 / 0
Регистрация: 17.05.2009
Сообщений: 10
19.05.2009, 03:01  [ТС]
Ребят, вы мне хоть скажите, ждать ли тут помощи или уйти на другой форум? =(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.05.2009, 03:01
Помогаю со студенческими работами здесь

Найти в файле F1 все заменяемые слова и заменить их на соответствующие заменяющие слова
1.Задан типизированный файл с целочисленными компонентами и произвольное целое число b. Если для i-ой компоненты файла имеет место...

Ввести строку и два слова, заменить все вхождения первого слова на второе
Возможно ли создание такой программы: Ввести строку и два слова, заменить все вхождения первого слова на второе.

Как заменить все слова в строке на слова?
регулярное выражение для замены всех слов в строке на слова

В тексте все слова заданной длины заменить указанной подстрокой, длина которой может не совпадать с длиной заменяемого слова
В процессе изучения C# столкнулась с одной задачей. Все бы ничего, но из-за требований к ее решению не получается ничего нормального...

Заменить повторяющиеся слова специальным символом
Здравствуйте. Пользователь вводит текст, состоящий из слов, разделенных одним пробелом. Если есть одинаковые слова, заменить все их...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru