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;
    }
    
  • 相关阅读:
    浅析C# new 和Override的区别
    用流打开open office ods 文件
    两个自己写的合并GridView 行的方法
    TSQL 日期格式化
    页面刷新后滚动条定位
    解决 TextBox 的 ReadOnly 属性为 true 时,刷新页面后值丢失的方法
    Sql server 查询条件中将通配符作为文字使用
    window.open 弹出页面回写父页面值及触发父页面Button事件
    注册光标丢失的事件
    模态对话框对父页面控件回写值
  • 原文地址:https://www.cnblogs.com/gu-qiu/p/14331807.html
Copyright © 2011-2022 走看看