Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2009, 12:58   #1
Dog
Пользователь
 
Регистрация: 19.05.2008
Сообщений: 48
Восклицание Разложить число на цифры

Присвоить целой переменной h третью от конца цифру в записи целого положительного числа K. (например к=130985, то h=9)

помоги только как выбрать H, а то не помню как выбрать нужный i-ый элемент из К

Заранее огромное спасибо!!!
Dog вне форума Ответить с цитированием
Старый 14.09.2009, 13:20   #2
Anatole
Форумчанин
 
Аватар для Anatole
 
Регистрация: 07.04.2009
Сообщений: 245
По умолчанию

Ессли на паскале. Если чисило представлено в виде строки, то:
Код:
h := k[length(k)-3]
, а если к представлено в виде целого, то так:
Код:
h := (K div 100) mod 10
Всякое безобразие должно быть единообразным. Тогда это называется порядком.
Anatole вне форума Ответить с цитированием
Старый 14.09.2009, 13:22   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а язык программирования какой?

вообще, для подобных задач два принципиально разных способа решения:
1) "нечестный" - переводим число в строку. берём третий справа символ и переводим его в число.

2) "честный". целочисленно делим число на 100 (убираем ненужные две цифры справа),
затем берём остаток от деления полученного числа на 10 (т.е. получаем третью справа цифру).
на Pascal это будет так:
Код:
  h:= (Chislo div 100) mod 10;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.09.2009, 13:23   #4
GenniY
Форумчанин
 
Регистрация: 09.09.2009
Сообщений: 181
Счастье

var
k, h, n : Integer;
S : String;
begin
k := 130985;
S := IntToStr(k);
n := Length(S) - 3;
h := StrToInt(S[n]);
end;
Получил помощь — отблагодарил.
GenniY вне форума Ответить с цитированием
Старый 14.09.2009, 13:27   #5
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Самый простой вариант:
* конвертируешь число "k" в string методом IntToStr;
* string по сути массив char, т.е. берешь 3 с конца элемент(длина строки минус 3)
* конвертируешь символ в число методом StrToInt

уже код написали, пока я ответ писал ))
Hollander вне форума Ответить с цитированием
Старый 14.09.2009, 14:08   #6
Dog
Пользователь
 
Регистрация: 19.05.2008
Сообщений: 48
По умолчанию

спасибо всем, на паскале надо было
Dog вне форума Ответить с цитированием
Старый 18.06.2010, 17:02   #7
Coment
Новичок
Джуниор
 
Регистрация: 18.06.2010
Сообщений: 2
По умолчанию

Дабы не создавать двадцать раз тему похожую пишу здесь.Целый день мучаюсь. Число разложить на цифры могу, но надо цифры записать наоборот. То есть, сейчас программа выводит сначала последнюю цифру, потом предпоследнюю и тд. А надо что б начинала с первой. Был бы массив, то тогда попроще, но его использовать нельзя. Подскажите решение. Вот мой код

Код:
int a, b, c=0;
        cout<<"a = ";
        cin>>a;
         while(a!=0) {
         b=a%10;
         cout<<b<<" ";
         a=a/10;
         c+=b;
         }
         cout<<"\nSuma cifer= "<<c<<endl;
         system("pause");
Если еще кому то интересно, то мой воспаленный мозг придумал, как, все таки, выводить цифры из любого числа начиная с первой. Для начала делаем первый цикл как писалось выше, но цифры не выводим, а просто считаем их количество и запоминаем в i или любую другую переменную =) Потом делаем условие проверки на количество цифр и, в зависимости от выбранного варианта, запускаем цикл примерно так, b=a/1000000, потом b=a/100000 и тд.

Последний раз редактировалось Stilet; 22.06.2010 в 14:16.
Coment вне форума Ответить с цитированием
Старый 22.06.2010, 14:02   #8
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

Можно опять таки перевести число в строку и выполнить в цикле функцию
InStr(sTmp,i,1)

sTmp=IntToStr(a);
for (i=0;i++;len(sTmp)-1) cout<<InStr(sTmp,i,1)<<" "
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Старый 22.06.2010, 14:23   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Число разложить на цифры могу, но надо цифры записать наоборот.
Бред какой-то, если я верно понял то:
Код:
	int q=12845;
	for(int i=10000;i>0;i/=10){
	 int e=q/i;printf("%d\n",e);
	 q=q-(e*i);
	}
Но это изврат для ублажания преподавателей...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.06.2010, 16:36   #10
Coment
Новичок
Джуниор
 
Регистрация: 18.06.2010
Сообщений: 2
По умолчанию

Бред еще и какой, но таковы реалии современного обучения
Спасибо за советы.
Coment вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как разделить введённое n значное число на отдельны цифры? mig-29 Общие вопросы C/C++ 5 22.05.2009 16:30
Сортирует цифры по строкам, а надо чтобы сортировала цифры , записанные через пробелы Алексей_xXx Помощь студентам 14 06.05.2009 17:42
разложить число на простые множители и вывести результат pakusya Паскаль, Turbo Pascal, PascalABC.NET 6 15.11.2008 03:07
Как разделить введённое n значное число на отдельны цифры? mig-29 Помощь студентам 13 04.04.2008 20:01