Я пытался превратить буквы в числа в C ++. Когда я пишу в консоли, он должен считать по модулю и печатать, если корабль идет (я сделал все, но не могу сделать буквы в числах: /)
Вот что должно произойти: ABC a = 1; б = 2; с = 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;
Ваш вопрос не точный, хотя я нахожу его достаточно. Совет: будьте точны с информацией, которую вы предоставляете, нет необходимости показывать остальную часть кода.
Допустим, у нас есть это 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 и т. Д.) Представляет собой факториал.
в противном случае вы могли бы использовать выключатель, или же если операторы для проверки отдельных символов и декодирования соответствующим образом.
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;
Вывод в обоих случаях:
720
«конвертировать буквы в цифры (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 …
a0 = a0 - (65 - 1);
a1 = a1 - (65 - 1);
....
Вопрос не ясен, но я думаю, что вопрос в основном заключается в преобразовании char
в int
который следует за кодировкой A=1, B=2, ......, Z=26
и выполнить необходимую обработку, которая должна умножить все кодировки.
Вот как вы можете это сделать:
#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