これはかなり簡単な問題で、数字や文字列を反転させるだけです。たとえば「linroex」と入力すると「xeornil」が、123 と入力すると 321 が出力されます。解き方は難しくありません。C++ では文字列を配列のようにアクセスできる特徴を利用して、入力文字列の長さをループの終了値に設定します。ループを 1 回まわすたびに、文字列 X の最後の文字を文字列 Y の先頭に移します。ループが終わったとき、反転が完了しています。

上では文字列の反転を説明しましたが、数字の反転も基本的な考え方は同じです。違うのは、最後に反転させた文字列の配列を int に変換することです。こうすると先頭の 0 を取り除くことができます。

数字の反転とは?

数字の桁を逆にすることです。先頭に 0 があれば取り除きます。たとえば、500 と入力すると 5 が、5050 と入力すると 505 が返されます。

数字の反転:

/*
数字の反転機能
例:123 と入力すると 321 が出力される
500 と入力すると 5 が出力される(0 は取り除く)
512 と入力すると 215 が出力される
*/
#include 
#include 

using namespace std;

int main() { string x; while(cin»x){ char re[100000]=""; for(int i=0;i<x.length();i++){ //ループを作る。終了値は x の長さ re[i]=x[x.length()-i-1]; //x の文字を逆順に re の配列へコピーする。x は後ろから読み、re は前から詰める } cout«atoi(re)«endl; //re の配列を int に変換して出力する } return 0; }

プログラムのダウンロード: Box.net|4Shared|Dropbox|Google

文字列の反転にしたい場合は、

cout<
の行を
cout<
に変えると、文字列の反転になります。