![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
kr3v3tkus |
![]()
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
Посмотрите пожалста задачу, я уже в поиске искал. но там выдаёт такое разбивание числа типа 6=5+1 или сумма чисел в массиве, а мне надо типа 605=6+0+5. Вся трудность в том, что я не знаю как применить свойство мода и дива для множества чисел
![]() нужно сделать (123 div 10) mod 10, но если у нас есть такое число - 1234, то ведь надо например для 1 делать просто div 1000, для 2 и див и мод ну и т.д. Помогите или пошлите в пример плз ![]() Составить программу нахождения среднего арифметического значения цифр заданного натурального числа N (1<N<1000000000). Код program lol; var n:longint; k,s:integer; begin k:=1; s:=0; z:=n; writeln('vvesti 4islo'); readln(n); writeln; if (n>1)and(n<1000000000) then {'условие для n'} begin while z>=10 do {'здесь идёт вычисление из скольки цифр состоит число'} begin z:=z div 10; k:=k+1; end; begin {' !!! а здесь надо найти сумму состовляющих число цифр'} while i<=k do end; end; else writeln('neprav1ln1y argyment'); readln; end. -------------------- Цитата . . \__/ (**) (>:=:=:~~ ^ ^ ^ ^ Креветка присваивания :DDD |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
А ты сразу сумму цифр найти не можешь?
while n <> 0 do begin |
kr3v3tkus |
![]()
Сообщение
#3
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
volvo
так а ведь если число например 9значное(123456789) 1 s:=0+23456789 n:=12345678 получается так например для 1го а мне надо типа 1 s:=0+1 n:=2 2 s:=1+2 n:=3 типа это надо, или ты имееш ввиду както связать это с тем где находится количество цифр в числе? -------------------- Цитата . . \__/ (**) (>:=:=:~~ ^ ^ ^ ^ Креветка присваивания :DDD |
Alex7 |
![]()
Сообщение
#4
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 85 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата Составить программу нахождения среднего арифметического значения цифр заданного натурального числа N (1<N<1000000000). Значит скажем так. Есть у меня такая(ну, почти) работающая програма, но написано очень коряво, ибо давно и на тупую голову. ![]() Если чо поймешь, то можешь взять с нее куски: Код program suma_cifr_4isel_ta_porivnyannya_sum; 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<10 then goto sp1; 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<10 then goto sp2; sp2: s2:=s2+n2; writeln('Suma cifr 4isla B = ',s2); end; writeln; write (' Porivnyannya:'); if s1-s2<0 then write (' A < B') else 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; по моему не правиьно организовано, см. мою прогу→ там я использу. mod 10 чтобы получить последнюю цифру числа. -=еще раз извиняюсь за корявую програму- нету времени щас переделывать=- |
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Ты нормально задание написать можешь? Что тебе надо, конкретно? Ты писал про сумму цифр числа, я привел тебе фрагмент программы, который эту сумму находит, теперь ты опять что-то начинаешь придумывать...
Сумма цифр числа n = 1234567 равна 28 и ничему другому... Если тебе нужно не это, то будь добр привести пример входного и выходного значения (с объяснением)... Телепатов здесь нет. |
kr3v3tkus |
![]()
Сообщение
#6
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
2 volvo
Цитата Сумма цифр числа n = 1234567 равна 28 и ничему другому нуда мне это и нужно Цитата а мне надо типа 605=6+0+5 извини, я просто не понял применится ли Код while n <> 0 do begin s := s + (n mod 10); n := n div 10; end; к числу 1234567? ну если трассировать то ведь вроде получается так 1 s:=s+(n mod 10) {s=0+1234567 mod 10 => s=0+234567} n:= n div 10 {s=123456} так? извини конечно если я ошибаюс ![]() ![]() 2 Alex7 сенка, конечно туманно, но ща попробую раскурочить ![]() -------------------- Цитата . . \__/ (**) (>:=:=:~~ ^ ^ ^ ^ Креветка присваивания :DDD |
kr3v3tkus |
![]()
Сообщение
#7
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
2 volvo
ёёёё блин пардон , фсё крыша летит ![]() оно находит не 1 цифру а несколько ) сори я ваще касячу ( -------------------- Цитата . . \__/ (**) (>:=:=:~~ ^ ^ ^ ^ Креветка присваивания :DDD |
Alex7 |
![]()
Сообщение
#8
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 85 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата 1 s:=s+(n mod 10) {s=0+1234567 mod 10 => s=0+234567} Не так. Вот так: 1 s:=s+(n mod 10) {s=0+1234567 mod 10 => s=0+7} Т.Е. mod тебе выдает в результате ту цифру, которая не поделилась нацело на 10(на 10 могут нацело делится числя больше 10, а так, как у нас большое число, то его младшая цифра- единичная не делится, вот ее и получаем). Выполняя циклично этоту операцию ты получишь сумму цифр твоего числа, только тебе нужео запоминать значение n, чтобы в следушем цикле уже модить меньшее число(уже без последней цифры) и т.д. Короче Код while n <> 0 do begin s := s + (n mod 10); n := n div 10; end; Очень правильное и оптимаьное решение. Думаю как находить среднее значение тебе не нужно писать, сам не балбесс ![]() ![]() Сообщение отредактировано: volvo - 3.11.2006 22:43 |
Анастасия |
![]()
Сообщение
#9
|
Новичок ![]() Группа: Пользователи Сообщений: 41 Пол: Женский Реальное имя: Анастасия Репутация: ![]() ![]() ![]() |
Это по поводу нахождения количества цифр, суммы цифр и переворачивания цифр. Получается так у меня:
Код program kkk; uses crt; var i,t,s,k,m:integer;u:string; BEGIN clrscr; writeln('vvedi chislo '); readln(u);{!!!! -вот что надо читать - сразу строковую величину в цифрах} s:=0; {kolichestvo zifr} t:=0; {suma zifr} for i:=1 to length(u) do begin s:=s+1;val(copy(u,i,1),k,m); t:=t+k; end; writeln( 'kolichestvo zifr = ', s); writeln( 'suma zifr = ', t); write('perevernutoe chislo = '); for i:=length(u) downto 1 do begin write(copy(u,i,1)); end; end. Хотя и понимаю , что не логично вводить цифру строкой. Сообщение отредактировано: Анастасия - 23.10.2006 23:24 |
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
Цитата Может нельзя моим способом решать... Нельзя, конечно... Ты же читаешь число, а все лидирующие нули просто удаляются и не принимаются в расчет. Если хочешь, вводя 009 получать "перевертыш" равный 900, тебе надо вводить информацию сразу в виде строки...Кстати, ты на дату смотрела? Теме, извини, скоро ГОД... Что, закрывать темы что-ли, чтобы некрофилии не было? |
![]() ![]() |
![]() |
Текстовая версия | 18.06.2025 12:41 |