2017-07-09 8 views
-1

私はC++で数字に文字をしようとしていました。私がコンソールに書き込むときは、モジュロにカウントして、船が来ているかどうかを調べる必要があります(私はすべてでしたが、数字に数字をつけることはできません:/)文字を数字に変換する(A = 1; B = 2 ...)C++

ABC a = 1; b = 2; C = 3 1 * 2 * 3 = 6 ....

だから私は単語を書く必要があり、それは文字に分割してそのような数字に変換する必要があります。

私はちょうど学んでいると私はあまり知りません:)

私の現在のコード:

int shipnum, groupnum, moduleship, modulegroup; 

cout << "type ship number "; cin >> shipnum; 
cout << "type group number "; cin >> groupnum; 



/*shipnum dabar 5... (5 mod 2) 
groupnum dabar 3... (3 mod 2) 
*/ 

moduleship = shipnum % 47;  //skaiciuojam moduli... 
modulegroup = groupnum % 47; 

if (moduleship == modulegroup) { 
cout << "YES ship is coming for you :)"; 
} 

else if (moduleship != modulegroup) {    // "!=" reiskia "nelygu" 
    cout << "SORRY, NO ship for you :("; 
} 

return 0; 
+0

私はあなたの質問が文字列についてであるにも関わらず、あなたが投稿したコードには文字列変数を参照してくださいません。 – PaulMcKenzie

+0

このコードでは、残りの部分を表示しています。文字に変換するために必要なことを尋ねるだけです。文字列変数を使用する必要がありますか? – Dokido

+1

あなたの質問は全く明確ではありません。文字を数字に変換したいのですが、コードに文字を表すものはありません。'int'変数が宣言されていますが、文字データはどこで宣言されていますか? – PaulMcKenzie

答えて

0

私は十分にそれを見つけることが、あなたの質問は、正確ではありません。ヒント:提供した情報を正確に入力して、残りのコードを表示する必要はありません。

これは、char Ship[20]="ABCDEF";です。あなたがエンコードする場合は、あなただけのこのようなものが必要、などA = 1、B = 2、のように簡単です:

char Ship[20]="ABCDEF"; 
int decoded=1; 
for(int i=1; Ship[i]=!'/0'; ++i) { 
    decoded = decoded * i 
} 
cout<<decoded; 

それがで「\ 0」(ヌル文字)に遭遇するまでこのループを実行しますストリングの終わり。したがって、コーディング(A = 1、B = 2など)が階乗を表すという事実を階乗的に捉えることになります。

そうでない場合、あなたは個々の文字をチェックし、適切にデコードするスイッチケース、または if文を使用することができます。両方の場合において

char Ship[20]="ABCDEF"; 
int decoded=1; 
for(int i=1; Ship[i]=!'/0'; ++i) { 
    switch(Ship[i]){ 
     case 'A' : decoded = decoded * 1; 
         break; 
     case 'B' : decoded = decoded *2; 
         break; 
       //So on 
     default : break; 
    } 
} 
cout<<decoded; 

出力:

0

"数字に文字を変換する(A = 1、B = 2 ...)"

string a{"ABC"}; 

    int a0 = a[0]; // 65 
    int a1 = a[1]; // 66 
    int a2 = a[2]; // 67 
    ..... 

は質問が明確ではないが、私は質問は基本的にエンコーディングA=1, B=2, ......, Z=26を次のintcharを変換し、必要な処理を行うことだと思う... A = 1、B = 2をラップする

a0 = a0 - (65 - 1); 
a1 = a1 - (65 - 1); 
.... 
0

を表示したいですすべてのエンコーディングを掛けることです。だからここ

は、あなたがそれを行うことができる方法である:

#include <iostream> 
#include <string> 

using namespace std; 

int main(){ 
    string s;  //Input string 
    cout << "enter the string(CAPITALS ONLY) :"; 
    cin >> s;  //read the input string 
    int result = 1; 
    for (auto &elem : s){   //process all the characters of s 
     result *= elem - 'A' + 1; //corresponding int value is multiplied to the result 
    } 

    cout << "the result is :" << result; 
} 

サンプル出力:

enter the string(CAPITALS ONLY) :AEF 
the result is :30 
関連する問題