Я написал программу, которая меняет каждое слово в строке.Например, привет и до свидания превращается в olleh dna eybdoog.Моя программа работает, однако эффективность использования времени равна o (n ^ 2), и я, вероятно, мог бы написать меньше кода.Я пытаюсь не использовать какой-либо из string.functions () (я использовал string.length () один раз).Любые советы или предложения будут оценены.
#include <iostream>
using namespace std;
void breakString(string& me, char * otherOne, int len, int count);
void reverseString(char* s);
int main () {
string me=("hello and goodbye");
char * otherOne;
int len=0;
int count=0;
for (len; len<me.length()+1; len++){
count++;
if (me[len]=='\0') {
otherOne=new char[count];
len-=count-1;
count=0;
for (len; me[len]; len++){
otherOne[count]=me[len];
count++;
}
reverseString(otherOne);
breakString( me, otherOne, len, count);
}
if (me[len]==' ' ) {
otherOne=new char[count];
len-=count-1;
count=0;
for (len; me[len] != ' '; len++){
otherOne[count]=me[len];
count++;
}
reverseString(otherOne);
breakString( me, otherOne, len, count);
count=0;
otherOne=NULL;
delete[]otherOne;
}
}
delete[]otherOne;
cout << me;
return 0;
}
void reverseString(char* s)
{
int len =0;
char swap;
for (len=0; s[len] != '\0'; len++);
for ( int i=0; i<len/2; i++)
{
swap = *(s+i);
*(s+i)= *(s+len-i-1);
*(s+len-i-1) = swap;
}
}
void breakString(string &me, char * otherOne, int len, int count){
len-=count;
for (count=0; otherOne[count]; count++){
me[len]=otherOne[count];
len++;
}
}