Re[2]: Раздеоение на цифры - Очень срочно
От: Andregc  
Дата: 15.11.08 13:47
Оценка:
Здравствуйте, Andregc, Вы писали:

A>Здравствуйте, TheAteist, Вы писали:


TA>>То что я пытался сделать это разделить пятизначное число на цифры следующим образом.

TA>>Например число 12345:


TA>>
TA>>float fNum = 12345;
TA>>int iNum;

TA>>iNum = fNum; //fNum = iNum = 12345 

TA>>//Первый цыкл
TA>>(fNum / 10 - iNum / 10) * 10 // => ((float)12345/10 - (int)12345/10) * 10 = 0.500000000000000000 * 10 = 5.000000000000000, сохраняю эту цифру
TA>>fNum = (fNum / 10) - ((fNum / 10 - iNum / 10)) // => (float)12345/10 - ((float)12345/10 - (int)12345/10) = 1234.50000000000000-(1234.50000000000000 - 1234)= 1234.50000000000000 - 0.500000000000000 = 1234.0000000000000=> fNum = 1234.0000000000000
TA>>iNum = fNum; // iNum = 1234
TA>>//Второй цыкл
TA>>(fNum / 10 - iNum / 10) * 10 // => ((float)1234/10 - (int)1234/10) * 10 = 0.40000000000000568 * 10 = 4.000000000000568, сохраняю эту цифру
TA>>fNum = (fNum / 10) - ((fNum / 10 - iNum / 10)) // => (float)1234/10 - ((float)1234/10 - (int)1234/10) = 123.40000000000001-(123.40000000000001 - 123)=123.40000000000001 - 0.4000000000000568=> fNum = 123.00000000000000
TA>>iNum = fNum; // iNum = 123
TA>>//Третий цыкл
TA>>(fNum / 10 - iNum / 10) * 10 // => ((float)123/10 - (int)123/10) * 10 = 0.3000000000000071 * 10 = 3.0000000000000718, сохраняю эту цифру
TA>>fNum = (fNum / 10) - ((fNum / 10 - iNum / 10)) // => (float)123/10 - ((float)123/10 - (int)123/10) = 12.30000000000001-(12.30000000000001 - 12)=12.30000000000001 - 0.300000000000071=> fNum = 12.00000000000000
TA>>iNum = fNum; // iNum = 12
TA>>//Четвертый цыкл
TA>>(fNum / 10 - iNum / 10) * 10 // => ((float)12/10 - (int)12/10) * 10 = 0.1999999999999996 * 10 = 1.999999999999996, сохраняю эту цифру
TA>>

TA>>Как уже видно в четвертом цыкле уже получается не 2.00000000000000, а 1.99999999999999999 и тогда созраняается не 2, а 1.
TA>>И после всех цыклов получается
TA>>iDigits={1,1,3,4,5}, a не {1,2,3,4,5}

TA>>Надеюсь, что я себя правильно объяснил.

TA>>Мне нужно таким способом это сделать. Где мне что-то добавить или исправить?

TA>>Спасибо


Сорри, чето напутал
Если тебе нужны только целые числа то все гораздо проще

iNum=12345
while(inum != 0) {
digit = iNum % 10;
inum /= 10;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.