Решаю задачку, не понимаю как сделать замену только в первой половине строки.
Задача:
В заданной строке в первой половине строки все точки заменить символом ~
.
Сделал только замену:
#include <iostream>
int main()
{
char stroka[] = ".....";
std::cout << stroka << "\n";
for(int i = 0; stroka[i] != '\0'; ++i)
{
if(stroka[i] == '.')
stroka[i] = '~';
}
std::cout << stroka << "\n";
return 0;
}
Давайте для начала пойдем "сложным путем". Очень сложным.
#include <iostream>
int main()
{
char stroka[] = ".....";
std::cout << stroka << "\n";
int len = sizeof(stroka);
for(int i = 0; i < len/2; ++i)
{
if(stroka[i] == '.')
stroka[i] = '~';
}
std::cout << stroka << "\n";
return 0;
}
Но только у нас же с++!, поэтому, хотя бы так.
#include <iostream>
int main()
{
std::string stroka = ".....";
std::cout << stroka << "\n";
int len = stroka.length();
for(int i = 0; i < len/2; ++i)
{
if(stroka[i] == '.')
stroka[i] = '~';
}
std::cout << stroka << "\n";
return 0;
}
Правда нужно подумать, что такое половина строки, если кол-во символов нечетно.
Вариант без предварительного вычисления длины си-строки:
#include <iostream>
void replace_before_middle(char * begin)
{
char const * last = begin;
while (*last && *++last) {
if (*begin == '.') {
*begin = '~';
}
++begin;
++last;
}
}
int main()
{
char str[] = ".+...";
replace_before_middle(str);
std::cout << str << std::endl;
}
#include <algorithm>
//...
std::replace(stroka, stroka + strlen(stroka)/2, '.', '~');
//вариант второй
std::string stroka("..........");
size_t hf = stroka.length() / 2;
cout << stroka.replace(0, hf, hf, '~' );
Предложу и я свой вариант:
#include <iostream>
int main()
{
char stroka[] = ".....";
std::cout << stroka << "\n";
stroka[0] = '~';
stroka[1] = '~';
std::cout << stroka << "\n";
return 0;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Написал код для подсчета суммы цифр в числе 100! для решения задачи на Проекте ЭйлераДо этого успешно использовал кусок кода, который непосредственно...