变位词程序c++实现

#include <stdio.h>

#include <string.h>

#include <vector>

#include <string>

#include <algorithm>

#include <iostream>

using namespace std;

const int MAX_N = 100+5;

const int MAX_WORDS = 1000;//设置最多可对1000个变位词进行处理

char line[MAX_N];//读文件的缓冲区


struct words{

    char word[MAX_N];

    char sign[MAX_N];

}a[MAX_WORDS];//变位词结构体,word为单词本身,sign为单词的键值


bool operator < (const words &c, const words &d){

    if(strcmp(c.sign,d.sign)<0)

        return true;

    else

        return false;

}// 运算符重载,为了使用sort函数对结构体进行排序


int main(){

    FILE *fp1 = fopen("/Users/mona/changeWords/changeWords/1.txt","r");

    char oldSign[MAX_N] = " ";

    int cnt = 0;//记录单词个数

    while(fgets(line,MAX_N,fp1)){

        int pos;

        pos = int(strlen(line));

        if(line[pos-1]=='\n'line[pos-1] = '\0';

        strcpy(a[cnt].word,line);

        sort(line,line+strlen(line));

        strcpy(a[cnt].sign,line);

        cnt ++;

    }

    sort(a,a+cnt);// 将具有相同标识的单词归拢到一起

    for(int i=0;i<cnt;i++){

        if(strcmp(oldSign,a[i].sign)!=0){

            printf("\n");

        }

        strcpy(oldSign,a[i].sign);

        printf("%s ",a[i].word);

        

    }

    printf("\n");


    return 0;

}

阅读更多
个人分类: 编程珠玑
上一篇安装tomcat for Mac
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭