«Переворот» числа
Вводится число. Преобразовать его в другое число, цифры которого будут следовать в обратном порядке по сравнению с введенным числом.
- n , m — исходное число и «перевернутое»;
- a — временное хранение очередной цифры, которая «переносится» из одного числа в другое.
Алгоритм решения задачи сводится к следующему циклу: 1) взять последнюю цифру в первом числе; 2) записать ее в конец второго; 3) убрать последнюю цифру из первого числа. Таким образом последняя цифра первого числа окажется первой цифрой во втором; предпоследняя цифра первого числа — второй во втором числе и так далее
- Находим остаток ( mod ) от деления числа n на 10. Результат сохраняем в переменной a .
- На каждом шаге разрядность m надо увеличивать на единицу, то есть умножать на 10. Например, если было число 56, то, умножив его на 10, получим 560. Далее следует прибавить остаток из переменной a , например, 3. В итоге получим 563. Получаем формулу: m = m * 10 + a .
- Делим n нацело на 10, тем самым избавляемся от младшего разряда.
Программа на языке Паскаль:
var n, m: longint; a: byte; begin readln(n); m := 0; while n > 0 do begin a := n mod 10; m := m * 10 + a; n := n div 10; end; writeln(m); end.
Пример выполнения программы:
40013 31004
Как разбить число на цифры pascal
Всем привет. Я интересуюсь как например разложить число 153 -> на 1 5 3 по отдельности программным спопособм. Тоесть получить цифры из которых состоит число.
Меня интересует только сам математический алгоритм, но можно и пример на C or Pascal.
Вариант типо записать в строку, а потом выделить числа не принимается я ищу математический метод, который пока не могу придумать.
Регистрация: 09.01.2008
Сообщений: 26,238
x mod 10 — вернёт последнюю цифру числа x
потом сдвигаем число, разделив его целочисленно на 10:
x := x div 10
повторяем, пока x > 0
| Serge_Bliznykov |
| Посмотреть профиль |
| Найти ещё сообщения от Serge_Bliznykov |
Форумчанин
Регистрация: 15.02.2008
Сообщений: 621
Два способа получения отдельной цифры:
1. (не помню на паскале это актуально или нет =\) Нуу в общем переведи в строку число и дергай по символу =))), т.е. это так как наш мозг работает =)))
2. для получения i-ой цифры (m) в числе n:
m=(n mod (10 ^(i))) div (10 ^ (i-1))
Помог? Ну так нажми на весы!
Pascal!? Как разбить любое число на отдельные цифры?
нужна именно процедура(ну или прога), ато немогу я сам, не лезит никак в голову, знаю что можно преобразовать число в строку, потом разбить ее на символы, и потом конвертануть их обратоно в числа!, НО! символы не конвертируются, вообщем давайте оставим конверт в строку пока в покое, может возможно как-то подругому, через mod’ы и div’ы.
Лучший ответ
i := 0;
while n > 0 do begin
i := i + 1;
masNum[ i ] := n mod 10;
n := n div 10;
end;
Правда, будет обратный порядок следования разрядов.
masNum[1] = 3;
masNum[2] = 2;
masNum[3] = 5;
masNum[4] = 3;
masNum[5] = 2;
Если это принципиально, то элементы можно легко переставить.
>> символы не конвертируются
Кто такую глупость сказал? Например для символ «5» преобразование будет выглядеть так
Остальные ответы
mod div юзай их
23459 mod 10000 даст 2
(23459-2*10000)mod 1000 даст 3
думаю суть ясна. автоматизиру это в цикле и будет тебе счастье! )
Никита ВоликУченик (132) 7 лет назад
это можно использовать, если мы знаем скольки значное число. а если это неизвестно?
program program1;
var m:longint;masNum:array [1..256] of byte;i,c:byte;
begin
write(‘m=’);
readln(m);
if m=0 then
begin
writeln(‘masNum[1]=0’);
halt;
end;
if mi:=1;
while m>0 do
begin
c:=m mod 10;
masNum:=c;
m:=trunc((m-c)/10);
i:=i+1;
end;
for c:=1 to i do writeln(‘masNum[‘,c,’]=’,masNum[c]);
end.
Источник: информатика
Вот держи все легко и просто. А то я смотрю тут примеры через чур для новичка.
var
s:string;
i:integer;
begin
read(s);
for i:=1 to length(s) do
begin
writeln(‘masNum’,i,’=’,s);
end;
readln;
readln;
Как разбить число на цифры pascal
Группа: Пользователи
Сообщений: 85
Пол: Мужской
Репутация: 0
Составить программу нахождения среднего арифметического значения цифр заданного натурального числа N (1 Значит скажем так. program suma_cifr_4isel_ta_porivnyannya_sum; Главнгое чо хочу сказать, так это то что по моему не правиьно организовано, см. мою прогу→ там я использу. mod 10 чтобы получить последнюю цифру числа. 18.12.2005 3:19 Ты нормально задание написать можешь? Что тебе надо, конкретно? Ты писал про сумму цифр числа, я привел тебе фрагмент программы, который эту сумму находит, теперь ты опять что-то начинаешь придумывать. Сумма цифр числа n = 1234567 равна 28 и ничему другому. Если тебе нужно не это, то будь добр привести пример входного и выходного значения (с объяснением). Телепатов здесь нет. 18.12.2005 3:41 Группа: Пользователи Репутация: 0 Сумма цифр числа n = 1234567 равна 28 и ничему другому к числу 1234567? ну если трассировать то ведь вроде получается так 2 Alex7
Есть у меня такая(ну, почти) работающая програма, но написано очень коряво, ибо давно и на тупую голову.
Если чо поймешь, то можешь взять с нее куски:
var n1,s1,n2,s2:longint;
a1,a2:byte;
label xxx1, sp1, xxx2, sp2;
begin
writeln (‘Rozrahunok sum cifr dvoh 4isel ta porivnyannya’);
repeat
write (‘Vvedit» 4isla A,B (4erez probil) — ‘);
readln (n1,n2);
if (n1 <0) or (n2<0) then writeln ('Dani vvedeno nepravilno');
until (n1>=0) and (n2>=0);
s1:=0;
xxx1: begin
a1:=n1 mod 10;
s1:=s1+a1;
n1:=n1 div 10;
if n1>10 then goto xxx1;
if n1 sp1:
s1:=s1+n1;
writeln;
writeln(‘Suma cifr 4isla A = ‘,s1);
end;
s2:=0;
xxx2: begin
a2:=n2 mod 10;
s2:=s2+a2;
n2:=n2 div 10;
if n2>10 then goto xxx2;
if n2 sp2:
s2:=s2+n2;
writeln(‘Suma cifr 4isla B = ‘,s2);
end;
writeln;
write (‘ Porivnyannya:’);
if s1-s2 if s1-s2=0 then write (‘ A = B’) else
write (‘ A > B’);
readln
end.
while z>=10 do <'здесь идёт вычисление из скольки цифр состоит число'>
begin
z:=z div 10;
k:=k+1;
end;'здесь>
-=еще раз извиняюсь за корявую програму- нету времени щас переделывать=-
Сообщений: 111
Пол: Мужской
Реальное имя: Рома
нуда мне это и нужно
а мне надо типа 605=6+0+5
извини, я просто не понял применится ли
while n <> 0 do begin
s := s + (n mod 10);
n := n div 10;
end;
1 s:=s+(n mod 10) s=0+234567>
n:= n div 10
так? извини конечно если я ошибаюс голова уже пухнет
сенка, конечно туманно, но ща попробую раскурочить
