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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Yana_Chernobay
0 / 0 / 0
Регистрация: 08.09.2014
Сообщений: 77
#1

Вставить слово в определенную позицию в тексте - C++

23.11.2014, 22:31. Просмотров 940. Ответов 28
Метки нет (Все метки)

Организовать ввод эталонного слова и предложения (слова разделяются пробелом(пробелами)). По выбору пользователя вставить эталонное слово а)в конец предложения; б)в начало предложения; в)после слова N (вводится пользователем).

Требования на картинке ниже)

Помогите организовать функции)

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
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
void func1(char *pred, char *etalon)
{
}
 
void func2(char*pred, char*etalon)
{
}
 
void func3(char*pred, char*etalon, char*slovo)
{
}
 
void main()
{ 
  setlocale(LC_ALL, "Russian");
  char *pred[100];
  char *etalon[100];
  char *slovo[100];
  int a;
  while(1)//возможность многократного выполнения алгоритма 
{
  cout << "Введите предложение на транслите: " << endl;
  cin.getline(pred,100);
  cout << "Введите слово эталон:" << endl;
  cin >> etalon;
  cout << "Куда вставить слово эталон:" << endl;
  cout << "1) в конец предложения; " << endl;
  cout << "2) в начало предложения; " << endl;
  cout << "3) после слова N: " << endl;
  cin >> a;
 
   if (a==1)
      func1(pred, etalon,dlina);
   if (a==2)
      func2(pred, etalon);
   if (a==3)
     {cout << "Введите слово после которого хотите вставить слово еталон: " << endl;
     cin >> slovo;
     func3(pred, etalon, slovo);}
   if (a==0)
     {break;}
 }
  system("pause");
}
Миниатюры
Вставить слово в определенную позицию в тексте  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2014, 22:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вставить слово в определенную позицию в тексте (C++):

Вставить заданное число в определенную позицию массива - C++
Вставить заданное число в массив целых чисел: a)перед всеми элементами, кратными числу A; б)после всех отрицательных элементов. Каким...

Вставить слово в указанную позицию во все строки массива - C++
У меня есть массив string, который заполняет пользователь. После того как массив заполнен нужно вставить дополнительное слово во все...

В любом тексте между 3 и 4 словом вставить новое слово - C++
Ребят,помогите пожалуйста,в работе со строками совсем не шарю. Задание:в любом тексте между 3 и 4 словом вставить новое слово(работать с...

В произвольном тексте вставить между вторым и третьим словом новое слово - C++
&quot;В произвольном тексте вставить между вторым и третьим словом новое слово.&quot; Помоги пожалуйста)) С коментариями если можно для...

Ifstream переход в определенную позицию - C++
Смотрите я прочитал файл и хочу перейти в определенную позицию, в которой был раньше. Как запомнить ту позицию и перейти в нее?

Запись в файл в определенную позицию - C++
Такая проблема. Открываю файл записываю нули туда. Как в определенную позицию вместо нулей вставить значение? Ничего не получается. Файл...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Mr_Progger
23.11.2014, 22:39
  #2

Не по теме:


Первое требование наверно "большой специалист" придумал

ssergius
6 / 6 / 2
Регистрация: 10.03.2013
Сообщений: 48
23.11.2014, 23:44 #3
1) в конец предложения;

C++
1
2
strcat(pred, " ");
strcat(pred, etalon);
2) в начало предложения;

C++
1
2
strcat(etalon, " ");
strcat(etalon, pred);
попробуйте так)
Yana_Chernobay
0 / 0 / 0
Регистрация: 08.09.2014
Сообщений: 77
23.11.2014, 23:49  [ТС] #4
ssergius, для начала у меня проблема в переменных, где-то массив, а где-то через указатель, каша получилась и я запуталась
ssergius
6 / 6 / 2
Регистрация: 10.03.2013
Сообщений: 48
23.11.2014, 23:57 #5
Написал для 1 функции.


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
// TestShlak.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
void func1(char *pred, char *etalon)
{
    strcat(pred, " ");
    strcat(pred, etalon);
    cout << "Text: " << pred << endl;
}
 
void func2(char*pred, char*etalon)
{
}
 
void func3(char*pred, char*etalon, char*slovo)
{
}
 
void main()
{ 
  setlocale(LC_ALL, "Russian");
  char pred[100];
  char etalon[100];
  char slovo[100];
  int a;
  while(1)//возможность многократного выполнения алгоритма 
{
  cout << "Введите предложение на транслите: " << endl;
  cin.getline(pred,100);
  cout << "Введите слово эталон:" << endl;
  cin >> etalon;
  cout << "Куда вставить слово эталон:" << endl;
  cout << "1) в конец предложения; " << endl;
  cout << "2) в начало предложения; " << endl;
  cout << "3) после слова N: " << endl;
  cin >> a;
 
   if (a==1)
      func1(pred, etalon);
   if (a==2)
      func2(pred, etalon);
   if (a==3)
     {cout << "Введите слово после которого хотите вставить слово еталон: " << endl;
     cin >> slovo;
     func3(pred, etalon, slovo);}
   if (a==0)
     {break;}
 }
  system("pause");
}
Миниатюры
Вставить слово в определенную позицию в тексте  
ssergius
6 / 6 / 2
Регистрация: 10.03.2013
Сообщений: 48
24.11.2014, 00:03 #6
C++
1
2
3
4
5
6
7
void func2(char*pred, char*etalon)
{
 
    strcat(etalon, " ");
    strcat(etalon, pred);
    cout << "Text: " << etalon << endl;
}
Вторая функция
Миниатюры
Вставить слово в определенную позицию в тексте  
Yana_Chernobay
0 / 0 / 0
Регистрация: 08.09.2014
Сообщений: 77
24.11.2014, 00:24  [ТС] #7
ssergius, спасибо

Добавлено через 6 минут
ssergius, у вас не было подобной ошибки?
Ошибка 1 error C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

я вставляла #define _CRT_SECURE_NO_WARNINGS, не срабатывает
ssergius
6 / 6 / 2
Регистрация: 10.03.2013
Сообщений: 48
24.11.2014, 00:30 #8
Alt+F7
Миниатюры
Вставить слово в определенную позицию в тексте  
Valeriy147
0 / 0 / 0
Регистрация: 24.11.2014
Сообщений: 2
24.11.2014, 00:32 #9
либо вместо функции 'strcat' напиши 'strcat_s'.
Yana_Chernobay
0 / 0 / 0
Регистрация: 08.09.2014
Сообщений: 77
24.11.2014, 00:39  [ТС] #10
ssergius, где это найти? в студии 2012

Добавлено через 1 минуту
Valeriy147, та так и сделала)
вот только теперь проблема в том, что цикл работает не правильно
запрос начинается не с предложения, а слова

Добавлено через 1 минуту
Valeriy147, исправла

Добавлено через 2 минуты
Цитата Сообщение от Yana_Chernobay Посмотреть сообщение
cout << "3) после слова N: " << endl;
подскажите что с этим можно сделать?
ssergius
6 / 6 / 2
Регистрация: 10.03.2013
Сообщений: 48
24.11.2014, 00:46 #11
Alt+F7 не вызывает окно?
Странно. в Visual Studio 2012 сам работаю. Попробуйте еще раз. Штука эта будет постоянно всплывать у вас.
Yana_Chernobay
0 / 0 / 0
Регистрация: 08.09.2014
Сообщений: 77
24.11.2014, 00:49  [ТС] #12
C++
1
2
3
4
5
6
7
8
9
void func3(char*pred, char*etalon, char*slovo)
{
    string::size_type pos = pred.find(slovo);
    if (pos == string::npos)
        cout << "No such word in string" << endl;
    else
        pred.insert(++pos, etalon);
    cout << "Text:" << pred << endl;
}
нашла в интернете, но подчеркивает переменную pred
ssergius
6 / 6 / 2
Регистрация: 10.03.2013
Сообщений: 48
24.11.2014, 00:51 #13
скиньте весь листинг программы
Yana_Chernobay
0 / 0 / 0
Регистрация: 08.09.2014
Сообщений: 77
24.11.2014, 00:53  [ТС] #14
ssergius, хорошо)
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
57
58
59
60
61
62
63
64
65
66
67
#include "stdafx.h"
#define _CRT_SECURE_NO_WARNINGS
 
#include <iostream>
#include <cstring>
 
using namespace std;
 
void func1(char *pred, char *etalon)
{
    strcat_s(pred, 50, " ");
    strcat_s(pred, 50, etalon);
    cout << "Text: " << pred << endl;
    strcat_s(pred, 50, " ");
    strcat_s(pred, 50 , etalon);
}
 
void func2(char*pred, char*etalon)
{
    strcat_s(etalon, 50, " ");
    strcat_s(etalon, 50, pred);
    cout << "Text: " << etalon << endl;
}
 
void func3(char*pred, char*etalon, char*slovo)
{
    string::size_type pos = pred.find(slovo);
    if (pos == string::npos)
        cout << "No such word in string" << endl;
    else
        pred.insert(++pos, etalon);
    cout << "Text:" << pred << endl;
}
 
void main()
{ 
  setlocale(LC_ALL, "Russian");
  char pred[100];
  char etalon[100];
  char slovo[100];
  int a;
  while(1)
  {
  cout << "Введите предложение на транслите: " << endl;
  cin >> pred;
  cout << "Введите слово эталон:" << endl;
  cin >> etalon;
  cout << "Куда вставить слово эталон:" << endl;
  cout << "1) в конец предложения; " << endl;
  cout << "2) в начало предложения; " << endl;
  cout << "3) после слова N: " << endl;
  cout << "0) выход " << endl;
  cin >> a;
 
  if (a==1)
   func1(pred, etalon);
  if (a==2)
     {func2(pred, etalon);}
  if (a==3)
     {cout << "Введите слово после которого хотите вставить слово эталон: " << endl;
     cin >> slovo;
     func3(pred, etalon, slovo);}
  if (a==0)
     break;
  }
  system("pause");
}
ssergius
6 / 6 / 2
Регистрация: 10.03.2013
Сообщений: 48
24.11.2014, 01:33 #15
Готовая прога.

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
// TestShlak.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
void func1(char *pred, char *etalon)
{
    strcat(pred, " ");
    strcat(pred, etalon);
    cout << "Text: " << pred << endl;
}
 
void func2(char*pred, char*etalon)
{
 
    strcat(etalon, " ");
    strcat(etalon, pred);
    cout << "Text: " << etalon << endl;
}
 
void func3(char* pred, char* etalon, char* slovo)
{
    int i = 0, k = 0;
    int len;
    char tempvar[50];
 
 
    len = strlen(slovo);
 
    while (i < strlen(pred)) {
 
        if (pred[i] == slovo[k] && k < len) 
            k++;
        else if (k == len && pred[i++] == ' ') 
            break;
        else 
            k = 0;
 
        i++;
    }
 
    k = 0; 
    int s = i;
    while (s < strlen(pred)) {
        tempvar[k] = pred[s];
        k++;
        s++;
    }
 
    pred[i] = '\0';
    tempvar[k] = '\0';
 
 
 
    strcat(etalon, " ");
    strcat(pred, etalon);
    strcat(pred, tempvar);
 
    cout << "Text: " << pred << endl;
 
}
 
void main()
{ 
  setlocale(LC_ALL, "Russian");
  char pred[100];
  char etalon[100];
  char slovo[100];
  int a;
  while(1)//возможность многократного выполнения алгоритма 
{
  cout << "Введите предложение на транслите: " << endl;
  cin.getline(pred,100);
  cout << "Введите слово эталон:" << endl;
  cin >> etalon;
  cout << "Куда вставить слово эталон:" << endl;
  cout << "1) в конец предложения; " << endl;
  cout << "2) в начало предложения; " << endl;
  cout << "3) после слова N: " << endl;
  cin >> a;
 
   if (a==1)
      func1(pred, etalon);
   if (a==2)
      func2(pred, etalon);
   if (a==3)
     {cout << "Введите слово после которого хотите вставить слово еталон: " << endl;
     cin >> slovo;
     func3(pred, etalon, slovo);}
   if (a==0)
     {break;}
 }
  system("pause");
}
P.s. не исключено что будут баги. Уже сплю. тестируйте ии если что обращайтесь сюда же
Миниатюры
Вставить слово в определенную позицию в тексте  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2014, 01:33
Привет! Вот еще темы с ответами:

Чтение/запись в файл на определенную позицию - C++
Как в файле узнать , есть ли на том месте куда я хочу записать новое число, какое либо еще число? и если есть, занести следующее число...

Добавить новый элемент в определенную позицию массива объектов - C++
Здравствуйте, помогите с решением задачи. Дан класс Продукты. Необходимо добавить новый элемент перед тем, для которого знаем Вес. Ниже код...

Найти в файле слово по заданному началу, вывести слово и его позицию - C++
Найти в файле слово по заданному началу, вывести слово и его позицию

Написать функцию добавления значения в определенную позицию списка, заданную пользователем - C++
class.h #include&lt;iostream&gt; #include&lt;conio.h&gt; using namespace std; class LinkedList { private: struct Elem


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.11.2014, 01:33
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru