第十六周 任务一

Bertha 。 2022-06-11 02:45 343阅读 0赞
  1. /*实验目的:学会ASCII文件的操作
  2. 实验内容:从文件中读入数据,排序并输出到另外一个文件中
  3. * 程序头部注释开始
  4. * 程序的版权和版本声明部分
  5. * Copyright (c) 2011, 烟台大学计算机学院学生
  6. * All rights reserved.
  7. * 文件名称:工资
  8. * 作 者:薛广晨
  9. * 完成日期:2011 年 6 月 01 日
  10. * 版 本号:x1.0
  11. * 对任务及求解方法的描述部分
  12. * 输入描述:文件salary.txt
  13. * 问题描述:从文件salary.txt 中读入500 名工人的工资,全部增加100 元后进行排序,将排序后的结果在屏幕上输出,
  14. 并保存到文件ordered_salary.txt 中。
  15. * 程序输出:ordered_salary.txt
  16. * 程序头部的注释结束
  17. */
  18. #include <fstream>
  19. #include <iomanip>
  20. #include <iostream>
  21. using namespace std;
  22. void ouput_salary(double a[],int num);//输出工资;
  23. void cin_salary(double a[],int num);//从文件得到工资;
  24. void cout_salary(double a[],int num);//储存工资;
  25. void bubble_sort(double a[], int num);//排序;
  26. void add_salary(double a[],int num,double money);//加工资;
  27. int main( )
  28. {
  29. double a[500];
  30. int num=500;
  31. cin_salary(a,num);//从文件读入工资;
  32. cout<<"加工资排序前员工工资:"<<endl;
  33. ouput_salary(a,num);//输出工人工资;
  34. add_salary(a,500,100.0);//加工资;
  35. bubble_sort(a, num);//排序;
  36. cout<<"加工资排序后员工工资:"<<endl;
  37. ouput_salary(a,num);//输出工资;
  38. cout_salary(a,num);//保存到文件;
  39. system("pause");
  40. return 0;
  41. }
  42. void cin_salary(double a[],int num)
  43. {
  44. int i;
  45. ifstream infile("salary.txt",ios::in);
  46. if(!infile)
  47. {
  48. cerr<<"open error!"<<endl;
  49. exit(1);
  50. }
  51. for(i=0;i<num;i++)
  52. {
  53. infile >> a[i];
  54. }
  55. infile.close();
  56. cout<<endl;
  57. }
  58. void cout_salary(double a[],int num)
  59. {
  60. ofstream outfile("ordered_salary.txt",ios::out);
  61. if(!outfile)
  62. {
  63. cerr<<"open error!"<<endl;
  64. exit(1);
  65. }
  66. for(int i=0;i<num;i++)
  67. outfile<<a[i]<<endl;
  68. outfile.close();
  69. }
  70. void bubble_sort(double a[], int num)
  71. {
  72. int i,j,k;
  73. double t;
  74. for(i=0;i<num-1;i++)
  75. {
  76. k=i;
  77. for(j=i+1;j<num;j++)
  78. if(a[j]<a[k]) k=j;
  79. t=a[k];
  80. a[k]=a[i];
  81. a[i]=t;
  82. }
  83. }
  84. void ouput_salary(double a[],int num)
  85. {
  86. int i;
  87. for(i=0;i<=num-1;i++)
  88. {
  89. cout << setiosflags(ios::left) << setw(10)<< a[i];
  90. if((i+1) % 8 == 0)cout<<endl;
  91. }
  92. cout<<endl;
  93. }
  94. void add_salary(double a[],int num,double money)
  95. {
  96. int i;
  97. for(i=0;i<num-1;i++)
  98. {
  99. a[i]=a[i]+money;
  100. }
  101. }

运行前:

1338611032_6126.jpg

运行后:

1338611077_3743.jpg

涨工资前:

1338611087_8247.jpg

涨工资后:

1338611109_6684.jpg

上机感言:对文件的操作非常的方便,这对数据量很大的操作更是省事

发表评论

表情:
评论列表 (有 0 条评论,343人围观)

还没有评论,来说两句吧...

相关阅读

    相关 任务

    //【任务1】下面的程序存在编译错误。有两种方法可以修改,请给出这两种修改方案,在报告中说明你倾向于用哪一种?为什么?处理此类问题的原则是什么? /实验目的:

    相关 任务

    /【任务1】理解基类中成员的访问限定符和派生类的继承方式 由下面派生类Student1对基类Student的继承…… (1)请修改基类中成员的访问限