人工智能编辑员

题目来源:http://116.56.140.75:8000/JudgeOnline/problem.php?id=1736

1736: 人工智能编辑员

时间限制: 0 Sec 内存限制: 0 MB

题目描述

有些人写的文章价值连城,而有些人写的文章却卖不出什么价钱,这就是有没有文采的问题了。而鉴别人们的文章有没有文采则是编辑们的苦差事。因此,如果能够编写一个程序可以判断一篇文章的文采,那一定能卖给这些编辑们而赚不少钱。我们说,一篇文章由单词组成。而单词呢,一般来说长的单词比较“高级”,显得更有文采,因此8个字母的单词我们就说它是一个亮点,假设价值为1。而其他短于8字母的单词呢,其价值为0。然后某单词字母数多于8则:设它的价值为x;价值f(x)=(x-7)/2来计算。把文章中单词的总价值的100倍再除以总单词数,那就是一篇文章的文采值了。

输入

一篇文章,由纯英文单词和空格组成。而用EOF作为结束的标志。

输出

一个整数,文采值。

样例输入

I am a human existence but you are something more complicated

样例输出

36

解析:共11个单词,其中8个字母以上的有existence,something,complicated,
价值分别为1,1,2;
(1+1+2)*100/11=36.36=36

解析:可以利用空格来处理拆分单词,利用结构体可能整体会清晰一点,另外,就是要注意细节了

代码:

#include<iostream> 
#include<string> 
#include<iomanip> 
using namespace std; 
struct
{ 
    int flag; 
    char s[100]; 
    int sum; 
    int xx; 
}node[1000]; 
int main() 
{ 
    string str; 
    getline(cin, str); 
    int num = str.size(); 
    int count = 0; 
    int k = 0; 
    int x = 0; 
    int counter = 0; 
    for (int i = 0; i < num; i++) 
    { 
        if (str[i] == ' ') 
        { 
            if (x > 7) 
            { 
                counter++; 
                node[k].flag = 1; 
                node[k].sum = (x - 7) * 50; 
                node[k].xx = x; 
            } 
            else
                node[k].flag = 0; 
            count++; 
            x = 0; 
            k++; 
        } 
        else
        { 
            node[k].s[x] = str[i]; 
            x++; 
        } 
        if (i == num - 1) 
        { 
            count++; 
            if (x > 7) 
            { 
                counter++; 
                node[k].flag = 1; 
                node[k].sum = (x - 7) * 50; 
                node[k].xx = x; 
            } 
            else
                node[k].flag = 0; 
        } 
    } 
    long long Sum = 0; 
    for (int i = 0; i <= k; i++) 
    { 
        if (node[i].flag == 1) 
            Sum += node[i].sum; 
    } 
    cout << Sum / count << endl; 
    cout << endl; 
    cout << "解析:共" << count << "个单词,其中8个字母以上的有"; 
    int C = 0; 
    for (int i = 0; i <= k; i++) 
    { 
        if (C == counter) 
            break; 
        if (node[i].flag == 1) 
        { 
            C++; 
            for (int j = 0; j < node[i].xx; j++) 
                cout << node[i].s[j]; 
            cout << ","; 
        } 
    } 
    cout << endl; 
    cout << "价值分别为"; 
    C = 0; 
    for (int i = 0; i <= k; i++) 
    { 
        if (node[i].flag == 1) 
        { 
            if (C == counter - 1) 
            { 
                cout << node[i].sum*1.0 / 100 << ";"; 
                break; 
            } 
            C++; 
            cout << node[i].sum*1.0 / 100 << ","; 
        } 
    } 
    cout << endl; 
    cout << "("; 
    C = 0; 
    for (int i = 0; i <= k; i++) 
    { 
        if (node[i].flag == 1) 
        { 
            if (C == counter - 1) 
            { 
                cout << node[i].sum*1.0 / 100; 
                break; 
            } 
            C++; 
            cout << node[i].sum*1.0 / 100 << "+"; 
        } 
    } 
    cout << ")*100/" << count << "=" << fixed << setprecision(2) << Sum*1.0 / count << "=" << Sum / count; 
} 
/************************************************************** 
    Problem: 1736 
    User: 201730685257 
    Language: C++ 
    Result: 正确 
    Time:0 ms 
    Memory:1592 kb 
****************************************************************/

阅读更多
上一篇刁难的李老师(升级版)
下一篇山寨版计算器
想对作者说点什么? 我来说一句

机器学习——Python人工智能教程

2017年11月22日 5.55MB 下载

实习日志\网络编辑实习日志

2010年04月05日 8KB 下载

星际争霸与人工智能

2018年01月21日 2.54MB 下载

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

关闭
关闭