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

Замена в строке цепочки символов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Sin() cos() http://www.cyberforum.ru/cpp-beginners/thread1133287.html
Всем приветик. У меня последний Qt MinGW. Вопрос: Перед использованием функции sin(x), мне сказали что нужно градусы перевести в радианы. Но я протестировал, при переводе в радианы, выдает не правильный результат, а вот если сразу в градусы подставлять - правильный. Так и должно быть?
C++ Матрицы. Распечатать квадрат той из них, в которой сумма элементов в двух главных диагоналях меньше Написать программу. Даны две квадратные действительны матрицы размерностью n * n. Распечатать квадрат той из них, в которой сумма элементов в двух главных диагоналях меньше. Если такая сумма одинакова для двух матриц, то вывести на экран матрицу в соответствии с желанием пользователя http://www.cyberforum.ru/cpp-beginners/thread1133278.html
Вычислить m-ю степень матрицы C++
Дана матрица А размерностью МхN. Вычислить m-ю степень этой матрицы. (А1=А, А2=А1*А, А3=А2*А і т.д.).
Массивы и циклы: РЛ числа C++
#include <iostream>; #include<locale> using namespace std; int rl3,k; int main() { setlocale(LC_ALL,"Rus"); cout<<"первое рл число"<<endl; int a; cin>>a;
C++ Литература по обработке ошибок http://www.cyberforum.ru/cpp-beginners/thread1133261.html
Приветствую, посоветуйте пожалуйста литературу по с/с++ (в том числе можно статьи/обсуждения) где подробно рассматривался бы вопрос стратегий обработки ошибок. В превую очередь интересует обработка ошибок без использования механизмов исключений (code style notation не разрешает). Важные аспекты: каким образом унифицировать обработку ошибок, какие приёмы использовать, каким образом достичь...
C++ Перед каждой серией одинаковых элементов массива вставить нули помогите пожалуйста отладить программу. задание "Дан целочисленный массив размера 20(10 элементов выводятся, остальные как резерв для вставленных нулей) . Вставить перед каждой его серией элемент с нулевым значением(под серией понимать два и более идущих подряд одинаковых элементов массива)." Привожу свой код программы: #include <iostream.h> #include <conio.h> #include <math.h> #include... подробнее

Показать сообщение отдельно
Anton_Kretov
 Аватар для Anton_Kretov
89 / 51 / 7
Регистрация: 26.06.2013
Сообщений: 179
30.03.2014, 10:56     Замена в строке цепочки символов
Нет проблем. В строке 14 мы входим в цикл, в котором будем пробегать каждый символ строки s. В строке 15 мы проверяем, одинаков ли символ с индексом s[i] с первым символом строки t (той строки, которую потом будем менять). То есть, в этой строчке начинается вся замена с нахождения той подстроки t в самой строке s.
В строке 16 мы входим в новый цикл, который имеет параметры: j и p. Параметр j нужен для сравнения символов подстроки t (поэтому он и имеет начальноке значение - нуль). Параметр p при объявлении равен i (это сделано для того, чтобы сравнивать ПОСЛЕДУЮЩИЕ символы строки. К примеру:
aaabcbaaa - s
bcb - t
Мы заходим в цикл на строке 14, теперь мы на строке 15. Проверяем, i = 3, s[i] = 'b', а t[0] = 'b'. Все верно, идем в строку 16, заходим в цикл. Строка 17 проверяет каждый последующий символ подстроки t с последующим символом строки s , но проверяет как? Дословно строка звучит так:
ЕСЛИ символ строки s с индексом p НЕ РАВЕН символу строки t с индексом j, ТОГДА выходим из цикла. (Все верно, нам и нужно проверить всю строку, а как нам ее еще проверить?)
Строка 18. Эта строка звучит так:
ЕСЛИ параметр j равен индексу последнего символа в подстроке t И ЕСЛИ последний проверяемый символ строки s равен последнему символу подстроки t (первое условие нам нужно для того, чтобы удостовериться в том, что цикл проверил уже все символы строки, кроме последнего), ТОГДА делаем замену этой подстроки t в строке s на подстроку r. Функция replace относится к заголовку <string>, поэтому работает со строками. Параметры могут быть разные, но один из вариантов, который использовал я:
1 - с какого символа заменять (к примеру, в строке aaabcbaaa мы заменяем с символа 3 (b))
2 - сколько символов заменяем (p - i + 1) - это разница между последним символом и первым символом подстроки в строке s.
3 - на какую подстроку надо менять те символы, которые мы указали во 2-ом параметре.
Вот и все, если что-то непонятно объяснил, пишите в личку, помогу, рассказав детальней. Для понимания этого алгоритма вам достаточно понять, что делает второй цикл. Вы просто мысленно пройдитесь по строкам 14-19, на листе бумаги имея строки s, t, r. На каждом этапе смотрите, что делает алгоритм и какие символы затрагиваются. Мне так часто помогает понять чужой код.
 
Текущее время: 16:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru