• Pig-Latin(ICPC冬令营集训题目)


    Pig-Latin

    Problem Description

    You have decided that PGP encryptation is not strong enough for your email.
    You have decided to supplement it by first converting your clear text letter into Pig Latin before encrypting it with PGP.

    Input and Output

    You are to write a program that will take in an arbitrary number of lines of text and output it in Pig
    Latin. Each line of text will contain one or more words. A “word” is defined as a consecutive sequence
    of letters (upper and/or lower case). Words should be converted to Pig Latin according to the following
    rules (non-words should be output exactly as they appear in the input):

    1. Words that begin with a vowel (a, e, i, o, or u, and the capital versions of these) should just
      have the string “ay” (not including the quotes) appended to it. For example, “apple” becomes
      “appleay”.
    2. Words that begin with a consonant (any letter than is not A, a, E, e, I, i, O, o, U or u) should
      have the first consonant removed and appended to the end of the word, and then appending “ay”
      as well. For example, “hello” becomes “ellohay”.
    3. Do not change the case of any letter.
    Sample Input
    This is the input.
    1
    
    Sample Output
    hisTay isay hetay inputay.
    1
    
    • 输入和输出
    • 请您编写一个程序,输入任意数量行的文本,并以Pig Latin输出。 每行文本将包含一个或多个单词。一个“单词”被定义为一个连 续的字母序列(大写字母和/或小写字母)。单词根据以下的规则 转换为Pig Latin,非单词的字符在输出时则和输入中出现的完全 一样:
    • [1] 以元音字母(a、e、i、o或u,以及这些字母的大写形式)开 头的单词,要在其后面附加字符串“ay”(不包括双引号)。例 如,“apple”变成“appleay”。
    • [2] 以辅音字母(不是A, a, E, e, I, i, O, o, U 或 u的任何字母)开头 的单词,要去掉第一个辅音字母,并将之附加在单词的末尾,然 后再在单词的末尾加上“ay”。例如,“hello”变成“ellohay”。
    • [3] 不要改变任何字母的大小写。
    Analysis of Test Questions

    1.非字母字符,直接输出;如果是单词(一个连续的字母序列),则判定是否以辅音开头,如果以辅音开头把辅音字母放到单词最后。最后在单词后面加“ay”。
    2.设计两个函数is(char c)判断字符c是否是字母,和vowel(char c)判断字符c是否是元音字母。

    理解变量是理解程序的关键

    AC代码
    #include<iostream>
    #include<cstdio>
    
    using namespace std;
    
    const int N=1000005;
    
    char temp[N];
    
    int isab(char c){//判断是否是字母
        if(c>='a'&&c<='z')return 1;
        if(c>='A'&&c<='Z')return 1;
        return 0;
    }
    
    int vowel(char c){//判断是否是元音字母
        if(c=='a'||c=='e'||c=='i'||c=='o'||c=='u')
            return 1;
        if(c=='A'||c=='E'||c=='I'||c=='O'||c=='U')
            return 1;
        return 0;
    }
    
    int main(){
        while(gets(temp)){
            int s=0,t=0;
            while(temp[s]){
                if(!isab(temp[s])){//不是字母,直接输出
                    printf("%c",temp[s++]);
                    t=s;
                }else if(isab(temp[t])){//是字母
                    t++;
                }else {
                    if(!vowel(temp[s])){//辅音字母开头
                        for(int i=s+1;i<t;i++)
                            printf("%c",temp[i]);
                        printf("%c",temp[s]);
                    }else {//元音字母开头
                        for(int i=s;i<t;i++)
                            printf("%c",temp[i]);
                    }
                    printf("ay");
                    s=t;
                }
            }
            printf("
    ");
        }
        return 0;
    }
    
  • 相关阅读:
    SharePoint开发中可能用到的各种Context(上下文)
    SharePoint 2013中的视频体验增强(1)——把大象装进冰箱
    SharePoint 2013之Office Web Apps Server(1)
    Office 2013 (Wave 15)来了
    SharePoint 2013新特性:图像呈现形式(Image Rendition)
    SharePoint 2013之Office Web Apps Server(2)
    在自己的代码中获取SharePoint的存储占用情况
    Showing Hyperlink Cues with CSS
    (翻译) 价目表:实例和最佳策略
    用CSS制作大背景网站,以及80个大背景图片网站。
  • 原文地址:https://www.cnblogs.com/gu-qiu/p/14331807.html
Copyright © 2020-2023  润新知