Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Опишите класс "Вектор" 1. Опишите класс "Вектор". Данные класса: координаты начала и конца вектора. Методы класса: должны обеспечить минимальную функциональность объекта. 2.Перегрузите операцию сложения векторов с использованием операции - метода класса, а операцию вычитания с использованием дружественной ф-ии. 3.Перегрузите унарную операцию ++ для инкремента вектора как метод класса, а-- как дружественную... https://www.cyberforum.ru/ cpp-beginners/ thread644494.html C++ Конвертирование в wstring&
Всем привет! Не могу понять почему невозможно конвертировать из wchar_t в wstring& Вызов метода client -> CompareTwoString( iteratorclient -> nameclient, positionclient ,lenghtname ); функция bool CompareTwoString( wstring &one, wstring &two, int position ) { //something
C++ В строке с найти количество слов не содержащий подстроку В строке с найти количество слов не содержащий подстроку с2 вывести эти слова где с2=аб https://www.cyberforum.ru/ cpp-beginners/ thread644416.html C++ Матрицы: поменять местами первую строку и строку, содержащую максимальный элемент https://www.cyberforum.ru/ cpp-beginners/ thread644409.html
1)В матрице поменять местами 1 строку и строку содержащие последнее вхождение элемента максимального где максимальный- максимальный элем всей матрицъ вывести итоговую матрицу. 2)В матрице обнулить Все строки содержащие элемент мин более одного раза мин минимальный элемент всей матрицы вывести итоговую матрицу
C++ Двузначное число разделить на две позиции в массиве
у меня есть действительные числа в массиве от 1 до 15. Как сделать так что бы начиная с 10, десять стояла не на одной позиции, а разделилось на две, то есть что бы 10 делилась на 1 и на 0, что бы на 9 позиции стоит 1, а на 10 стоит 0.
C++ Структуры https://www.cyberforum.ru/ cpp-beginners/ thread644393.html
Описать тип TРolygon — запись с полями целого типа, для указания количества сторон и вещественного типа для обозначения длины сторон и описать функцию AreaN(TРolygon) вещественного типа, находящую площадь выпуклого N-угольника. С помощью этой функции найти площади трех многоугольников, если дано число и длины их сторон. Помогите пожалуйста
C++ Удалить из строки S все подстроки, совпадающие с S0 Даны строки S и S0. Удалить из строки S все подстроки, совпадающие с S0. Если совпадающих подстрок нет, то вывести строку S без изменений. Помогите пожалуйста https://www.cyberforum.ru/ cpp-beginners/ thread644392.html C++ Поменять местами строки матрицы
Дана матрица размера M × N и целые числа K1 и K2 (1 ≤ K1 < K2 ≤ M). Поменять местами строки матрицы с номерами K1 и K2. Помогите пожалуйста
C++ Найти сумму и произведение элементов К-го столбца https://www.cyberforum.ru/ cpp-beginners/ thread644389.html
Дана матрица размера M × N и целое число K (1 ≤ K ≤ N). Найти сумму и произведение элементов К-го столбца данной матрицы. Помогите пожалуйста
C++ Статический указатель класса и конструктор в private https://www.cyberforum.ru/ cpp-beginners/ thread644387.html
Всем привет! Вчера препод показал один прием, я до конца не могу понять как он работает. В классе есть статический указатель class CableTV { public: static CableTV* ptr; private: CableTV(const CableTV& copy){} //! Constructor
C++ GLUT: undefined reference to...
#include <gl/glut.h> void Draw() { } void initialize() { } int main (int argc, char** argv) { glutInit(&argc,argv);
C++ Функция main() и ситаксические ошибки Доброго времени суток. Написал вот такую бредятину штуку: #include <windows.h> #include <cstring> int main(); int a = 3; if(a == 0) { https://www.cyberforum.ru/ cpp-beginners/ thread644374.html
2525 / 1751 / 152
Регистрация: 11.08.2012
Сообщений: 3,349
30.08.2012, 18:12  [ТС] 0

Функция редактирования строк - C++ - Ответ 3403668

30.08.2012, 18:12. Показов 1746. Ответов 7
Метки (Все метки)

Ответ

Цитата Сообщение от Catstail Посмотреть сообщение
Выложите полный код - я потестирую.
Пожалуйста
(только он претерпел некоторые изменения в теле main() я программу пишу для отработки придуманного алгоритма (чтобы применить его в другом проекте очень для меня важном (мое практическое задание))
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
#include <windows.h>
#include <cstring>
#include <iostream>
 
using namespace std;
// прототип "стерки"
void Erase(char**, int, int);
// проверяет, является ли строка десятичным числом
bool isNumeral(char *str)
{
    int i = 0;
    bool poi = false;
 
    if(str[0]=='.')return false;
 
    while( str[i] != '\0')
    {
        if(str[i] == '.' && poi)return false;
        if(!(isdigit(str[i]) || str[i] == '.'))
        {
            return false;
        }
 
        if(str[i] == '.' && !poi)poi = true;
        i++;
    }
 
    return true;
}
 
 
// проверяет все ли '(' имеют пару ')' и, сообственно, наоборот
bool CheckPunct(char *str)
{
    int  counter1 = 0,
         counter2 = 0;
    int  i = 0;
    while(str[i] != '\0')
    {
        if(str[i] == '(')counter1++;
        if(str[i] == ')')counter2++;
        i++;
    }
    if(counter1 != counter2)return false;
    else return true;
}
 
// ищет операнды в строке, т.е. элементарные математические функции
int FindOperand(char *str, char *op)
{
    char* spec;
    spec = str;
    char* pos, *pCounter;
    int counter = 0;
    int count = 0;
    int len = strlen(op);
    pos = strstr(spec, op);
    while(pos != NULL)
    {
        pCounter = spec;
        while(pCounter != pos)
        {
            pCounter++;
            counter++;
        }
        Erase(&spec, counter, len);
        pos = strstr(spec, op);
        count++;
        counter -= counter;
    }
    return count;
}
// вставляет в строку 1 строку 2 после символа с номером pos
// ничего не делает, если pos больше числа символов в строке
void Insert(char **str1, char **str2, int pos)
{
    char *newstr1, *newstr2, *newstr3;
    int len1, len2;
    int i = 0,
        j = 0,
        k = 0;
    len1 = strlen(*str1);
    len2 = strlen(*str2);
    newstr2 = *str1;
    newstr3 = *str2;
    if(pos <= len1)
    {
        newstr1 = new char[len1 + len2];
        while(i != pos)
        {
            newstr1[i] = newstr2[i];
            i++;
            k++;
        }
        while(j != len2)
        {
            newstr1[i] = newstr3[j];
            i++;
            j++;
        }
        while(i != len1 + len2)
        {
            newstr1[i] = newstr2[k];
            i++;
            k++;
            if(i == len1 + len2)newstr1[i] = '\0';
        }
        delete []newstr2;
        *str1 = newstr1;
    }
}
 
// удаляет из строки n символов, идущих после символа с номером pos
// ничего не делает, если pos + n больше числа символов в строке 
void Erase(char **str, int pos, int n)
{
    char *newstr1, *newstr2;
    newstr2 = *str;
    int i = 0, len;
    len = strlen(newstr2);
    if (len >= pos + n)
    {
        newstr1 = new char[len - n];
        while(i != pos)
        {
            newstr1[i] = newstr2[i];
            i++;
        }
        while(i != len - n)
        {
            newstr1[i] = newstr2[i+n];
            i++;
            if(i == len - n)newstr1[i] = '\0';
        }
        delete []newstr2;
        *str = newstr1;     
    }
}
 
 
// копирует n символов из строки после символа с индексом pos
char* Copy(char *str, int pos, int n)
{
    char *newstr;
    if((int)strlen(str) >= pos + n)
    {
        int i = 0;
        newstr = new char[n];
        while(i < n)
        {
            newstr[i] = str[i + pos];
            i++;
            if(i == n)newstr[i] = '\0';
        }
        return newstr;
    }
    else return NULL;
}
 
int main()
{
    char *str;
    int pos, n;
    str = new char[50];
    cin >> str;
    cout << FindOperand(str, "sin(") << endl;
    system("pause");
    return 0;
};
Добавлено через 53 минуты
Ух... Избавился от ошибки другим способом: превратил процедуру в функцию, возвращающую значение, отпала необходимость в delete и выделении доп. памяти под всякие newstr.

Добавлено через 1 минуту
Ошибка была, похоже таки в delete. Хотя я не понял, чего это один раз она строку почистить-то могла?

Вернуться к обсуждению:
Функция редактирования строк C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.08.2012, 18:12
Готовые ответы и решения:

Функция редактирования файла
Хочу написать функцию редактирования. Как переписать структуру с изменениями в то же место в...

Функция редактирования записи в таблице
Доброго времени суток! Делаю клиентское приложение.Пытаюсь сделать функцию редактирования записи в...

Функция редактирования базы данных
Добрый день. Имеется программа, которая работает с базой данных(просмотр всех записей,...

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

7
30.08.2012, 18:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.08.2012, 18:12
Помогаю со студенческими работами здесь

Отображение инструментов редактирования строк таблицы
В mysql таблицы имеют следующий вид: http://images.vfl.ru/ii/1495476143/34b278b8/17317003_m.png ...

Функция формирует форму для редактирования записи в таблице БД
помогите, пожалуйста, при обращении к функции возвращает ошибку &quot; Warning: mysql_fetch_array()...

Изменение фонового цвета строк и ячеек по результатам редактирования
Доброго времени суток! Возникла проблемка: Отображаю данные из базы Mysql в QTableView при...

В параметры приложения записать массив строк с возможностью редактирования
Добрый день! Мне нужно хранить массив из 10 - 50 строк в &quot;параметрах&quot; приложения: чтобы при...

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