【項(xiàng)目】寫代碼的代碼【完】
本項(xiàng)目實(shí)現(xiàn)寫代碼的代碼,用于C++,實(shí)現(xiàn)了快速排序、二分查找、字符串匹配和for和if的配合。
if(!flag3) {//開頭
? ? fout << "#include <iostream>" << endl;
? ? fout << "#include <fstream>" << endl;
? ? fout << "#include <algorithm>" << endl;
? ? fout << "#include <string>" << endl;
fout << "#include <string.h>" << endl;
? ? fout << "#include <cstdlib>" << endl;
? ? fout << "#include <ctime>" << endl;
? ? fout << "#include <cmath>" << endl;
? ? fout << "#include <sstream>" << endl;
? ? ? ?fout << "using namespace std;" << endl;
? ? ? ?fout << "int main() {" << endl;
? ? ? ?fout << " ? ?srand(time(NULL));" << endl;
? ? ? ?fout << " ? ?ofstream fout;" << endl;
? ? ? ?fout << " ? ?ifstream fin;" << endl;
? ? ? ?fout << " ? ?stringstream stream;" << endl;
? ? ? ?fout << " ? ?fout.open(\"o.txt\");" << endl;
? ? ? ?fout << " ? ?fin.open(\"in.txt\");" << endl;
? ? ? ?fout << " ? ?int a[10000];" << endl;
? ? ? ?fout << " ? ?string b[10000];" << endl;
? ? fout << " ? ?string temp;" << endl;
? ? ? ?fout << " ? ?getline(fin, temp);" << endl;
? ? ? ?fout << " ? ?temp += '\\0';" << endl;
bool flag4 = false;
for(int i = 0;temp[i] != '\0';++i) {
if(temp[i] == '\"' || temp[i] == 'f' || temp[i] == 'F' || temp[i] == 'i' || temp[i] == 'I' ) {
flag4 = true;
break;
}
}
if(!flag4) {//判斷是字符串輸入還是數(shù)字輸入
fout << " ? ?int count = 0;" << endl;
fout << " ? ?bool flag = false;" << endl;
fout << " ? ?for(int i = 0;temp[i] != '\\0';++i) {" << endl;
fout << " ? ? ? ?if(temp[i] != ' '){" << endl;
fout << " ? ? ? ? ? ?b[count] += temp[i];" << endl;
fout << " ? ? ? ?}" << endl;
fout << " ? ? ? ?else if(temp[i] == ' ') {" << endl;
fout << " ? ? ? ? ? ?flag = true;" << endl;
fout << " ? ? ? ?}" << endl;
fout << " ? ? ? ?if(flag) {" << endl;
fout << " ? ? ? ? ? ?stream << b[count];" << endl;
fout << " ? ? ? ? ? ?stream >> a[count];" << endl;
fout << " ? ? ? ? ? ?stream.clear();" << endl;
fout << " ? ? ? ? ? ?++count;" << endl;
fout << " ? ? ? ? ? ?flag = false;" << endl;
? ? ? fout << " ? ? ? ?}" << endl;
fout << " ? ?}" << endl;
}
else {
}
}
這里是寫入開頭部分,通過flag的操作保證只會(huì)書寫一次,并且判斷是否為數(shù)字輸入還是字符串輸入。
flag3 = true;
? ?int flag2 = -1;
? ?for(int i = 0;temp[i] != '\0';++i) {//判斷是哪種邏輯
? ? if(temp[i] == '>') {
? ? flag2 = 1;
? ? break;
}
else if(temp[i] == '<') {
flag2 = 2;
break;
}
else if(temp[i] == 'l' || temp[i] == 'L') {
flag2 = 3;
search1 = temp[i + 10];
break;
}
else if(temp[i] == 'u' || temp[i] == 'U') {
flag2 = 4;
search2 = temp[i + 10];
break;
}
else if(temp[i] == 'b' || temp[i] == 'B') {
flag2 = 5;
search3 = temp[i + 12];
break;
}
else if(temp[i] == '\"') {
flag2 = 6;
break;
}
else if(temp[i] == 'f' || temp[i] == 'F' || temp[i] == 'i' || temp[i] == 'I' ) {
flag2 = 7;
break;
}
}
判斷是哪種邏輯,是排序還是二分查找還是字符串匹配還是for和if的配合。
if(flag2 == 1) {//快速排序
fout << " ? ?sort(a, a + count, greater<int>());" << endl;
fout << " ? ?for(int i = 0;i < count;++i) {" << endl;
fout << " ? ? ? ?fout << a[i] << ' ';" << endl;
fout << " ? ?}" << endl;
fout << " ? ?fout << endl;" << endl;
}
else if(flag2 == 2) {
fout << " ? ?sort(a, a + count, less<int>());" << endl;
fout << " ? ?for(int i = 0;i < count;++i) {" << endl;
fout << " ? ? ? ?fout << a[i] << ' ';" << endl;
fout << " ? ?}" << endl;
fout << " ? ?fout << endl;" << endl;
}
這兩個(gè)是快速排序的輸出
else if(flag2 == 3) {//二分查找
fout << " ? ?int x = lower_bound(a, a + count, " << search1 << ") - a;" << endl;
fout << " ? ?fout << x << endl;" << endl;
}
else if(flag2 == 4) {
fout << " ? ?int y = upper_bound(a, a + count, " << search2 << ") - a;" << endl;
fout << " ? ?fout << y << endl;" << endl;
}
else if(flag2 == 5) {
fout << " ? ?bool z = binary_search(a, a + count, " << search3 << ");" << endl;
fout << " ? ?fout << z << endl;" << endl;
}
這三個(gè)是二分查找
else if(flag2 == 6) {//字符串匹配
fout << " ? ?string str;" << endl;
fout << " ? ?for(int i = 0;i < temp.length() - 1;++i) {" << endl;
fout << " ? ? ? ?str += temp[i];" << endl;
fout << " ? ?}" << endl;
fout << " ? ?str += '\\0';" << endl;
fout << " ? ?char str1[10000], str2[10000];" << endl;
? fout << " ? ?int i;" << endl;
? ? ? ?fout << " ? ?for(i = 0;temp[i] != '\\0';++i) {" << endl;
? ? fout << " ? ? ? ?str1[i] = temp[i];" << endl;
? ?fout << " ? ?}" << endl;
? ?fout << " ? ?str1[i] = '\\0';" << endl;
? ?fout << " ? ?for(i = 0;str[i] != '\\0';++i) {" << endl;
? ? fout << " ? ? ? ?str2[i] = str[i];" << endl;
? ?fout << " ? ?}" << endl;
? ?fout << " ? ?str2[i] = '\\0';" << endl;
? ? ? ?fout << " ? ?char* pos = strstr(str1, str2);" << endl;
? ? ? ?fout << " ? ?fout << *pos << endl;" << endl;
}
這個(gè)是字符串匹配
else if(flag2 == 7) {//for和if的配合
int c = 0;
for(int i = 0;i < temp.length();++i) {
if(temp[i] == 'f' || temp[i] == 'F') {
for(int j = 0;j < c;++j) {
? ? ? ?fout << " ? ?";
? ? ? ?}
fout << "for(;;) {" << endl;
i += 2;
++c;
}
else if(temp[i] == 'i' || temp[i] == 'I') {
for(int j = 0;j < c;++j) {
? ? ? ?fout << " ? ?";
? ? ? ?}
fout << "if() {" << endl;
i += 1;
++c;
}
}
int sum = c - 1;
for(int i = 0;i < c;++i) {
for(int j = sum;j > 0;--j) {
? ? ? ?fout << " ? ?";
? ?}
? ?--sum;
fout << "}" << endl;
}
}
這個(gè)是for和if的配合
if(y == num3 - 1) {//結(jié)尾
? ?fout << " ? ?fin.close();" << endl;
fout << " ? ?fout.close();" << endl;
? ? ? ?fout << " ? ?return 0;" << endl;
? ? ? ?fout << "}" << endl;
}
這個(gè)是輸出結(jié)尾
int main(int argc, char** argv) {
? ?fout.open("out.cpp");
fin1.open("code.txt");
fin2.open("in.txt");
flag3 = false;
count1 = 0;
num2 = 0;
num3 = 0;
num4 = 0;
for(num0 = 0;getline(fin2, a2[num0]);++num0){//讀取文件
a2[num0] += '\0';
temp = a2[num0];
count2 = 0;
for(int i = 0;temp[i] != '\0';++i) {
if(temp[i] != ' '){
a3[count2] += temp[i];
++count2;
}
}
}
for(num = 0;getline(fin1, a1[num]);++num){//判斷是哪一部分
a1[num] += '\0';
temp = a1[num];
flag = -1;
for(int i = 0;i < temp.length();++i) {
if(temp[i] == '#') {
flag = 0;
break;
}
else if(temp[i] == 'l' || temp[i] == 'L') {
flag = 2;
break;
}
else if(temp[i] == 'o' || temp[i] == 'O') {
flag = 3;
break;
}
? ?}
? ?if(flag == 0) {
? ? continue;
}
else if(flag == 2) {
for(int i = 0;temp[i] != ':';++i) {
count1 = i;
}
++count1;
++count1;
for(;temp[count1] != '\0';++count1){
logic[num3] += temp[count1];
}
logic[num3]+= '\0';
++num3;
}
else if(flag == 3) {
for(int i = 0;temp[i] != ':';++i) {
count1 = i;
}
++count1;
++count1;
for(;temp[count1] != '\0';++count1){
output[num4] += temp[count1];
}
output[num4] += '\0';
++num4;
}
}
temp = output[0];
if(temp[0] == 'n' || temp[0] == 'N') {//對邏輯進(jìn)行處理
out1();
}
else if(temp[0] == 'r' || temp[0] == 'R'){
for(int i = 0;i < num3;++i) {
temp = logic[i];
out2(i);
}
}
else {
out1();
}
fin1.close();
fin2.close();
fout.close();
return 0;
}
以上是主函數(shù)
if(temp[0] == 'n' || temp[0] == 'N') {//沒有輸出的情況
fout << "#include <iostream>" << endl;
? ? ? ?fout << "using namespace std;" << endl;
? ? ? ?fout << "int main() {" << endl;
? ? ? ?fout << " ? ?return 0;" << endl;
? ? ? ?fout << "}" << endl;
}
這個(gè)是處理沒有輸出的情況
else {//有輸出的情況
fout << "#include <iostream>" << endl;
fout << "#include <fstream>" << endl;
? ? ? ?fout << "using namespace std;" << endl;
? ? ? ?fout << "int main() {" << endl;
? ? ? ?fout << " ? ?ofstream fout;" << endl;
? ? ? ?fout << " ? ?fout.open(\"o.txt\");" << endl;
? ? ? ?fout << " ? ?fout << \"" << temp << "\";" << endl;
? ? ? ?fout << " ? ?fout.close();" << endl;
? ? ? ?fout << " ? ?return 0;" << endl;
? ? ? ?fout << "}" << endl;
}
這個(gè)是處理有輸出的情況
實(shí)際操作如圖:


得到代碼
運(yùn)行結(jié)果如圖:

這里提示數(shù)組數(shù)據(jù)最后要以空格結(jié)尾。
然后是快速排序和二分查找的配合:
實(shí)際操作如圖:


得到代碼
運(yùn)行結(jié)果如圖:

然后是字符串匹配:

得到代碼
運(yùn)行結(jié)果如圖:

然后是for和if的配合:

編輯
得到代碼:
#include <iostream> #include <fstream> #include <algorithm> #include <string> #include <string.h> #include <cstdlib> #include <ctime> #include <cmath> #include <sstream> using namespace std; int main() { ? ?srand(time(NULL)); ? ?ofstream fout; ? ?ifstream fin; ? ?stringstream stream; ? ?fout.open("o.txt"); ? ?fin.open("in.txt"); ? ?int a[10000]; ? ?string b[10000]; ? ?string temp; ? ?getline(fin, temp); ? ?temp += '\0'; for(;;) { ? ?if() { ? ? ? ?for(;;) { ? ? ? ? ? ?if() { ? ? ? ? ? ? ? ?for(;;) { ? ? ? ? ? ? ? ?} ? ? ? ? ? ?} ? ? ? ?} ? ?} } ? ?fin.close(); ? ?fout.close(); ? ?return 0; }
然后output還有none和有輸出的情況,none我們直接選擇輸出空程序,有輸出直接輸出結(jié)果,不管邏輯。
none情況如圖:

得到代碼
有輸出的情況如圖:

得到代碼:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
? ?ofstream fout;
? ?fout.open("o.txt");
? ?fout << "1 2 3 4
運(yùn)行結(jié)果如圖:

以上就是寫代碼的代碼的全部內(nèi)容了,希望能給各位C++的忠粉帶來便利!
