В общем вводят 6 значное число. Если сумма первых трёх равна сумме последних трёх то число счастливое. Проблема в том, что я не знаю как 6 значное число разделить на 6 чисел. Кто подскажет, как это делается?
или остатком от деления % ну там если у тебя число 123123 ты делаешь int myNum = 123123; int firstNums = myNum / 1000; if((myNum % 1000) == firstNums) { //TODO: твой код }
... Ну вы извращенцы))) ТС, юзай =) http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/ Code: int i = 123321; char buf[6]; itoa(i, buf, 10); if(buf[0] + buf[1] + buf[2] == buf[3] + buf[4] + buf[5]) printf("%s", "that's happy num =)");
он же дал тебе ссылку http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/ char * itoa ( int value, char * str, int base ); Numerical base used to represent the value as a string, between 2 and 36, where 10 means decimal base, 16 hexadecimal, 8 octal, and 2 binary. [wiki]Аргумент radix(base в первом случае) определяет основание системы исчисления для input(value); его значение может лежать в пределах от 2 до 36.[/wiki]
ну я бы реализовал так: var s:string begin S:='123321'; if IntTostr(s[1])+IntTostr(s[2])+IntTostr(s[3])=IntTostr(s[4])+IntTostr(s[5])+IntTostr(s[6]) then showmessage('Счастливое число!!!') else showmessage('Нет не счастливое '); end;
2 arnis нах такие вычисления жестокие? Можно напрямую работать с кодами символов, тут же важно совпадение суммы, а не конкретное её значение. if ord(s[1]) + ord(s[2]) + ord(s[3]) = ord(s[4]) + ord(s[5]) + ord(s[6]) then showmessage('Счастливое число!!!') else showmessage('Нет не счастливое '); А вообще можно сделать универсальным это. Для любого числа с четным кол-вом знаков будет давать результат. Code: ret := 0; stop := length(s) shr 1; for x := 1 to stop do begin ret := ret + ord(s[x]) - ord(s[x + stop]); end; if ret = 0 then Счастливое
Тоже код имеет право на жизнь. Но такой вариант деления как ты предложил сейчас породит кучу вопросов а что делает эта строка. Писалось чтобы было понятно тем кто только начал писать.
я дописал вариант mailbrush, чтобы он выводит все счастливые числа. Делал через цикл фор от 100000 до 999999. Когда программа запускается, видно как бегут числа начиная от 2***** а когда перебор заканчивается, я консоль вверх листаю и дохожу ток до цифр от 8*****. Почему так? Я же видел цифры меньше при работе программы