zoukankan      html  css  js  c++  java
  • 英汉字典代码实现

    英汉词典

    设计流程

    读取单词文件内容->解析文件内容->根据输入进行查找

    1.首先使用固定字符串接收文件读取出来的内容,再转存入数组,便于后面处理

    2.循环遍历数组,将偶数行作为key,奇数行作为value存入字典1(此处指oc语言中的一个类)作为英译汉的词典,key与value反过来存入字典2

    作为汉译英的字典,调用keyForValue方法取出Value. (字典文件内容格式如下:

    #a

    Trans:art. 一;字母A

    #a.m.

    Trans:n. 上午

    #a/c

    Trans:n. 往来帐户@往来:come - and - go; contact; intercourse@n. 往来帐户

    #aardvark

    Trans:n. 土猪

    #aardwolf

    Trans:n. 土狼

    #aasvogel

    Trans:n. 秃鹰之一种

    #abaci

    Trans:n. 算盘

    #aback

    Trans:ad. 向后地;朝后地

    #abacus

    Trans:n. 算盘

    #abaft

    Trans:ad. 向船尾@prep. 在...后

    #abalone

    Trans:n. 鲍鱼

    ).

    3.将字典中的所有key取出,for循环分别与输入字符比较,此时比较的只是key的子串.

    以下是具体代码实现:

    /***************************************************/

    /****************— main.m文件—********************/

    /***************************************************/

    #import <Foundation/Foundation.h>

    #import "Dictionary.h"

    int main(int argc, const char * argv[]) {

        @autoreleasepool {

            printf("************************ ");

            printf("******欢迎使用英汉字典***** ");

            printf("************************ ");

            Dictionary *mydic=[[Dictionary alloc] init];

            [mydic readFile];

            char a[100]={};

            char *getUserinput=a;

            char b='0';

            char c='0';

            while(1)

            {

                printf("1.汉译英 2.英译汉 ");

                scanf("%c",&c);

                getchar();

                if(c=='2')

                {

                    printf("1.继续查询  2.退出查询 ");

                    scanf("%c",&b);

                    if(b=='1')

                    {

                        getchar();

                        printf("请输入单词: ");

                        scanf("%s",getUserinput);

                        getchar();

                        NSString *input=[[NSString alloc] initWithFormat:@"#%s",getUserinput];

                        NSString *strenToch=[mydic EnglishToChainese:input];

                        if(strenToch==NULL)

                        {

                            NSLog(@"没有找到!试试其他的吧!");

                        }else

                        {

                            NSArray *s=[[strenToch substringFromIndex:6] componentsSeparatedByString:@"@"];

                            NSString *s1=[s componentsJoinedByString:@" "];

                            NSLog(@" %@ ",s1);

                        }

                    }

                    else

                    {

                        if(b=='2')

                        {

                            break;

                        }else

                        {

                            while(getchar()!=10){}

                            printf("输入有误 ");

                        }

                    }

                }else if(c=='1')

                {

                    printf("1.继续查询  2.退出查询 ");

                    scanf("%c",&b);

                    if(b=='1')

                    {

                        getchar();

                        printf("请输入单词: ");

                        scanf("%s",getUserinput);

                        getchar();

                        NSString *input=[[NSString alloc] initWithUTF8String:getUserinput];

                        NSString *strenToch=[mydic ChineseToEnglish:input];

                        if(strenToch==NULL)

                        {

                            NSLog(@"没有找到!试试其他的吧!");

                        }else

                        {

                            NSLog(@" %@ ",[strenToch substringFromIndex:1]);

                        }

                    }

                    else

                    {

                        if(b=='2')

                        {

                            break;

                        }else

                        {

                            while(getchar()!=10){}

                            printf("输入有误 ");

                        }

                    }

                }

            }

        }

        return 0;

    }

    /***************************************************/

    /****************— Dictionary.h文件—****************/

    /***************************************************/

    #import <Foundation/Foundation.h>

    #define PATH @"/Users/paul/Desktop/dict.txt"

    @interface Dictionary : NSObject

    {

        NSMutableDictionary * _mydic;

        NSMutableDictionary * _mydic1;

    }

    -(id)initWithMyDictionary;

    -(void)setMydic:(NSMutableDictionary *)mydic;

    -(NSDictionary *)mydic;

    -(NSString *)EnglishToChainese:(NSString*)en;

    -(NSString *)ChineseToEnglish:(NSString*)ch;

    -(void)readFile;

    @end

    /***************************************************/

    /****************— Dictionary.m文件—****************/

    /***************************************************/

    #import "Dictionary.h"

    @implementation Dictionary

    -(id)init

    {

        if(self=[super init])

        {

            _mydic=[[NSMutableDictionary alloc] init];

            _mydic1=[[NSMutableDictionary alloc] init];

        }

        return self;

    }

    -(id)initWithMyDictionary

    {

        if(self=[super init])

        {

            _mydic=[[NSMutableDictionary alloc] initWithContentsOfFile:PATH];

        }

        return self;

    }

    -(void)readFile

    {

        NSString *s=[[NSString alloc] initWithContentsOfFile:PATH encoding:NSUTF8StringEncoding error:nil];  //读取文件内容到数组

        if(s==NULL)

        {

            NSLog(@" 字典文件出错,请检查"%@"处是否有相应文件 若没有请创建该文件!",PATH);

            exit(EXIT_FAILURE);

        }

        NSArray *arrs=[s componentsSeparatedByString:@" "];

        for(int i=0;i<[arrs count]-1;i+=2)

        {

            [_mydic setValue:arrs[i+1] forKey:arrs[i]];

            [_mydic1 setObject:arrs[i] forKey:arrs[i+1]];

        }

    }

    -(NSMutableDictionary *)mydic

    {

        return _mydic;

    }

    -(void)setMydic:(NSMutableDictionary *)mydic

    {

        _mydic=[mydic initWithContentsOfFile:PATH];

    }

    -(NSString *)EnglishToChainese:(NSString*)en

    {

        en=[_mydic valueForKey:en];

        return en;

    }

    -(NSString *)ChineseToEnglish:(NSString *)ch

    {

        int index=0;

        NSArray *arr=[_mydic allValues];

        for(int k=0;k<[arr count];k++)

        {

            NSString *sv=[arr objectAtIndex:k];

            NSArray *sa=[sv componentsSeparatedByString:@"@"];

            for(int h=0;h<[sa count]; h++)

            {

                NSArray *sm=[[sa objectAtIndex:h] componentsSeparatedByString:@";"];

                for(int g=0;g<[sm count]; g++)

                {

                    if(g==0)

                    {

                        NSArray *arrs=[[sm objectAtIndex:g] componentsSeparatedByString:@". "];

                        if([ch isEqual:[arrs lastObject]])

                        {

                            index=k;

                            goto RST;

                        }

                    }else if([ch isEqual:[sm objectAtIndex:g]])

                    {

                        index=k;

                        goto RST;

                    }

                }

            }

        }

    RST:

        ch=[_mydic1 valueForKey:arr[index]];

        return ch;

    }

    @end

    /***************************************************/

    /******************— 运行示例 —********************/

    /***************************************************/

    ******************************

           欢迎使用英汉字典

    ******************************

    1.汉译英 2.英译汉

    1

    1.继续查询  2.退出查询

    1

    请输入单词:

    苹果

    2015-08-12 21:57:48.480 myDictionary[4293:219204] 

    apple

    1.汉译英 2.英译汉

    1

    1.继续查询  2.退出查询

    1

    请输入单词:

    电脑

    2015-08-12 21:58:11.133 myDictionary[4293:219204] 

    computer

    1.汉译英 2.英译汉

    2

    1.继续查询  2.退出查询

    1

    请输入单词:

    computer

    2015-08-12 21:58:27.470 myDictionary[4293:219204] 

    n. 电脑;电子计算机

    1.汉译英 2.英译汉

    1

    1.继续查询  2.退出查询

    1

    请输入单词:

    电子计算机

    2015-08-12 21:58:41.094 myDictionary[4293:219204] 

    computer

    1.汉译英 2.英译汉

    1

    1.继续查询  2.退出查询

    1

    请输入单词:

    没有

    2015-08-12 21:59:25.439 myDictionary[4293:219204] 

    wanting

    1.汉译英 2.英译汉

    1

    1.继续查询  2.退出查询

    1

    请输入单词:

    鼠标

    2015-08-12 21:59:52.569 myDictionary[4293:219204] 

    mouse

    1.汉译英 2.英译汉

     /******************************************************/

    http://www.cnblogs.com/PaulpauL/ 版权声明:本文为博主原创文章,未经博主允许不得转载。
  • 相关阅读:
    IO模式和IO多路复用详解
    消息队列RabbitMQ、缓存数据库Redis
    rest framework认证组件和django自带csrf组件区别详解
    django进阶之缓存
    关于CSRF攻击详解
    Linux学习常用命令大全
    .NET 开源工作流: Slickflow流程引擎基础介绍(四) -- 多数据库支持实现
    .NET 开源工作流: Slickflow流程引擎基础介绍(三) -- 基于HTML5/Bootstrap的Web流程设计器
    .NET 开源工作流: Slickflow流程引擎基础介绍(二) -- 引擎组件和业务系统的集成
    .NET开源敏捷开发框架: SlickOne介绍(一) -- 基于Dapper, Mvc和WebAPI 的快速开发框架
  • 原文地址:https://www.cnblogs.com/PaulpauL/p/4725762.html
Copyright © 2011-2022 走看看