Programming contests

DEIK Regionális Programozó Csapatverseny, gyakorló feladatsor

October 26, 2012 8:00 PM – November 23, 2012 12:00 AM

Java vs C++

Apologists of Java and C++ can argue for hours proving each other that their programming language is the best one. Java people will tell that their programs are clearer and less prone to errors, while C++ people will laugh at their inability to instantiate an array of generics, or tell them that their programs are slow and have long source code.

Another issue that Java and C++ people could never agree on is identifier naming. In Java, a multiword identifier is constructed in the following manner: the first word is written starting with a lowercase letter, and the following ones are written starting with an uppercase letter, no separators are used. All other letters are lowercase. Examples of Java identifiers are javaIdentifier, longAndMnemonicIdentifier, name, nEERC (for Northeastern European Regional Contest).

Unlike them, C++ people use only lowercase letters in their identifiers. To separate words, they use the underscore character (“_”). Examples of C++ identifiers are c_identifier, long_and_mnemonic_identifier, name (you see that when there is just one word, Java and C++ people agree), n_e_e_r_c.

You are writing a translator that is intended to translate C++ programs to Java and vice versa. Of course, identifiers in the translated program must be formatted due to its language rules — otherwise people will never like your translator.

The first thing you would like to write is an identifier translation routine. Given an identifier, it would detect whether it is a Java identifier or a C++ identifier, and translate it to the other dialect. If it is neither, then your routine should report an error. Translation must preserve the order of words and must only change the case of letters and/or add/remove underscores.

Input Specification

The input contains several test cases, each of them consists of one line that contains an identifier. It consists of letters of the English alphabet and underscores. Its length does not exceed 100.

Output Specification

For each test case, print one line:

  • If the input identifier is a Java identifier, output its C++ version.
  • If it is a C++ identifier, output its Java version.
  • If it is none, output “Error!” instead.

Sample Input

  1. long_and_mnemonic_identifier
  2. anotherExample
  3. i
  4. bad_Style
download as text file

Output for Sample Input

  1. longAndMnemonicIdentifier
  2. another_example
  3. i
  4. Error!
download as text file
University of Debrecen; Faculty of Informatics; v. 03/01/2019