Форум
» Назад на решение задач по физике и термеху
Регистрация | Профиль | Войти | Забытый пароль | Присутствующие | Справка | Поиск

» Добро пожаловать, Гость: Войти | Регистрация
    Форум
    Информационные технологии
        Турбо Паскаль. Программирование на Pascal
Отметить все сообщения как прочитанные   [ Помощь ]
» Добро пожаловать на форум "Информационные технологии" «

Переход к теме
<< Назад Вперед >>
Несколько страниц [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 ]
Модераторы: paradise, KMA
  

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

Эта тема закрыта, новые ответы не принимаются

Переход к теме
<< Назад Вперед >>
Несколько страниц [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 ]

Форум работает на скрипте © Ikonboard.com