2014秋C++第16週プロジェクト5参考プログラミング処理C++ソースコード

6834 ワード

カリキュラムのホームページhttp://blog.csdn.net/sxhelijian/article/details/39152703、カリキュラムリソースは雲学堂の「賀先生教室」で同期して展示され、使用するアカウントはカリキュラムのホームページに表示してください. 
【項目5-プログラミング処理C++ソースコード】コードフォーマットの機能はCodeBlocksなどのIDEで提供されています.私たちはプログラムを書くことができて、処理するデータはC++で書いたソースコードファイルです.C++ソースファイルは、プログラムで操作できるテキストファイルです.(1)C++プログラムを読み込んで、main()関数が1つしかないかどうかを判断し、「一時的に問題が発見されなかった」、または「main()関数がない」、または「複数のmain()関数を定義できない」を出力する.ヒント1:簡単な処理で、「main()」だけを比較して判断することができ、実際の様々な可能性を考慮すると、mainの後ろの括弧には他にもいろいろな書き方があります.最も簡単な状況で処理することをお勧めします.ヒント2:読み込んだコードを文字列「main()」と比較する関数を設計することをお勧めします.関数は、s 1が読み込まれた1行のs 2に「含まれる」かどうかを判断するために使用され、呼び出されると、形参s 1の実参は「main()」でよい.これにより、書き込みは「抽象」レベルを向上させ、より容易に実現され、より高いコード品質に対応する.(2)一つのC++プログラムを読み込んで、プログラムの中のすべての左かっこ"{"と右かっこ"}"が単独で1行を占め、新しいプログラムは別の.cppファイルに保存し、処理したプログラムを画面に表示し、表示時に行番号を付ける.(3)C++プログラムを読み込み、m、nの2つの数字を入力し、m行目からのn行コードを注釈として使用し(すなわち、これらの行の前に"//")、新しいプログラムを別の.cppファイルに保存し、処理したプログラムを画面に表示し、表示時に上り番号を付ける.(4)(選択して、木は参考解答があります)C++プログラムを読み込んで、そのフォーマットを整理して、規範によってレイアウトさせます.(2)各文は単独で1行を占める.(3)各行は統一された縮尺排出(1つの「{」に遭遇するたびに、その次の行のプログラムは、最初の意味のある記号の前のスペース数を4増やし、1つの「}」に遭遇するたびに、その次の行のプログラムは、最初の意味のある記号の前のスペース数を4減らします.終わりましたか?どうしてそんなことができますか?CodeBlocksに「source code formatter」を作ることができますプラグイン行っちゃった!?マイクロソフトの製品に「集積開発環境(IDE)」があるから、応募しない?へへへ、給料を見てからにしよう.考えられないわけではない.
参考解答:
(1)C++プログラムを読み込んで、main()関数が1つしかないかどうかを判断し、「一時的に問題が発見されなかった」、または「main()関数がない」、または「複数のmain()関数を定義できない」を出力する.
#include <fstream>
#include<iostream>
#include<string>
#include<cstdlib>
using namespace std;
int appear(char*s1,char*s2);
int main( )
{
    char line[256];
    char main_fun[8]="main()";
    int main_num=0;//  ,    

    //               
    ifstream sourceFile("source.cpp",ios::in);  //          
    if(!sourceFile)       //        
    {
        cerr<<"source code read error!"<<endl;
        exit(1);
    }
    while(!sourceFile.eof())
    {
        sourceFile.getline(line,255,'
'); main_num+=appear(line,main_fun); if (main_num>1) // 1 , break; } sourceFile.close(); // if(main_num==0) cout<<"error: no main()."; else if (main_num==1) cout<<"right: a main() be exist."; else cout<<"error: more than one main()."; cout<<endl; return 0; } // s2 s1 int appear(char*s1,char*s2) { int n=0,flag; char *p,*q; for(; *s1!='\0'; s1++) { if (*s2==*s1) /* */ { flag=1; p=s1 ; /*s1 p */ q=s2; for(; *q!='\0';) /* */ { if (*q++!=*p++) { flag=0; break; } } if (flag==1) n++; } } return(n); }

(2)一つのC++プログラムを読み込んで、プログラムの中のすべての左かっこ"{"と右かっこ"}"が単独で1行を占め、新しいプログラムは別の.cppファイルに保存し、処理したプログラムを画面に表示し、表示時に行番号を付ける.
#include <fstream>
#include<iostream>
//#include<string>
#include<cstdlib>
using namespace std;
void outprogram(char *filename);
int main( )
{
    char ch1,ch2;
    //               
    ifstream sourceFile("source.cpp",ios::in);  //          
    if(!sourceFile)       //        
    {
        cerr<<"source code read error!"<<endl;
        exit(1);
    }
    ofstream outFile("newsource.cpp",ios::out);  //          
    if(!outFile)       //        
    {
        cerr<<"new source code write error!"<<endl;
        exit(1);
    }

    ch1='\0';
    while(!sourceFile.eof())
    {
        sourceFile.get(ch2);
        //      ,          ,        
        if((ch2=='{'||ch2=='}')&&(ch1!='
')) outFile.put('
'); else // , , if((ch1=='{'||ch1=='}')&&(ch2!='
')) outFile.put('
'); outFile.put(ch2); // ch1=ch2; } outFile.close(); sourceFile.close(); cout<<" :"<<endl; outprogram("newsource.cpp"); return 0; } void outprogram(char *filename) { char line[256]; int n = 1; ifstream inFile(filename, ios::in); // if(!inFile) // { cerr<<"file open error!"<<endl; exit(1); } while (!inFile.eof()) { inFile.getline(line,255,'
'); cout<<n<<'\t'<<line<<endl; n++; } inFile.close(); return; }

(3)C++プログラムを読み込み、m、nの2つの数字を入力し、m行目からのn行コードを注釈として使用し(すなわち、これらの行の前に"//")、新しいプログラムを別の.cppファイルに保存し、処理したプログラムを画面に表示し、表示時に上り番号を付ける.
#include <fstream>
#include<iostream>
#include<cstring>
#include<cstdlib>
using namespace std;
void outprogram(const char *filename);
int main( )
{
    char line[256];
    int m,n;
    //               
    ifstream sourceFile("source.cpp",ios::in);  //          
    if(!sourceFile)       //        
    {
        cerr<<"source code read error!"<<endl;
        exit(1);
    }
    ofstream outFile("newsource.cpp",ios::out);  //          
    if(!outFile)       //        
    {
        cerr<<"new source code write error!"<<endl;
        exit(1);
    }
    cout<<"    m    n       ,   m n:";
    cin>>m>>n;
    int n1=0;
    while(!sourceFile.eof())
    {
        sourceFile.getline(line,255,'
'); n1++; if(n1>=m&&n1<m+n) outFile.put('/').put('/'); outFile.write(line,strlen(line)); outFile.write("
",1); } outFile.close(); sourceFile.close(); cout<<" :"<<endl; outprogram("newsource.cpp"); return 0; } void outprogram(const char *filename) { char line[256]; int n = 1; ifstream inFile(filename, ios::in); // if(!inFile) // { cerr<<"file open error!"<<endl; exit(1); } while (!inFile.eof()) { inFile.getline(line,255,'
'); cout<<n<<'\t'<<line<<endl; n++; } inFile.close(); return; }
===================        CSDN    =================
|== IT                  (     ) ==|
|== C++                  (     ) ==|
|==     ——《    ——  IT      》    ==|
=====  IT       ,                =====