データ構造-列-test.ming



件名:4、シリアル設定タグ
作者:匿名投稿日:2016年8月31日水曜日午前11時15分23秒CST最終修正日:2016年8月31日水曜日午前11時15分23秒CST閲覧総数:11あなたの閲覧回数:1
翻訳プログラム小明は初めてC++を学んで、すでに4つの演算、関係演算、論理演算、賦値演算、入出力、簡単な選択と循環構造の使い方を理解して、しかし彼の英語はあまりよくなくて、あまり多くの保留字を覚えられなくて、そこで彼は中国語のピンインを利用して保留字をして、C++をパクリして、1種の自分の思想を表現するアルゴリズムの記述規則を発明しました.ルールは簡単です.彼はプログラムの頭にピンインの名前でマークし始めます.C++プログラムの「{,}」はピンイン「kaishi,jieshu」で直感的に表します.選択とループは単一の構造しか採用されず、保留字もそれぞれ対応するピンインで表現されているが、選択やループ条件を表す際に余分な括弧を外した.入出力もピンインで表す.データ型は整数型(int)と実型(float)のみを保持し、ピンインで表され、彼の習慣変数によって前、型が後である.今、明ちゃんはC++を熟知しているあなたにプログラムを書いてもらいたいと思っています.彼が設計したアルゴリズムでルールを記述したアルゴリズムをC++ソースコードに翻訳します.入力ファイルの拡張子は.ming、出力ファイルの拡張子は.cpp、以下の例:
小明アルゴリズム(test.ming):chengxu 1 kaishi,j zhengxing; k shixing;  i=1;j=0;  shuru k;  xunhuan i<10  kaishi  j=j+i;  i++;  jieshu  ruguo j>10  kaishi  k=j*1.0/i;  jieshu  shuchu k,j; jieshu
翻訳されたC++ソースコード(test.cpp):#include using namespace std;int main() {  int i,j;  float k;  i=1;j=0;  cin>>k;  while( i<10)  {  j=j+i;  i++;  }  if(j>10)  k=j*1.0/i;  cout<  return 0; }
要求:文字列操作は自分で実現する必要があります.
-----------------------------------------------------main.cpp----------------------------------------------
#include 
#include 
#include 
#include
#include "KMP.h"
using namespace std;


int main()
{
    ifstream input("test.ming");
    ofstream output("test.cpp");
    string sourceFile;///         
    while(getline(input,sourceFile))
    {
        bool fenhao = false;
        if(sourceFile[sourceFile.length()-1]==';')
            fenhao=true;
        bool go=false;
        for(int matchTime=0; matchTime<9; matchTime++) ///test.ming   9    ,         ,  matchTime            keyWords
        {
            int i;
            int x=KMPIndex(sourceFile,keyWords[matchTime]);///KMP        ,    -1,            
            if(x!=-1)///    ,  if  
            {
                go=true;///go   true,    for             
                if(matchTime==0)///          chengxu1 ,           
                {
                    output<>";///                ,               >>
                        else  if(sourceFile[i]==';')///           
                        {
                            fenhao=true;
                            break;
                        }
                        else output<

--------------------------------------------------KMP.h------------------------------------------------------
#ifndef KMP_H_INCLUDED
#define KMP_H_INCLUDED

#include
using namespace std;
string keyWords[9]=
{
    "chengxu1",//0
    "kaishi",//1
    "jieshu",//2
    "xunhuan",//3
    "shuru",//4
    "shuchu",//5
    "ruguo",//6
    "zhengxing",//7
    "shixing"//8
};
string printWords[9]=
{
    "#include 
using namespace std;
int main()",//0 "{",//1 "}",//2/ "while(",//3 "cin>>",//4 "cout<=line.length()) return (i-line.length());// else return -1;// } void readFile(FILE *pf) { FILE *pf2 = fopen("test.txt", "w"); if(pf2 == NULL) { printf("file error!
"); fclose(pf); exit(0); } char ch; while(!feof(pf)) { ch = fgetc(pf); putchar(ch); fputc(ch, pf2); } fclose(pf2); fclose(pf); cout<