Цитата:
Сообщение от REY
Конечно, и именно по этому в циклах перебора строк ,сказал перебирать элементы, пока значение строки не станет равным ноль символу.
|
Обрати внимание на строку pStr1[i+j+1]=pStr2[j]; из предыдущего варианта
Цитата:
Сообщение от REY
Не мог бы ты подсказать, как этот "дерьмовый" алгоритм оптимизировать, дабы исключить "временную сложность" и прочие беды. Если подскажешь, то искреннее тебе спасибо за это.
|
Это вариант уже лучше. Осталось только убрать последний цикл и вывести итоговую строку за раз. Можно еще перейти с индексов на указатели - мне кажется так код будет понятнее и не нужна арифметика на индексах
Код:
#include <iostream.h>
int main()
{
cout << "Vvedite pervuiu stroku: \n";
char szStr1[60]; // здесь динамическая память особо не нужна + 30 символов под вторую строку
cin.getline(szStr1, 30);
cout << "Vvedite vtoruiu stroku: \n";
char szStr2[30];
cin.getline(szStr2, 30);
char* pIt1 = szStr2;
while(*pIt1) ++pIt1; // pIt указывает на завершающий ноль
for(char* pIt2 = szStr2; *pIt2; ++pIt1, ++pIt2)
*pIt1 = *pIt2;
*pIt1 = '\0'; // в цикле завершающий ноль не ставится
cout << "Itogovaia stroka: " << szStr1 << endl;
return 0;
}
Как-то так