CodeJob 板


LINE

感谢板上各方高手出来献计,又让小弟我回去重新检视 code 发现严重 Bug! 假设有效资料 6000 笔,若 user 输入 5000 笔,会回过头把前 1000 笔资料盖 掉!幸好发现得早,不然就吃了人家的饭,又耽误人家毕业时程了!   很高兴无心上来问个小问题,就能引出这麽多高手互相切磋。虽然我只得懂 C++ 和 VB6,不过其他的语言我还是尝试去解读,竟然看到有一行就能完成的实 在太强...@@   不过看到 reader 说的 "要把 user 当笨蛋,写一个好的小程式" 我就有感 而发。为了要写得防呆、防错、快速 (考虑哪里要 break 或 inline , 或是怎麽 减少 loop 又不会出错) 花的时间,远大於写到有最低功能的时间。尤其这个版 很多靠程式过生活,不像我只是卖卖人情,怎麽写的细致就很重要,但是在业主 costdown 的风气下,各位会不会怀疑,自己需不需要这麽用心呢?   因我们只修 3 学分程式设计,不像资工资管学了一大堆,计结、资结、演算 法都是程式设计「顺便讲一下」而已,命名原则、防错、加速的观念老师上课会提 ,但是不要求。不讳言的说,自己写到满足功能就花了三小时,後面又花了好几倍 的时间改良和除错,而且还没除完...@@,看来我若要上战场,真的还得多修几门 资工的课。 我也来贴一下修改後的 code 好了: (缩排都是一个 Tab,请问po上来的时候要怎麽修改才不会太长呢?) #include <stdio.h> #include <iostream> #include <stdlib.h> #include <ctype.h> using namespace std; #define Number 200000 //有效资料笔数上限,可修改 #define Word 6 //每次读入资料字元上限,可修改 FILE *cfPtr; char strWord[Word]; //暂存读入的一笔资料 int nCounter=0; // 资料笔数计数器 int nNonDig=0; // "非半形数字"计数器 double daArr[Number]; //剔除"非半形数字"後,储存在此 int main(void) { while(1) //选单系统 { cout << " 这是OOO专用客制化程式,其他人用也要请我吃鸡排XD by OOO \n\n" ; cout << " 1.清除 \"input.txt\" 中所有的非半形数字字元,需与本.exe放同资料夹 \n"; cout << " 2.把每组数字呈直行排列\n"; cout << " 3.最多读入 20 万组数据\n"; cout << " 4.每组数据不可超过六字元(中文3字元)\n"; cout << " 5.目前只接受整数,还无法接受浮点数\n"; cout << " 6.会输出 \"修改完成.txt\" \n\n"; break; } if( (cfPtr = fopen("input.txt","r")) == NULL) cout << " 找不到档案"; else { while(!feof(cfPtr)) { fscanf(cfPtr,"%s",&strWord); //读一笔资料,以ASCII储存 for(int i=0;i<Word;i++) //开始检查此笔数据中,是否有非数字 if((strWord[i]<48 || 57<strWord[i])&&(strWord[i]!='\0')/*&&(strWord[i]!=46)*/) // 判断,字串strWord 中是否有不属於数字的ASCII { nNonDig++; //有非数字就在nNonDig纪录 break; } if(nNonDig==0) { daArr[nCounter] = atoi(strWord); //atoi()可把ASCII转回 nCounter++; } else if(nNonDig!=0) nNonDig=0; //归零,否则後面每个loop每笔都变非数字 } fclose(cfPtr); } //读取完成 if(nCounter!=0)/* 开始写入档案 */ { cfPtr = fopen("修改完成.txt","w"); cout << "有效资料共 " << nCounter << " 笔!" << endl; for(int i=0;i<nCounter;i++) fprintf(cfPtr,"%.0lf\n",daArr[i]); //把阵列daArr[i]每个元素逐行印出,去除小 数(反正都是0) } fclose(cfPtr); cout << "\n\a "; system("pause"); --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.224.52.205
1F:推 qmo668:我觉得这个讨论串超有趣XDDDD 12/02 23:23
2F:推 ripeSelf:作业怎麽可以拿来收钱,做做人情刚刚好.......... 12/03 01:31
3F:推 kirk76:看这几篇好开心 05/12 01:03







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP