part 1 验证性实验

合并两个文件。虽说验证,但后两个实验均受该代码指导启发。

part 2  文末添加数据

1、代码

 #include<fstream>
#include<iostream>
#include<string>
using namespace std;
int main()
{
ofstream out("C:\\Users\\lenovo\\Desktop\\实验六\\实验六part1\\实验六part1\\3.txt",ios_base::app);
if (!out)
{
cout << "Fail to open." << endl;
return ;
}
out << endl;
out << "merge successfully";
out.close();
return ;
}

part 2

2、程序截图

3、知识点

①“打开一个与输出流相关的文件时,可以指定一个open_mode标志,实现一些特定模式。用 ‘ | ’组合多个。 ”本题需要在文件尾添加数据,即“ios_base::app”。

②路径写法注意双斜杠,为了与转义字符相区别。

Part 3

一、随机抽取

1、代码

 #include<iostream>
#include<fstream>
#include<string>
#include<ctime>
#include<sstream>
#include<windows.h>
using namespace std;
string getdate();
int main()
{
string filename, newfilename;//f是已存在的名单文件,new是即将存随机抽取的文件
int n, i; ofstream out;
ifstream in; cout << "输入名单列表文件名:";
cin >> filename;
cout << "输入随机抽点人数:";
cin >> n;
cout << "随机抽点中···" << endl; newfilename = getdate().c_str();//新建文件命名 out.open(newfilename);
if (!out.is_open())
{
cout << "Fail to open." << endl;
return ;
} for (i = ; i <= n; i++)
{
in.open(filename);
if (!in.is_open())
{
cout << "Fail to open." << endl;
return ;
} srand((unsigned)time(NULL));
int N = rand() % ; string s;
stringstream ss;
ss << N;
ss >> s; char c;
int j=;
while (in.get(c))
{
if (c == '\n')
{
j++;
if (j == N)
{
in.get(c);
while (c != '\n')
{
out << c;
in.get(c);
}
out << endl;
break;
}
}
else
continue;
}
in.close();
Sleep();
}
out.close(); char c;
ifstream nfile(newfilename);
while (nfile.get(c))
cout << c;
nfile.close();
return ;
}
const int SIZE1 = ;
string getdate()
{
time_t time_seconds = time();
struct tm now_time;
localtime_s(&now_time, &time_seconds); // 使用了更安全的localtime_s()
char date[SIZE1];
strftime(date, SIZE1, "%Y%m%d", &now_time);
return (string(date));
}

part 3.1

2、程序截图

3、出现的一些问题

①查找相应标号的同学,最开始想得简单,是通过简单对比数字,后来发现学号里也有数字。(有点儿傻的过分了)后来纠正的一些方法不如数行数更简便,最终就由数行数来找对应的同学。

②输入流文件打开操作 在n次抽取循环的外面,导致in.get(c)是接着数的。例如:

我机智的发现应该把 打开list  和 打开20190611 两个操作都放循环里面,每次循环就可以重新打开重新数。我还特别机智的立即想到也要在里面关闭两个文件,结果只保留了最后一个抽取的情况。例如:

循环哪个地方每次都会清空内容。翻课本时惊现不久前的笔记,输出流中隐含指定的模式是ios_base::out,当使用该模式打开已存在的文件时,内容清空。解决可以用part 2中的追加模式。

我是只把list打开关闭操作放在循环内。

③每次随机数取的差不多。例如:

我猜是随机数取的系统时间精度不那么高,程序运行又很快。不知道对不对地 人为的 让它每次取随机数前延迟一阵子。用了Sleep函数,感觉嗯,慢的过分了。

最终结果就如代码 and 截图。

二、统计单词

1、代码

 #include<iostream>
#include<fstream>
#include<string>
using namespace std;
int main()
{
string filename;
char c; cout << "输入要统计的英文文本文件名:";
cin >> filename; int a = , b = , s = ;//a字符数 b单词数 c行数 ifstream in;
in.open(filename);
if (!in)
{
cout << "Fail to open." << endl;
return ;
} while (in.get(c))
{
if (c != '\n')
a++;
if (c == '\n')
s++;
if (c == ' ' || c == '\n' || c == '\t')
{
in.get(c);
a++;
if ((c >= 'a'&&c <= 'z') || (c >= 'A'&&c <= 'Z'))
{
b++;
}
}
}
cout << "字符数:" << a << endl;
cout << "单词数:" << b << endl;
cout << "行数:" << s << endl;
return ;
}

part 3.2

2、程序结果截图

3、一点说明

没有用getline等等,就全一个一个数的,一次性全数完。

总结

1、学流类库之前认为插入提取用<<或者>>就是刻板规定,而且学习之初形象理解认为 输出 大概用>>更形象,所以很多时候还会打反。在学习流类库的时候也混,怎么它就是输出流文件,不是往它里面打字cin吗/扶额/。尤其做完实验才有点儿理解,明白为什么cin后跟提取,cout后跟插入,也就是你提取资料是输入,你把资料筛选出的内容插入到新文件,又是输出。

2、做实验总会有做oj的错觉,我会不会少打了回车啊,好像落了句号啊.../叹气/。

3、程序错乱或者漏洞可以直接指出,谢谢。

后继更新。

回顾知识点的时候参考博客https://blog.csdn.net/w_linux/article/details/72793651

评价

1、https://www.cnblogs.com/q1831726125/p/11044621.html

2、https://www.cnblogs.com/yidaoyigexiaopenyou/p/11044639.html

3、https://www.cnblogs.com/cjj1/p/11043693.html

c++第六次实验的更多相关文章

  1. 201521123122 《java程序设计》 第六周实验总结

    201521123122 <java程序设计>第六周实验总结 1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想 ...

  2. 20135302魏静静——linux课程第六周实验及总结

    linux课程第六周实验及总结 实验及学习总结 1.进程描述符task_struct数据结构 进程的作用: 将信号.进程间通信.内存管理和文件系统联系起来 操作系统的三大功能: 进程管理.内存管理.文 ...

  3. 第八周作业总结&第六次实验报告

    实验六 Java异常 实验目的 理解异常的基本概念: 掌握异常处理方法及熟悉常见异常的捕获方法. 实验要求 练习捕获异常.声明异常.抛出异常的方法.熟悉try和catch子句的使用. 掌握自定义异常类 ...

  4. 201621123054 《Java程序设计》第六周实验总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图或相关笔记,对面向对象思想进行一个总结. 1.2 可选:使用常规方法总结其他上课内容. 2 ...

  5. 201621123044 《Java程序设计》第六周实验总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图或相关笔记,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰 ...

  6. 实验六 MapReduce实验:二次排序

    实验指导: 6.1 实验目的基于MapReduce思想,编写SecondarySort程序. 6.2 实验要求要能理解MapReduce编程思想,会编写MapReduce版本二次排序程序,然后将其执行 ...

  7. 201621123008 《Java程序设计》第六周实验总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图或相关笔记,对面向对象思想进行一个总结. 2. 书面作业 1. clone方法 1.1 在 ...

  8. 201871010121-王方-《面向对象程序设计java》第十六周实验总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/ ...

  9. 第六周&实验四

    二.实验的内容 (1)根据下面的要求实现圆类Circle. 1.圆类Circle的成员变量:radius表示圆的半径. 2.圆类Circle的方法成员: Circle():构造方法,将半径置0 Cir ...

随机推荐

  1. Ueditor基础使用

    感谢大家对我这个菜鸟的帮助,这是我第一次用.NET做网站.在这里向大家推荐个百度免费的文本编辑器Ueditor,是.NET版的,在http://ueditor.baidu.com/website/in ...

  2. zTree的后台数据绑定

    前台js: var treeNodes; $.ajax({ async: false, cache: false, type: 'POST', contentType: "applicati ...

  3. Spring源码分析_01_ idea搭建spring源码阅读环境

    二.参考资料 1.Intellij Idea如何导入spring源码

  4. 超链接向servlet传参数

    超链接传参数方式如下: <a href=xxxServlet?flag=1  target=“XX”></a> 注意:target=“XX”是用来指定在什么窗体打开.xx为该窗 ...

  5. POJ1041 John's trip

    John's trip Language:Default John's trip Time Limit: 1000MS Memory Limit: 65536K Total Submissions: ...

  6. 浏览器全屏的JS代码实现

    方法一:该方法是从一个网上的效果看到不错,然后自己就拿来下来实验了一下,还是比较满意度,下面直接给出代码 <!DOCTYPE HTML> <html lang="en-US ...

  7. 洛谷【P2115】[USACO14MAR]破坏Sabotage

    我对二分的理解:https://www.cnblogs.com/AKMer/p/9737477.html 题目传送门:https://www.luogu.org/problemnew/show/P21 ...

  8. 洛谷【P1303】A*B Problem

    题目传送门:https://www.luogu.org/problemnew/show/P1303 高精度乘法板子题,灵性地回忆一下小学时期列竖式的草稿纸即可. 时间复杂度:\(O(len^2)\) ...

  9. ECMAScript中面向对象的程序设计思想总结

    <JavaScript高级程序设计>Chapter6笔记 1.ECMAScript内部值属性:数据属性和访问器属性 1)数据属性 数据属性的4个特性: configurable:表示能否通 ...

  10. Apache+OpenSSL实现证书服务器提供HTTPS

    通过 Linux+Apache+OpenSSL 实现 SSL ( Secure Socket Layer )证书服务器,提供安全的 HTTPS ( Hypertext Transfer Protoco ...