第十四周项目4-2:IDE花括号换行机制

问题及代码:

/* 
*Copyright (c)2015,烟台大学计算机与控制工程学院 
*All rights reserved. 
*文件名称:test.cpp 
*作    者:陈文青 
*完成日期:2015年6月18日 
*版 本 号:v1.0 
* 
*问题描述:读入一个C++程序,使程序中的所有左花括号“{”和右花括号“}”都单独占一行,新程序保存到另一个.cpp文件中,并在屏幕上显示处理过的程序,显示时加上行号。
*程序输入: 
*程序输出: 
*/
#include <fstream>
#include<iostream>
#include<cstdlib>
using namespace std;
int main( )
{
    //将文件中的数据读入到字符数组中
    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);
    }

    char ch1,ch2;    //表示前后两个字符
    while(!sourceFile.eof())
    {
        sourceFile.get(ch2);
        //花括号前没有换行,添加换行符
        if((ch2=='{'||ch2=='}')&&(ch1!='\n'))
            outFile.put('\n');
        //花括号后没有换行,添加换行符
        else if((ch1=='{'||ch1=='}')&&(ch2!='\n'))
            outFile.put('\n');
        outFile.put(ch2); //输出当前读入的符号
        ch1=ch2;//ch1赋值为ch2的字符,ch2继续向下读取
    }
    outFile.close();
    sourceFile.close();

    //加行号后输出
    cout<<"经过处理后的源程序是:"<<endl;
    char line[256];
    int n=1;
    ifstream inFile("newsource.cpp", ios::in);  //以输入的方式打开文件
    if(!inFile)       //测试是否成功打开
    {
        cerr<<"file open error!"<<endl;
        exit(1);
    }
    while (!inFile.eof())
    {
        inFile.getline(line,255,'\n');
        cout<<n<<".\t"<<line<<endl;
        n++;
    }
    inFile.close();
    return 0;
}

运行结果:

知识点总结:

换行符和行号安排在一起可能会比较困难,所以将这两个步骤分开进行,会使得程序设计起来更见简便

在进行识别花括号的换行时,设置两个字符型进行前后的识别

时间: 2024-07-29 14:42:16

第十四周项目4-2:IDE花括号换行机制的相关文章

十四周 项目 1 动物这样叫

#include <iostream> #include <string> using namespace std; class Animal { public: virtual void cry() { cout<<"不知哪种动物,让我如何学叫?"<<endl; } }; class Mouse:public Animal { public: Mouse(string nam,char s):name(nam),sex(s) {} vo

第二十四周项目4-猴子选大王(约瑟夫问题)

一群猴子,编号是1,2,3 ...m,这群猴子(m个)按照1-m的顺序围坐一圈.从第1只开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王.输入m和n,输出为大王的猴子是几号. 提示1:(1)链表解法:可以用一个循环的单链表来表示这一群猴子.表示结点的结构体中有两个成员:一个保存猴子的编号,一个为指向下一个人的指针,编号为m的结点再指向编号为1的结点,以此构成环形的链.当数到第n个时,该结点被删除,继续数,直到只有一个结点.(2)使用结构数组来表示

第十四周 项目三 电子词典

/* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:d.cpp *作 者:张旺华 *完成日期:2015年6月3日 *版 本 号:v1.0 */ /*项目3-OOP版电子词典] 做一个简单的电子词典.在文件dictionary.txt中,保存的是英汉对照的一个词典,词汇量近8000个, 英文.中文释义与词性间用'\t'隔开. (1)编程序,由用户输入英文词,显示词性和中文释义. 提示1:如果要用OOP完成这个词典(当然也

第十四周项目3-OOP版电子词典

做一个简单的电子词典.在文件dictionary.txt中,保存的是英汉对照的一个词典,词汇量近8000个,英文.中文释义与词性间用'\t'隔开. (1)编程序,由用户输入英文词,显示词性和中文释义. 提示1:如果要用OOP完成这个词典(当然也可以用OO方法实现),可以定义一个Word类表示一个词条,其中的数据成员string english; 表示英文单词,string chinese;表示对应中文意思,string word_class;表示该词的词性:还可以定义一个Dictionary类,

第十四周 项目一 小玩文件

<span style="font-size:18px;">[项目1 - 小玩文件] (1)下面程序的功能是统计文本文件abc.txt中的字符个数,</span> <span style="font-size:18px;">#include <iostream> #include <cstdlib> #include <fstream>// //fstream提供了三个类,用来实现c++对文件的

第十四周项目3:OOP版电子词典

问题: /* *Copyright (c)2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:project.cpp *作 者:陈文青 *完成日期:2015年6月17日 *版 本 号:v1.0 * *问题描述:做一个简单的电子词典.在文件dictionary.txt中,保存的是英汉对照的一个词典,词汇量近8000个,英文.中文释义与词性间用'\t'隔开. 编程序,由用户输入英文词,显示词性和中文释义. 提示1:如果要用OOP完成这个词典(当然也可以用O

二十四周项目一--哈希法存储与查找

哈希法: 实例: #include <iostream> using namespace std; int searchHash(int h[], int l, int key); void insertHash(int h[], int l, int data); int main() { const int hashLength = 13;//哈希表长度 int hashTable[hashLength]={0}; int m, n; //创建hash for (int i = 0; i

第十四周项目2:用文件保存的学生名单

问题及代码: /* *Copyright (c)2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:project.cpp *作 者:陈文青 *完成日期:2015年6月16日 *版 本 号:v1.0 * *问题描述: (1)定义学生类,其中包含姓名.C++课.高数和英语成绩及总分数据成员. (2)用对象数组进行存储学生的成绩,读入成绩并计算总分:将总分高于平均总分且没挂科的同学的信息保存到文件pass_score.dat中. *程序输入: *程序输出:

二十四周项目二--回溯法之走迷宫

问题: 代码: #include <iostream> #include <iomanip> #include <cstdlib> using namespace std; #define MaxSize 100 int maze[10][10] = //定义一个迷宫,0表示通道,1表示墙 { {1,1,1,1,1,1,1,1,1,1}, {1,0,0,1,1,0,0,1,0,1}, {1,0,0,1,0,0,0,1,0,1}, {1,0,0,0,0,1,1,0,0,1