Life of xhu

About

希望开题顺利 & HOJ_1423 & HOJ_1425

Mar 03, 2014

  |   #日常   |   #C++   |   #HOJ

已经从导师那里拿到了对开题有用的资料,话说我怎么没想到上知网找资料啊,这下能把项目当前研究背景搞定了。

还问了一下IDE的用法,嗯,终于开始可以又实际动作了。

明天一天一定看懂代码,标C而已,我肯定行的。

后天的开题加油!

~~~~~~~~~~~~我是萌萌的昏割线~~~~~~~~~~~~~

1423:这道题就是对一个字符串用一个规则进行转换和输出。

其实C++对它自己的string类型变量,也是有getline函数的,具体方法如下:

#include <iostream>
#include <string>

string str;
getline(cin, str);

然后就是在循环的时候,有时候输入不听话,直接跳过进入下一个步骤了,这时候可以用getlinecinscanf多试试。说不定就好了。

代码如下:

#include<iostream>
#include<string>
using namespace std;

char convert[30]="VWXYZABCDEFGHIJKLMNOPQRSTU";

int main(){
    string s;
    while(getline(cin, s) && s!="ENDOFINPUT"){
        getline(cin, s);
        for(int i = 0; i < s.length(); i++){
            if(s[i] <= 'Z' && s[i] >= 'A')
                s[i] = convert[s[i] - 'A'];
        }
        cout << s << endl;
        getline(cin, s);
    }
}

1425:这道题的意思就是输入星球半径,油量和角度,如果油量足够去事发地点,就输出YES以及去了之后还能剩余的油量,否则,输出NO和可以行使的路程。

代码如下:

#include <iostream>
#include <cstring>
#define Pi 3.14159
using namespace std;

int main(){
    char str[20];
    double X, Y, Z, miles, distance;
    while(scanf("%s", str) && strcmp(str, "ENDOFINPUT")){
        scanf("%lf %lf %lf", &X, &Y, &Z);
        scanf("%s", str);
        miles = 5 * Y;
        distance = Z >= 180 ? 2 * Pi * X * (360 - Z) / 180 : 2 * Pi * X * Z / 180;
        if(miles >= distance)
            cout << "YES " << (int)(Y - distance / 5) << endl;
        else
            cout << "NO " << (int)(miles) << endl;
    }
}