строка — конвертировать буквы в числа (A = 1; B = 2 …) Переполнение стека

Я пытался превратить буквы в числа в 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;

-1

Решение

Ваш вопрос не точный, хотя я нахожу его достаточно. Совет: будьте точны с информацией, которую вы предоставляете, нет необходимости показывать остальную часть кода.

Допустим, у нас есть это 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

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 …

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

Вопрос не ясен, но я думаю, что вопрос в основном заключается в преобразовании 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
0
По вопросам рекламы [email protected]