amigo
Начинающий
|
{пока набрал свой вариант,ответ уже дали} Program Sum; VAR a,b,s:integer; Begin s:=0; {сумма трёх значного} b:=trunc(a/100); s:=b; a:=a-100*b; b:=trunc(a/10); s:=s+b; a:=a-10*b; s:=s+a; end; (Сообщение отредактировал amigo 12 окт. 2006 17:07)
|
Всего сообщений: 54 | Присоединился: март 2006 | Отправлено: 12 окт. 2006 17:05 | IP
|
|
Guest
Новичок
|
1) ввести два числа и упорядочить их в порядке возростания 2) Определить, сколько минутm и сколько часов h прошло. например: k=13257; H=3 m=40 3) Поменять местами значения двух переменных. 2 способа 4) Ввести два числа m и n если n< или = m, то вывести 1, если нет, то любое другое число. Проблема: все надо сделать без if then for и т.д
|
Всего сообщений: Нет | Присоединился: Never | Отправлено: 12 окт. 2006 17:15 | IP
|
|
Guest
Новичок
|
Цитата: KMA написал 12 окт. 2006 16:52
while count<>0 do begin summa:=summa+ (count mod 10) count:=count div 10; end; Универсальный код, для любого порядка.
А вы можете сделать это без while, if, then, for...?
|
Всего сообщений: Нет | Присоединился: Never | Отправлено: 12 окт. 2006 17:21 | IP
|
|
miss_graffiti
Долгожитель
|
1. легко решается, подумай. чисто математически... отталкиваясь от среднего арифметического. 2. пользуйся div и mod 3. поищи по форуму - решалось. 4. разделить и вывести округленный в большую сторону результат.
|
Всего сообщений: 670 | Присоединился: сентябрь 2005 | Отправлено: 12 окт. 2006 17:55 | IP
|
|
Guest
Новичок
|
В том то и дело, что я не понимаю, что за див и мод, что они делают... не могли бы вы подсказать подходящий сайт
|
Всего сообщений: Нет | Присоединился: Never | Отправлено: 12 окт. 2006 18:07 | IP
|
|
Guest
Новичок
|
КМА, цикл 1, 1, 2, 3, 5, 8, 13 у меня сделать получается, но в условии написано что каждый следующий есть суммой всех предыдущих, а не дух последних, и на сколько я правильно понимаю условие, я должен получить цикл 1,1,2,4,8,16,32... подскажи еще, пожалуйста, парюсь над ним уже не первый день.
|
Всего сообщений: Нет | Присоединился: Never | Отправлено: 13 окт. 2006 0:14 | IP
|
|
KMA
Долгожитель
|
Мда, видимо забыты те времена, когда надо было бы пользоваться справочником. Итак, для любого целого числа операция div есть целое от деления двух чисел, а mod остаток. Рассмотрим пример. 5 div 2=2; 5 mod 2=1; 10 div 4=2; 11 mod 4=3. Понятно. Дык вот, если учесть все выше сказанное, получим для двухзначного целого цисла сумма цифр: sum:=(count mod 10)+(count div 10); А для трехзначного sum:=(count mod 10)+ ((count div 10) mod 10) + (count div 100); Вот так вот. Теперь все понятно?
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 13 окт. 2006 0:18 | IP
|
|
KMA
Долгожитель
|
[qoute] КМА, цикл 1, 1, 2, 3, 5, 8, 13 у меня сделать получается, но в условии написано что каждый следующий есть суммой всех предыдущих, а не дух последних, и на сколько я правильно понимаю условие, я должен получить цикл 1,1,2,4,8,16,32... подскажи еще, пожалуйста, парюсь над ним уже не первый день. [/qoute] Вообще без вопросов. Не уверен в рациональности, но мой вариант таков. f[1]:=1; for j:=2 to n do begin f[j]:=0; {так, на всякий случай обнуляю} for k:=1 to j do {считаю сумму всех предыдущих} f[j]:=f[j]+f[k] end; Это по условия задачи Хотя взглянул на ряд и понял прикол, короче вот. f[1]:=1; f[2]:=1; for j:=3 to n do f[j]:=f[j-1] shl 1; {короче эта запись аналогична f[j-1]*2; но оптимизированее.} Иными словами каждый последующий член с порядковым номером j есть член двойки в степени j-2.
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 13 окт. 2006 0:30 | IP
|
|
KMA
Долгожитель
|
1) ввести два числа и упорядочить их в порядке возростания
Ну это тривиально, на самом деле, здесь действительно надо додумать. Есть два числа a1 и a3. Найдем второй член арифметической прогрессии: a2:=(a1+a3)/2; Далее можно спокойно найти d. А с ним уже зная формулы арифметической прогресси выведем все остальное.
3) Поменять местами значения двух переменных. 2 способа
А это уже олимпиадная задача, она стоила 10 баллов. Первый способ, тривиален: buf:=a; a:=b; b:=buf; Второй, конечно по прикольнее, до него надо додуматься: а:=a+b; b:=a-b; a:=a-b;
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 13 окт. 2006 0:49 | IP
|
|
ditar
Новичок
|
KMA, большое спасибо за помощь с циклом 1,1,2,4,8,16,32... только я строку for k:=1 to j do при подсчете предыдущих исправил на for k:=1 to j-1 do а то получалось 2,4,12,36,108.... сумма предыдуших умноженная на 2. Вот что вышло: for i:=2 to n do begin x:=0; for k:=1 to i-1 do x:=x+x[k] ; end; еше раз спасибо.
|
Всего сообщений: 6 | Присоединился: октябрь 2006 | Отправлено: 13 окт. 2006 1:02 | IP
|
|
|