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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2012, 13:05   #1
ValentinBuruak
Пользователь
 
Регистрация: 16.04.2012
Сообщений: 17
По умолчанию Вывести отдельно цифры числа

Здравствуйте. Проблема в следующем. Допустим имеется любое целое число, например, 12345. Мне нужно считать, например, 1-ю, 2-ю, и 3-ю цифру слева и записать их в отдельные переменные. Как мне это сделать?

Последний раз редактировалось ValentinBuruak; 19.04.2012 в 13:11.
ValentinBuruak вне форума Ответить с цитированием
Старый 19.04.2012, 13:16   #2
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

перевести число в строку.
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 19.04.2012, 13:26   #3
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

Тут есть два способа:
1) перевести число в строку, взять нужный символ строки и преобразовать его опять в число
2) используя оператор позволяющий найти остаток от деления и делить ваше число на 10, столько раз, скольки равен номер нужного число - 1,
например число 1234, нужно "вытащить" число 3 (оно третье слева),
Код:
значит делим (третья позиция -1) = 2 раза
1 раз -1234 / 10 (нацело) = 123, остаток 4
2 раз 123 /10 (нацело) = 12, остаток "3" - то, что нужно)
в паскале для первого случая это процедуры/ф-и str,val
для второго случая div, mod

Кстати подобных тем/заданий на форуме куча, не захотите сами писать, юзайте поиск
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.

Последний раз редактировалось Niro; 19.04.2012 в 13:28.
Niro вне форума Ответить с цитированием
Старый 19.04.2012, 13:31   #4
ValentinBuruak
Пользователь
 
Регистрация: 16.04.2012
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Mandrivnyk Посмотреть сообщение
перевести число в строку.
Можно поподробнее объяснить что значит перевести в строку?

Niro А можете привести пример, используя div mod чтобы найти 3-ю цифру слева?

Последний раз редактировалось ValentinBuruak; 19.04.2012 в 13:43.
ValentinBuruak вне форума Ответить с цитированием
Старый 19.04.2012, 13:54   #5
temaps
Форумчанин
 
Регистрация: 15.05.2011
Сообщений: 160
По умолчанию

Цитата:
Сообщение от ValentinBuruak Посмотреть сообщение
А можете привести пример, используя div mod чтобы найти 3-ю цифру слева?
Код:
c:=12345;
c3:=(с div 100) mod 10;
temaps вне форума Ответить с цитированием
Старый 19.04.2012, 14:06   #6
ValentinBuruak
Пользователь
 
Регистрация: 16.04.2012
Сообщений: 17
По умолчанию

Цитата:
Сообщение от temaps Посмотреть сообщение
Код:
c:=12345;
c3:=(с div 100) mod 10;
Спасибо. А если число например 8-мизначное? Как это в программе необходимо прописать, чтобы учитывать это?
ValentinBuruak вне форума Ответить с цитированием
Старый 19.04.2012, 14:16   #7
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
Сообщение от ValentinBuruak Посмотреть сообщение
Спасибо. А если число например 8-мизначное? Как это в программе необходимо прописать, чтобы учитывать это?
вот именно поэтому проще сделать именно через перевод числа в строку.
насколько я понял, речь идет о паскале.
процедура Str()
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 19.04.2012, 14:18   #8
astecenko
Homo Interneticus
Форумчанин
 
Аватар для astecenko
 
Регистрация: 04.03.2011
Сообщений: 611
По умолчанию

Выполняйте в цикле пока делимое не станет меньше 10, т.е. для Вашего примера
12345 mod 10 = 5
12345 div 10 = 1234
1234 mod 10 = 4
1234 div 10 = 123
123 mod 10 = 3
123 div 10 = 12
12 mod 10 = 2
12 div 10 = 1 < 10

Единственно что учитывайте ограничения типов данных, если у Вас гипотетически очень большие числа, не вписывающиеся в паскалевские типы данных то тогда лучше переводить в строку, как писали выше.
astecenko вне форума Ответить с цитированием
Старый 23.04.2012, 00:31   #9
temaps
Форумчанин
 
Регистрация: 15.05.2011
Сообщений: 160
По умолчанию

Цитата:
Сообщение от ValentinBuruak Посмотреть сообщение
Спасибо. А если число например 8-мизначное? Как это в программе необходимо прописать, чтобы учитывать это?
c:=12345678;
c3:=(с div 10000) mod 10;

Как вопрос задаёшь такой ответ и получаешь.
С числами бери способ astecenko
Со строкой:
Код:
...
s:string;
...
c:=12345678;
s:=inttostr(c);
c3:=strtoint(s[3]);
если у тебя Turbo Pascal 7.0 то там нет функции inttostr() там вместо неё процедура str() и нет strtoint() там опять же процедура val()
temaps вне форума Ответить с цитированием
Старый 23.04.2012, 02:41   #10
SenseSoftware
Новичок
Джуниор
 
Регистрация: 12.02.2012
Сообщений: 3
По умолчанию

Может это и тупо, но я бы сделал как-нибудь так:
S-твоё число
a-3я с конца цифра
b-2я с конца цифра
c-последняя цифра
(это считать три цифры с конца)
Код:
var
a,b,c,s:integer;
g:string;
begin
g:=inttostr(s);
a:=strtoint(copy(g,lenght(g)-2,1);
b:=strtoint(copy(g,lenght(g)-1,1);
c:=strtoint(copy(g,lenght(g),1);
end;
а с начала строки так:
S-твоё число
a-1я цифра
b-2я цифра
c-3я цифра
Код:
var
a,b,c,s:integer;
g:string;
begin
g:=inttostr(s);
a:=strtoint(copy(g,1,1);
b:=strtoint(copy(g,2,1);
c:=strtoint(copy(g,3,1);
end;

Последний раз редактировалось SenseSoftware; 23.04.2012 в 02:45. Причина: Только считать с права написал, а слева не написал)
SenseSoftware вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить количество положительных элементов заданных массивов V1(6) V2(12) V3(13) и вывести их отдельно ALABAMA Паскаль, Turbo Pascal, PascalABC.NET 15 23.01.2016 00:35
простые цифры числа. вывести в столбец Сristina Помощь студентам 6 12.03.2011 14:38
у числа вывести цифры по возрастан Артл Помощь студентам 3 16.12.2010 17:23
Числа отдельно, хлам отдельно Keetotko Общие вопросы C/C++ 6 18.10.2010 18:15
Знак минус отдельно от числа segail Microsoft Office Excel 1 10.02.2010 16:46