私は http://www.spoj.pl/problems/HELLOKIT/C++プログラムを最適化
明らかにここに記載されているこの問題に近づいたために検討されるように、それが受け入れられていません。私は次のコードを最適化するために何をすべきか知りたい。ロジックはシンプルですが、なぜ私はいつもシンプルな問題のために長いプログラムを書くことに終わります。どうもありがとう。私はあなたが良いと堅牢なプログラムを書くのを手伝ってくれることを願っています。ここ はコード
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<conio.h>
using namespace std;
void rotate(string a , int b){
string newstring;
bool result=true;
char displaystr[50],displaystr2[50],sourcestring[50];
for(int i=0;i<b;i++){
newstring = newstring.append(a);//Append the string with itself b times
}
cout<<newstring<<endl;
int length = newstring.length() ;
for(int l=0;l<length;l++){
sourcestring[l]=newstring[l]; //copy the string to a char*
}
int index=0,counter=1;//counter keeps track of changing source string
while(result){
index=0;
while(index<length-1){
if(counter==1){
displaystr[index] = sourcestring[index+1];//rotating the string
displaystr[length-1] = sourcestring[0];
index++;
}
else{
displaystr2[index] = displaystr[index+1];//rotatinsg when source change
displaystr2[length-1] = displaystr[0];
index++;
}
}
if(counter>1){
for(int i=0;i<length;i++)
displaystr[i]=displaystr2[i];
}
counter++;
if(strncmp(displaystr,sourcestring,length)==0){
result=false;
return;
}
for(int i=0;i<length;i++)
cout<<displaystr[i];
cout<<endl;
}
int main(){
int testcases=0;
string key;
int num=0;
string keyarr[10];
int numarr[10];
int i=0,j=0;
while(testcases<10){
getline(cin,key);
if(key==".")
break;
cin>>num;
cin.ignore(1024, '\n');
keyarr[i]=key;
numarr[i]=num;
i++;
testcases++;
}
for(int j=0;j<i;j++){
rotate(keyarr[j],numarr[j]);
}
getch();
return 0;
}
の話コードサンプルIAMはこの
#include<iostream>
#include<stdio.h>
#include<string>
#include<conio.h>
using namespace std;
void rotate(string a , int b){
string newstring,displaystr;
for(int i=0;i<b;i++){
newstring = newstring.append(a);
}
int length = newstring.length() ;
int index=0;
while(index<length-1){
displaystr[index] = newstring[index+1];
index++;
}
displaystr[length-1]=newstring[0];
cout<<displaystr;
}
int main(){
rotate("love",2);
getch();
return 0;
}
私が気づくいくつかの事柄:私は、関連するコードが10行(max!)を超えず、入力ルーチンも多くと期待しています。なぜあなたのコードはずっと長くなっていますか?また、なぜあなたは固定サイズのバッファを使用していますか?私はそれ以上正直ではなかった。 –
これはcodereviewsに属すると思います。 –
コードをよりよくフォーマットしてください。 – m0skit0