0 / 0 / 0
Регистрация: 31.10.2019
Сообщений: 21
1

Пожалуйста поправьте. Пишу программу для обьединения двух строк в одну

10.11.2019, 12:23. Показов 369. Ответов 8

Студворк — интернет-сервис помощи студентам
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
int spacenum,spacealf,i=0;
    stringalf += " ";  //2 строка
    stringnum += " ";  //1 строка
    start = 0;
    while( (start=stringnum.find_first_not_of(c,start)) != -1 ) {  
        cout <<"start:"<< start<<"\n";
        cout << "!" << stringnum;
        cout << endl;
        cout << "?" << stringalf;
        cout << "\n";
        spacenum = stringnum.find_first_of(c, i) + 1; //длина 1 слова в строке цифр
        spacealf = stringalf.find_first_of(c, i) + 1; // длина 1 слова в строке букв
        cout <<"длина 1"<< spacenum << "\n";
        cout << "длина 2"<<spacealf<<"\n";
        stringnum = stringnum.replace(spacenum, 1, stringalf.substr(i, spacealf));
        stringalf.erase(i, spacealf);
        i += spacenum + spacealf+1;
        //end = stringnum.find_first_of(c,i);
        cout <<"i"<< i << "\n";
        cout << "\n";
        cout << "!" << stringnum;
        cout << endl;
        cout << "?" << stringalf<<"\n";
        //start = i;
        
        start =i;
        
    }
// нужно получить чтото вроде этого : 112 e 1234 e 12 eee 1 e и тд. в конце дописать все лишнее
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.11.2019, 12:23
Ответы с готовыми решениями:

Insert для обьединения двух таблиц в одну
Подскажите как правильно написать запрос для того чтобы с двух таблиц БД и значений из Едитов...

макрос для обьединения таблиц со всех листов одной книги в одну
как обьединить таблицы или все листы в одной книге в один лист

Из двух строк сделать одну, в которой поочередно будут символы двух строк
Из двух строк сделать одну, в котором поочередно будут символы двух строк.

Поправьте, пожалуйста программу. Сортировки, рекурсии, передача параметров
При запуске сортировки - не считает кол-во ходов(COUNT), если создавать новый массив, то считает. ...

8
7430 / 5022 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
10.11.2019, 15:31 2
строки складываются проще
Цитата Сообщение от ARTHURPRO Посмотреть сообщение
в конце дописать все лишнее
?
приведите пример ввода-вывода
0
0 / 0 / 0
Регистрация: 31.10.2019
Сообщений: 21
10.11.2019, 15:46  [ТС] 3
здравствуйте . смотрите . допустим ввод строка : 1234 e ee eee 1234e 123
вывод: 1234 e 123 ee eee
почему я спрашивал про 2 строки : вначале я разбил строку на 2 строки: 1234 123 и e ee eee 1234e
и потом их складываю .
Я вроде справился с этим заданием .Вышло на 200 строк . если можете то помогите с другой проблемой:
нужно как то заменить gets и puts на чтонибудь другое т.к в visual studia они не определены .никак не получается
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
#include <iostream>
#include <stdio.h>
#include <cstring>
#define _CRT_SECURE_NO_WARNINGS 
#define _CRT_SECURE_NO_DEPRECATE 
#define _CRT_NONSTDC_NO_DEPRECATE 
#pragma warning(disable : 4996)
using namespace std;
int main()
{
    setlocale(LC_ALL, ".1251");
    char a[300];
    char b[300];
    char dop[300];
    char q[1];
    cout << "Введите разделители " << endl;
    gets(dop);
    int i, j,sct1=0;
    int count = 1;
    int max = INT_MIN;
    cout << "Введите строку:" << endl;
    gets(a);
    char *k = strtok(a, dop);
    while (a && k)
    {
        count = 0;
        int sct=0;
        for (i = 0; k[i]; i++)
        {
            count++;
        }
        i = 0;
        while (count>0)
        {  
            while(k[i]==k[i+1])
            {
                 i++;
                 count--;
            }
            for (j = i; k[j]; j++)
            {
                if (k[i] == k[j])
                {
                    sct++;
                }
            }
            count = count - sct;
            if (count >= 0)
            {
                sct1++;
            }
            sct = 0;
            i++;
        }
        if (sct1>max)
        {
            strcpy(b, k);
            max = sct1;
        }
        else
        {
            if (sct1 == max)
            {
                strcat(b, " ");
                strcat(b, k);
            }
        }
        k = strtok('\0', dop);
        sct1 = 0;
    }
    cout << "Наибольшее количество различных символов сожержат слово(а):" << endl;
    puts(b);
    system("pause");
    return 0;
}
0
7430 / 5022 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
10.11.2019, 15:59 4
Цитата Сообщение от ARTHURPRO Посмотреть сообщение
ввод строка : 1234 e ee eee 1234e 123
вывод: 1234 e 123 ee eee
какой алгоритм получения результирующей строки ?
0
0 / 0 / 0
Регистрация: 31.10.2019
Сообщений: 21
10.11.2019, 16:33  [ТС] 5
на четные места ставим слова из цифр на нечетные все остальное . то что не влазит в эту последовательность пихаем в конец
0
7430 / 5022 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
10.11.2019, 16:47 6
Цитата Сообщение от ARTHURPRO Посмотреть сообщение
на четные места ставим слова из цифр
вывод: 1234 e 123 ee eee
у Вас слова из цифр находятся на нечётных местах (на первом и третьем)

и почему в результирующей строке отсутствует слово 1234е ?
0
0 / 0 / 0
Регистрация: 31.10.2019
Сообщений: 21
10.11.2019, 16:57  [ТС] 7
по поводу четности описался . должно быть наоборот . 1234e это не число) его считаем как слово.
посмотрите 2ую задачку пожалуйста там все намного хуже
0
7430 / 5022 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
10.11.2019, 17:50 8
Цитата Сообщение от ARTHURPRO Посмотреть сообщение
посмотрите 2ую задачку
если Вам нужна помощь, давайте действовать последовательно. без чёткой формулировки условия правильно решить задачу не получится.
Цитата Сообщение от ARTHURPRO Посмотреть сообщение
1234e это не число
с этим никто не спорит. например 'e' тоже не число. почему Вы 'e' оставили, а '1234e' нет ?
Цитата Сообщение от ARTHURPRO Посмотреть сообщение
по поводу четности описался
так напишите что Вам нужно без ошибок
0
0 / 0 / 0
Регистрация: 31.10.2019
Сообщений: 21
10.11.2019, 18:26  [ТС] 9
по поводу 2 задачи : в строке необходимо найти слово(а) с наибольшим количеством различных символов .
вывести через пробел.
я все написал через gets и puts но их использовать нельзя . нужно заменить эти функции другими . например getline . Но я не знаю как именно в этом случае
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
#include <iostream>
#include <stdio.h>
#include <cstring>
#define _CRT_SECURE_NO_WARNINGS 
#define _CRT_SECURE_NO_DEPRECATE 
#define _CRT_NONSTDC_NO_DEPRECATE 
#pragma warning(disable : 4996)
using namespace std;
int main()
{
    setlocale(LC_ALL, ".1251");
    char a[300];
    char b[300];
    char dop[300];
    char q[1];
    cout << "Введите разделители " << endl;
    gets(dop);
    int i, j,sct1=0;
    int count = 1;
    int max = INT_MIN;
    cout << "Введите строку:" << endl;
    gets(a);
    char *k = strtok(a, dop);
    while (a && k)
    {
        count = 0;
        int sct=0;
        for (i = 0; k[i]; i++)
        {
            count++;
        }
        i = 0;
        while (count>0)
        {  
            while(k[i]==k[i+1])
            {
                 i++;
                 count--;
            }
            for (j = i; k[j]; j++)
            {
                if (k[i] == k[j])
                {
                    sct++;
                }
            }
            count = count - sct;
            if (count >= 0)
            {
                sct1++;
            }
            sct = 0;
            i++;
        }
        if (sct1>max)
        {
            strcpy(b, k);
            max = sct1;
        }
        else
        {
            if (sct1 == max)
            {
                strcat(b, " ");
                strcat(b, k);
            }
        }
        k = strtok('\0', dop);
        sct1 = 0;
    }
    cout << "Наибольшее количество различных символов сожержат слово(а):" << endl;
    puts(b);
    system("pause");
    return 0;
}
0
10.11.2019, 18:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.11.2019, 18:26
Помогаю со студенческими работами здесь

пишу одну программу и застрял !
мне нужно чтоб при нажатии на кнопку она перешла на сайт http://www.odnoklassniki.ru/settings далее...

Перегрузить операцию + для объединения двух строк в одну
Всем привет! В общем, необходимо перегрузить оператор + для объединения двух строк в одну(Прата)....

Я пишу программу на языке Pascal. Подскажите пожалуйста, как мне записать в блок-схему мои 18 if?
Я пишу программу на языке Pascal. Подскажите пожалуйста, как мне записать в блок-схему мои 18...

Написать программу, предназначенную для сравнения двух строк
Написать программу, предназначенную для сравнения двух строк. (Строка считается большой, если при...

Написать программу для сравнения двух строк символов
Результат должен быть &quot;больше&quot;,&quot;меньше&quot;,&quot;равно&quot;(сравнение лексикографическое - сначала по первой...

Соединение двух строк в одну
На вход идет файл test.txt с содержимым: необходимо преобразовать это в как это можно...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru