當前位置:編程學習大全網 - 源碼下載 - 翻譯程序

翻譯程序

呵呵,寫了個簡單的,又臭又長,希望對妳有幫助。。。

#include?<iostream>

#include?<fstream>

using?namespace?std;

const?int?line_len?=?1000;

const?int?statement_len?=?1000;

int?my_strcmp(char?*s1,?char?*s2);

int?my_strlen(char?*str);

int?remove_blank_back(char?*str);

int?remove_blank_front(char?*str);

void?fill_blank(int?n,?ofstream?&fout);

bool?start_with(char?*str,?char?*word);

bool?end_with(char?*str,?char?*word);

int?get_statement(char?*str,?char?*statement);

void?handle_line(char?*str,?ofstream?&fout);

void?handle_statement(char?*str,?ofstream?&fout);

int?main()

{

ifstream?fin("test.ming");

ofstream?fout("test.cpp");

char?line[line_len];

int?len1,?len2;

bool?start_flag?=?false;

fout?<<?"#include?<iostream>\n";

fout?<<?"using?namesapce?std;\n\n";

fout?<<?"int?main()\n";

while?(fin.getline(line,?line_len))

{

len1?=?remove_blank_back(line);

len2?=?remove_blank_front(line);

if?(!start_flag?&&?my_strcmp(line,?"kaishi"))

continue;

else?if?(!start_flag?&&?!my_strcmp(line,?"kaishi"))

{

start_flag?=?true;

fill_blank(len1?-?len2,?fout);

fout?<<?"{\n";

}

else

{

fill_blank(len1?-?len2,?fout);

handle_line(line,?fout);

}

}

fin.clear();

fin.close();

fout.clear();

fout.close();

}

int?my_strcmp(char?*s1,?char?*s2)

{

int?i?=?0;

for?(;?s1[i]?!=?'\0'?&&?s2[i]?!=?'\0';?i++)

if?(s1[i]?!=?s2[i])

return?s1[i]?-?s2[i];

if?(s1[i]?!=?'\0')

return?s1[i];

if?(s2[i]?!=?'\0')

return?-s2[i];

return?0;

}

int?my_strlen(char?*str)

{

int?i?=?0;

while?(str[i]?!=?'\0')

i++;

return?i;

}

int?remove_blank_back(char?*str)

{

int?len?=?my_strlen(str);

while?(str[len?-?1]?==?'?'?||?str[len?-?1]?==?'\t')

len--;

str[len]?=?'\0';

return?len;

}

int?remove_blank_front(char?*str)

{

int?i?=?0,?j?=?0;

while?(str[i]?!=?'\0'?&&?(str[i]?==?'?'?||?str[i]?==?'\t'))

i++;

for?(;?str[i]?!=?'\0';?i++,?j++)

str[j]?=?str[i];

str[j]?=?'\0';

return?j;

}

void?fill_blank(int?n,?ofstream?&fout)

{

for?(int?i?=?0;?i?<?n;?i++)

fout?<<?'?';

}

int?get_statement(char?*str,?char?*statement)

{

int?i?=?0,?j;

remove_blank_front(str);

for?(;?str[i]?!=?'\0'?&&?str[i]?!=?';';?i++)

statement[i]?=?str[i];

if?(str[i]?==?';')

statement[i++]?=?';';

statement[i]?=?'\0';

for?(j?=?i;?str[j]?!=?'\0';?j++)

str[j?-?i]?=?str[j];

str[j?-?i]?=?'\0';

return?i;

}

void?handle_line(char?*str,?ofstream?&fout)

{

char?statement[statement_len];

int?len1,?len2;

len1?=?remove_blank_back(str);

len2?=?remove_blank_front(str);

while?(len2)

{

fill_blank(len1?-?len2,?fout);

get_statement(str,?statement);

handle_statement(statement,?fout);

len1?=?len2;

len2?=?remove_blank_front(str);

}

fout?<<?endl;

}

void?handle_statement(char?*str,?ofstream?&fout)

{

if?(!my_strcmp(str,?"kaishi"))

fout?<<?"{";

else?if?(!my_strcmp(str,?"jieshu"))

fout?<<?"}";

else?if?(start_with(str,?"shuru"))

{

fout?<<?"cin?>>?";

for?(int?i?=?0;?str[i]?!=?'\0';?i++)

if?(str[i]?==?',')

fout?<<?"?>>?";

else?if?(str[i]?!=?'?')

fout?<<?str[i];

}

else?if?(start_with(str,?"xunhuan"))

{

remove_blank_front(str);

fout?<<?"while?("?<<?str?<<?")";

}

else?if?(start_with(str,?"ruguo"))

{

remove_blank_front(str);

fout?<<?"if?("?<<?str?<<?")";

}

else?if?(start_with(str,?"shuchu"))

{

fout?<<?"cout?<<?";

for?(int?i?=?0;?str[i]?!=?'\0';?i++)

if?(str[i]?==?',')

fout?<<?"?<<?";

else?if?(str[i]?!=?'?')

fout?<<?str[i];

}

else?if?(end_with(str,?"zhengxing;"))

fout?<<?"int?"?<<?str?<<?';';

else?if?(end_with(str,?"shixing;"))

fout?<<?"float?"?<<?str?<<?';';

else

fout?<<?str;

}

bool?start_with(char?*str,?char?*word)

{

int?i?=?0,?j?=?0;

for?(;?str[i]?!=?'\0'?&&?word[i]?!=?'\0';?i++)

if?(str[i]?!=?word[i])

return?false;

if?(word[i]?!=?'\0')

return?false;

for?(j?=?i;?str[j]?!=?'\0';?j++)

str[j?-?i]?=?str[j];

str[j?-?i]?=?'\0';

return?true;

}

bool?end_with(char?*str,?char?*word)

{

int?len_str,?len_word;

len_str?=?my_strlen(str);

len_word?=?my_strlen(word);

int?i?=?len_str?-?1;

int?j?=?len_word?-?1;

for?(;?i?>=?0?&&?j?>=?0;?i--,?j--)

if?(str[i]?!=?word[j])

return?false;

if?(j?>=?0)

return?false;

str[i?+?1]?=?'\0';

return?true;

}

  • 上一篇:零基礎如何系統學習Java Web?
  • 下一篇:methodreturn的值vue會自動變化渲染麽
  • copyright 2024編程學習大全網