每日一题 No.25 物品分类筛选(字符串运用)

来源:互联网 发布:波什生涯数据 编辑:程序博客网 时间:2024/06/06 20:38

本题要求:

给出一些不同的物品,分为四类”鞋子”, “裤子”, “帽”, “大衣”,请根据这四类进行分类并输出。

输入格式:

输出格式:

输入样例:

输出样例:

解题思路 :

先运行下面的代码,进行物品生成

#include <fstream>#include <cstring>using namespace std;int main(void) {    char str[10][10] = {"鞋子", "裤子", "帽", "大衣"};     char str2[20][10] = {"绿色", "蓝色", "红色", "黄色", "白色", "粉色", "紫色", "橘色", "金色"};     char str3[20][10] = {"开发区", "香炉礁", "大连", "沈阳", "北京", "吉林", "黑龙江", "辽宁", "金石滩"};     ofstream out(".\\item.txt", ios::out);    char temp[101];    for (int i = 0; i < 9; i++) {        for (int j = 0; j < 9; j++) {            for (int k = 0; k < 4; k++) {                out << strcat(strcat(strcpy(temp, str3[i]), str2[j]), str[k]) << "|";            }        }    }    out.close();    return 0;}

strstr进行子串匹配,用strtok进行分割字符串即可。

代码 :

#include <iostream>#include <cstring> #include <vector>#include <fstream> using namespace std;  int main() {    ifstream in(".\\item.txt", ios::in);    ofstream out(".\\bag.txt", ios::out);    char str[10001];    in >> str;    char str2[101] = "鞋|帽|大衣|裤子";     char *t = NULL;    int itemNum = 0;    char item[1001][100];    int bagNum[10] = {0};    char bag[10][101][101];    int enuNum = 0;    char enu[10][1001];    for (t = strtok(str, "|"); t != NULL; t = strtok(NULL, "|")) {        strcpy(item[itemNum++], t);    }     out << "物品栏中一共有以下物品:" << endl;    for (int i = 0; i < itemNum; i++) {        out << i + 1 << ". " << item[i] << endl;    }    for (t = strtok(str2, "|"); t != NULL; t = strtok(NULL, "|")) {        strcpy(enu[enuNum++], t);    }     out << "物品种类有:" << endl;    for (int i = 0; i < enuNum; i++) {        out << i + 1 << ". " << enu[i] << endl;    }    out << "进行分类后:" << endl;    for (int i = 0; i < itemNum; i++) {        for (int j = 0; j < enuNum; j++) {            if (strstr(item[i], enu[j]) != NULL) {                strcpy(bag[j][bagNum[j]++], item[i]);                break;            }        }    }    for (int i = 0; i < enuNum; i++) {        out << i + 1 << ". " << enu[i] << ": ";        for (int j = 0; j < bagNum[i]; j++) {            if (j != 0) {                out << "|";            }            out << bag[i][j];        }        out << endl;    }    return 0;  }  
0 0