|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.02.2017, 14:41 | #1 |
Новичок
Джуниор
Регистрация: 01.02.2017
Сообщений: 3
|
[C] Объяснить код код для определения пятизначного палиндром числа
Всем привет! Помогите пожалуйста объяснить с 20-ой строки firstDigit=temp1/10000; и до fifthDigit=temp1;, а конкретнее почему делят и используют remainder с цифрами 10000;1000;100???? Это код для определения пятизначного палиндром числа.Спасибо за внимание.
Код:
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ) Модератор Последний раз редактировалось Serge_Bliznykov; 01.02.2017 в 14:55. |
01.02.2017, 14:59 | #2 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
делением получают первую цифру пятизначного числа
Цитата:
Цитата:
temp1 - остаток - это уже трёхзначное число и т.д. p.s. кстати, данный код не красивый (много лишних переменных) и не универсальный (рассчитан только на пятизначные числа). |
||
01.02.2017, 15:09 | #3 |
Участник клуба
Регистрация: 14.05.2016
Сообщений: 1,793
|
Мне кажется, что пропустили деление на "100":
Код:
|
01.02.2017, 15:19 | #4 |
Новичок
Джуниор
Регистрация: 01.02.2017
Сообщений: 3
|
Ясно.Благодарю
|
01.02.2017, 15:22 | #5 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Вы ошибаетесь. ничего там на 100 делить НЕ НАДО. (деление на 100 может дать ТРЕТЬЮ цифру числа. она находится в середине, поэтому для проверки, является ли число палиндромом, эта цифра НЕ НУЖНА. поэтому она и не извлекается из числа). |
|
01.02.2017, 15:48 | #6 |
Участник клуба
Регистрация: 14.05.2016
Сообщений: 1,793
|
А да, всё правильно.
Хорошая программа; самое главное рабочая. Тогда пояснения: 1) Пусть "temp1= 65432". Когда ты делишь "firstDigit=temp1/10000;", то "firstDigit" должен равняться по идеи "6,5432" (но это число вещественное - тип "float"), а у тебя "int firstDigit". В результате происходит конфликт типов и компилятор (не долго думая) просто делает "неявное преобразование типа float в int", - в результате отбрасывается дробная часть и "firstDigit=6". p.s.: вообще то, есть в Си возможность и "явного преобразования типов": Код:
Код:
Всё, принципы ты понял (в программе работают только эти два принципа), - теперь пробегись по коду (это надо для усвоения материала) и напиши на бумажке что происходит с переменными на каждом шаге (возьми для примера число "number= 65432"). . Последний раз редактировалось ura_111; 01.02.2017 в 16:16. |
01.02.2017, 16:00 | #7 |
Участник клуба
Регистрация: 14.05.2016
Сообщений: 1,793
|
Кстате, можно обойтись одно переменной "temp1", а "temp2" не нужна:
Код:
|
01.02.2017, 17:23 | #8 |
Новичок
Джуниор
Регистрация: 01.02.2017
Сообщений: 3
|
ok da uje razobralsya,spasibo rebyata
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Объяснить код программы | Morreaw | Помощь студентам | 0 | 09.06.2015 09:11 |
Компонент TColorButton, объяснить код (Delphi) | MIXER_ok | Помощь студентам | 2 | 13.11.2012 08:30 |
объяснить код на Delphi за WMR | HelpMeGiveWmr | Фриланс | 8 | 16.01.2012 00:47 |
как грамотно объяснить код (делфи 7) | MegaMozg28 | Помощь студентам | 0 | 10.06.2010 14:23 |
Срочно!Нужно объяснить код программ! | ArcaN0id | Помощь студентам | 1 | 28.06.2009 12:15 |