码迷,mamicode.com
首页 > 其他好文 > 详细

词频统计-功能一

时间:2017-09-16 23:11:01      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:amr   知识   技术   进度条   content   哈希   下载   控制   没有   

   一.完成一个小程序

        我 拿到这个题目之后,就决定用最不熟悉的c#来实现,因为老师说不懂的去学才会有进步。布置任务后的第二天就开始去图书馆借了两本书《c#从入门到精髓》,《c#项目实战》,拿到书之后看了入门书《c#从入门到精髓》,看书的过程时痛苦的,因为发现大二选修课学的c#全交还给老师了,只能重头再学了。唯一有点印象的就是窗口应用程序,基于UI的设计。

     写代码首先需要工具,由于电脑上没有visual studio的安装包,当时求助了度娘。

     如果没有安装包的同学们,可以借鉴一下这个链接http://blog.csdn.net/chunleixiahe/article/details/52874158,里面vs2003-2015的版本都有,推荐。由于网速问题,下载安装包都花费了半个小时。
      看到题目,我就直接用Windows窗口程序完成了文件的查找,读取和统计字数,然后询问老师是否可以用Windows窗口程序完成,发现这次作业后续功能需要重定向输入,必须得做成控制台,否则无法做重定向输入。
      编程中也遇到了很多问题,只能一步步看书和借助度娘来解决。
      遇到的主要问题如下:
1.不知道c#对文件如何操作,如何查找文件,读取文件,输出文件的内容。
2.不知道如何统计文件中内容的字符,并且正确输出每个单词的出现的频数,后来实现这个小功能主要使用了哈希表,并对哈希表的值进行排序,然后遍历哈希表对每个单词出现的次数进行输出。
我的实现代码如下:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace wf
{
    class Program
    {
        
        static void Main(string[] args)
        {
            
            string theFileName;
            Console.Write(">type ");
            theFileName=Console.ReadLine();
            string thePath = @"D:\vs2010\test.txt";
            //string thePath = null;
            //Console.Write(">type ");
            //thePath = Console.ReadLine();
            //StreamReader content = File.OpenText(thePath);

            //读取文件内容并输出
            StreamReader reader = new StreamReader(thePath);
            string sline=reader.ReadLine();
            Console.WriteLine(sline.ToString());
            sline = sline.ToLower();//全部变为小写字母
            //定义一个字符数组
            char[] c = { ‘ ‘, ‘,‘, ‘.‘, ‘?‘, ‘!‘, ‘:‘, ‘;‘, ‘\‘‘, ‘\"‘ };
            //分隔字符串后产生的字符串数组
             string[] S = sline.Split(c);
             //Console.WriteLine();
             //Console.WriteLine(">wf -s test.txt");
            // Console.WriteLine("total " + S.Length);
            //建立哈希表
             Hashtable ha = new Hashtable();
             for (int i = 0; i < S.Length; i++)
             {
                  //判断文本是否进入
                  if (ha.ContainsKey(S[i]))
                   {
                       ha[S[i]] = (int)ha[S[i]] + 1;
                   }
                    else
                    {
                        ha.Add(S[i], 1);
                    }
                }
               //int sum = 0;
                string[] arrKey = new string[ha.Count];//存哈希表的键
                int[] arrValue = new int[ha.Count];//存哈希表的值
                ha.Keys.CopyTo(arrKey, 0);
                ha.Values.CopyTo(arrValue, 0);
                Console.WriteLine();
                Console.WriteLine(">wf -s test.txt");
                Console.WriteLine("total " + ha.Count);
                Console.WriteLine();
               
                Array.Sort(arrValue,arrKey);//按哈希表的值进行排序
               
                //遍历哈希表
                //foreach (DictionaryEntry de in ha)
                //{
                //输出
                // Console.WriteLine(de.Key + ":" + de.Value);
                 //Console.Write(ha.Count);

                // }
                for (int i = arrKey.Length - 1; i >= 0; i--)
                {
                    if ((string)arrKey[i] != "")
                    {
                        Console.Write(arrKey[i].ToString() + ":");
                        Console.WriteLine(arrValue[i].ToString());
                    }
                }

        }
    }
}

实现的截图如下:

技术分享

二.例行报告

1.PSP(personal software process)个人软件过程

类别 任务 开始时间 结束时间 打扰时间 净时间
借书 借书 2017.9.15 10:00 2017.9.15 10:20 20min
看书   2017 9.15 12:20 2017.9.16  21:15 n多打扰时间

<5h

编程 写代码 2017 9.16 18:00 2017.9.16   21:30 洗漱30min,回复消息20min 2h40min
写作 写博客 2017.9.16 21:50 2017.9.16  22:30 40min

2.进度条

  代码行 博文字数 知识点
第二周 83 800 见博客词频统计-功能一

 

 

词频统计-功能一

标签:amr   知识   技术   进度条   content   哈希   下载   控制   没有   

原文地址:http://www.cnblogs.com/huyourongmonkey/p/7533249.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!