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

В char* строке заменить каждое число по указанному правилу

10.04.2022, 00:14. Показов 650. Ответов 2

Author24 — интернет-сервис помощи студентам
Здравствуйте!
В университете дали задание, сделать с помощью нуль терминальной строки. У меня получилось сделать задание только с помощью встроенных функций string, а так нельзя, помогите с реализацией, пожалуйста. Мучаюсь уже несколько дней, не могу понять, как делать.

Само задание такое:
Дано предложение, состоящее из слов, разделенных запятой или пробелами, среди которых есть группы цифр, определяющих целые числа из диапазона [0..19]. Отредактируйте введенную строку, заменив каждое число, на последовательность, заключенную в круглые скобки, символа +, (если число четное) или на – (если число нечетное), длина которой равна найденному числу.

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
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
using namespace std;
int main() {
 
    string s = "1 kdhvhf18,0,7 dhgv hdgf 1 1 1";
 
    string t;
    int i = 0;
    int n;
    while (s[i] != '\0') {
        if (!isdigit(s[i]))
            t += s[i];
        if (isdigit(s[i])) {
            n = 0;
            while (isdigit(s[i])) {
                n = n * 10 + (s[i] - '0');
                i++;
            }
            if (n % 2 == 0) {
                t += '(';
                for (int j = 0; j < n; j++)
                    t += '+';
                t += ')';
            }
            if (n % 2 != 0) {
                t += '(';
                for (int j = 0; j < n; j++)
                    t += '-';
                t += ')';
            }
            i--;
        }
        i++;
    }
    s = t;
    cout << s;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.04.2022, 00:14
Ответы с готовыми решениями:

Заменить каждое число в строке его наименованием
Введенные с клавиатуры символьная строка кроме слов должна содержать одноцифровие числа. Заменить...

В строке заменить каждое число соответственным текстом
С клавиатуры ввести строки что имеет и буквы и числа. Заменить каждое число соответственным...

Заменить символы строки по указанному правилу
надо перевести на с++ program String64; var S:String; i,i2,K:integer; begin Write('S:...

Заменить элементы матрицы по указанному правилу
Написати програмний код реалізації задачі на мові С++ : На основі заданої квадратної матриці А...

2
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,713
10.04.2022, 04:33 2
Лучший ответ Сообщение было отмечено Nadezda29 как решение

Решение

Цитата Сообщение от Nadezda29 Посмотреть сообщение
У меня получилось сделать задание только с помощью встроенных функций string
Вы-то как раз со строкой s и работаете, как будто она имеет тип char*.
Осталось заменить t:
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
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string.h>
using namespace std;
int main() {
 
    char s[100] = "1 kdhvhf18,0,7 dhgv hdgf 1 1 1";
    char t[100]="";
    int i = 0;
    int n;
    int j=0;
    while (s[i] != '\0') {
        if (!isdigit(s[i]))
            t[j++] = s[i];
        if (isdigit(s[i])) {
            n = 0;
            while (isdigit(s[i])) {
                n = n * 10 + (s[i] - '0');
                i++;
            }
            if (n % 2 == 0) {
                t[j++] = '(';
                for (int j2 = 0; j2 < n; j2++)
                    t[j++] = '+';
                t[j++] = ')';
            }
            if (n % 2 != 0) {
                t[j++] = '(';
                for (int j2 = 0; j2 < n; j2++)
                    t[j++] = '-';
                t[j++] = ')';
            }
            i--;
        }
        i++;
    }
    strcpy_s(s,100,t);
    cout << s;
    cin.get();
    return 0;
}
0
0 / 0 / 0
Регистрация: 25.09.2021
Сообщений: 24
10.04.2022, 12:14  [ТС] 3
спасибо большое!
0
10.04.2022, 12:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.04.2022, 12:14
Помогаю со студенческими работами здесь

Заменить расположение элементов файла по указанному правилу
Дан файл целых чисел с элементами A1, A2, ..., AN (N - количество элементов в файле). Заменить...

Заменить восьмеричные цифры последовательности по указанному правилу
1) Ввести последовательность из 8 символов. Если символ – восьмеричная цифра, то заменить в нём...

Переставить символы в строке по указанному правилу
Ввести строку символьных данных задавая буфер равный 18 байт. Переставить символы в строке...

Заменить каждое число в строке символов на последовательность знаков + или - заключенную в круглые скобки
Вот такое задание: Дано предложение, состоящее из слов, разделенных запятой или пробелами, среди...

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

Сформировать по строке а новую строку по указанному правилу
Сформировать по строке а новую строку по правилу: если слово имеет четную длину, удалить в нем...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru