2017-07-09 4 views
-1

J'essayais de faire des lettres en nombres en C++. Quand j'écris en console, il faut compter modulo et taper out si le vaisseau arrive (je fais tout, mais je ne peux pas faire des lettres en nombres: /)convertir des lettres en nombres (A = 1; B = 2 ...) C++

Ce qui devrait arriver: ABC a = 1; b = 2; Donc, j'ai besoin d'écrire un mot et il doit être séparé en lettres et converti en nombres comme ça.

Je suis juste apprendre et je ne sais pas grand-chose :)

Mon code actuel:

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

Je ne vois aucune variable de chaîne dans le code affiché, même si votre question est sur les chaînes. – PaulMcKenzie

+0

dans ce code je montre le reste je l'ai fait, demandant juste ce que je dois faire pour convertir en lettres .... donc j'ai besoin d'utiliser des variables de chaîne? – Dokido

+1

Votre question n'est pas claire du tout. Vous voulez convertir des lettres en nombres, mais il n'y a rien dans votre code qui représente des lettres.Vous avez des variables 'int' déclarées, mais où les données de caractères sont-elles déclarées? – PaulMcKenzie

Répondre

0

Votre question n'est pas précise, bien que je trouve assez. Astuce: Soyez précis avec les informations que vous fournissez, il n'est pas nécessaire d'afficher le reste du code.

Disons que nous avons ce char Ship[20]="ABCDEF";. Si vous encodage est aussi simple que A = 1, B = 2, etc, alors vous avez seulement besoin quelque chose comme ceci:

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

Cette boucle se déroulera jusqu'à ce qu'il rencontre le « \ 0 » (caractère nul) au fin de la chaîne. Donc, vous auriez une factorielle sur le fait que votre codage (A = 1, B = 2, etc.) représente une factorielle.

autrement, vous pouvez utiliser un boîtier de commutation , ou si déclarations pour vérifier les caractères individuels et décoder de façon appropriée.

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; 

sortie dans les deux cas:

0

"convertir les lettres en nombres (A = 1, B = 2, ...)"

string a{"ABC"}; 

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

veulent envelopper A = 1, B = 2 ...

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

La question n'est pas claire, mais je pense que la question est essentiellement de convertir char en int qui suit le codage A=1, B=2, ......, Z=26 et effectuer le traitement nécessaire qui est de multiplier tous les encodages.

Voici donc comment vous pourriez le faire:

#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; 
} 

Exemple de sortie:

enter the string(CAPITALS ONLY) :AEF 
the result is :30