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

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

Восстановить пароль Регистрация
 
 
Yana_Chernobay
0 / 0 / 0
Регистрация: 08.09.2014
Сообщений: 76
23.11.2014, 22:31     Вставить слово в определенную позицию в тексте #1
Организовать ввод эталонного слова и предложения (слова разделяются пробелом(пробелами)). По выбору пользователя вставить эталонное слово а)в конец предложения; б)в начало предложения; в)после слова 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++ В тексте заменить слово А(любое слово) на слово В(любое слово). А и В разной длинны
Вставить заданное число в определенную позицию массива C++
C++ Ifstream переход в определенную позицию
Написать функцию добавления значения в определенную позицию списка, заданную пользователем C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Yana_Chernobay
0 / 0 / 0
Регистрация: 08.09.2014
Сообщений: 76
24.11.2014, 11:02  [ТС]     Вставить слово в определенную позицию в тексте #21
ssergius, это все организовано, все вроде правильно должно работать
но
C++
1
char pred[100];
неправильно выводится
если я запишу так:
C++
1
2
cout << "Введите предложение на транслите: " << endl;
  cin.getline(pred,99);
то не срабатывает func3() и когда идет следующий запрос, то все начинается не с запроса предложения, а сразу свова еталон
Если я ввиду так:
C++
1
2
cout << "Введите предложение на транслите: " << endl;
  cin >> pred;
то если я ввожу больше одного слова при запросе ввести предложение, начинается бесконечный цикл вывада, в общем что-то страшное выбивает
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ssergius
6 / 6 / 2
Регистрация: 10.03.2013
Сообщений: 48
24.11.2014, 11:51     Вставить слово в определенную позицию в тексте #22
Попробуйте после ввода слова предложений вставить cin.clear();
Yana_Chernobay
0 / 0 / 0
Регистрация: 08.09.2014
Сообщений: 76
24.11.2014, 12:12  [ТС]     Вставить слово в определенную позицию в тексте #23
ssergius, не получается
у меня просто что-то с программой скорее всего
ssergius
6 / 6 / 2
Регистрация: 10.03.2013
Сообщений: 48
24.11.2014, 12:18     Вставить слово в определенную позицию в тексте #24
Вставьте ещё тогда cin.sync();
Скиньте код сюда, гляну как вставили
Yana_Chernobay
0 / 0 / 0
Регистрация: 08.09.2014
Сообщений: 76
24.11.2014, 12:51  [ТС]     Вставить слово в определенную позицию в тексте #25
ssergius, тогда сразу плдмкажите после какой строчки нужно)
ssergius
6 / 6 / 2
Регистрация: 10.03.2013
Сообщений: 48
24.11.2014, 12:58     Вставить слово в определенную позицию в тексте #26
Там где у вас идёт,после него cin >> blablabla; cin.clear(); cin.sync();
Yana_Chernobay
0 / 0 / 0
Регистрация: 08.09.2014
Сообщений: 76
24.11.2014, 15:18  [ТС]     Вставить слово в определенную позицию в тексте #27
ssergius, ещё одна проблема, нигде не использовался указатель

Добавлено через 44 минуты
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include "stdafx.h"
#define _CRT_SECURE_NO_WARNINGS
 
#include <iostream>
 
using namespace std;
 
void func1(char *pred, char *etalon)
{
    // операция конкатенции, объединение строк
    strcat_s(pred, 50, " "); // скопировать пробел после предложения
    strcat_s(pred, 50, etalon); //скопировать слово эталон перед предложением
    cout << "Text: " << pred << endl; 
}
 
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)
{
    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';//начиная с i-го символа в предложении заполняем всю правую часть пустотой(правая часть уже скопирована в tempvar)
    tempvar[k] = '\0';//тоже самое делаем и тут, иначе во второй части предложения, которую мы скопировал в цикле ранее запишется мусор
    strcat_s(etalon, 50, " ");//скопировать пробел после слова эталона, идёт обьединение строк
    strcat_s(etalon, 50, pred);
    strcat_s(pred, 50, 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 >> pred;
  cin.clear(); 
  cin.sync();
  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, 16:15     Вставить слово в определенную позицию в тексте #28
Для чего нужен указатель в вашей проге?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2014, 16:46     Вставить слово в определенную позицию в тексте
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Yana_Chernobay
0 / 0 / 0
Регистрация: 08.09.2014
Сообщений: 76
24.11.2014, 16:46  [ТС]     Вставить слово в определенную позицию в тексте #29
ssergius, для динамического массива.
Преподователь уточнил, что нужно использовать указатель в самой программе.
Если Вам не сложно помочь мне, буду очень рада. Но если Вас уже достала эта программа, то спасибо за то что мне помогли в этом. Есть хоть от чего отбиваться дальше)
Yandex
Объявления
24.11.2014, 16:46     Вставить слово в определенную позицию в тексте
Ответ Создать тему
Опции темы

Текущее время: 06:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru