关闭

变位词程序c++实现

359人阅读 评论(0) 收藏 举报
分类:

#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;

}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:735次
    • 积分:46
    • 等级:
    • 排名:千里之外
    • 原创:4篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档