zoukankan      html  css  js  c++  java
  • 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;
    }
    
  • 相关阅读:
    整数N分解,搭积木,离散数学中的母函数,ZOJ(1163)
    背包问题模板,POJ(1014)
    DP之背包问题详解及案例
    Java基础部分全套教程.
    一位资深程序员大牛给予Java初学者的学习路线建议
    给Java新手的一些建议——Java知识点归纳(Java基础部分)
    一位10年Java工作经验的架构师聊Java和工作经验
    假如时光倒流,我会这么学习Java
    一位资深程序员大牛给予Java初学者的学习路线建议
    2年Java开发工作经验面试总结
  • 原文地址:https://www.cnblogs.com/gu-qiu/p/14331807.html
Copyright © 2011-2022 走看看