Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Простые алгоритмы

Автор: Евген 15.03.2004 5:41

Я думаю, для тех, кто разбирается в этой теме, задачи покажутся элементарными.Я только начинаю осваивать этот предмет.И, к сожалению, испытываю трудности уже в самом начале.
задача номер 1:
сделайте таблицу:
1-й столбец - числа 5,10,15,...100
2-й - числа из 1-го уменьшенные на 10 и умноженные на 4.
3-й - если число из 2-го столбца больше 200, должна выписаться разница этого числа и 200.Столбцы должны быть правильно отформатированны, чтобы каждое число было одно под другим.
я написал, как сумел, но не выходит 3-й столбец.

Код

program du2;
var I,X: Longint;
begin
for I:= 1 to 20 do
writeln(I*5:2,' ',4*(I*5-10):3,' ');
{третий столбец я пытался изобразить так, но что-то не идёт}
X:= 4(I*5-10)
if X > 200
then X-200;
writeln(I);
end.


и 2-я задачка:
Составить подпрограмму-фукцию, у которой 2 параметра десятичное число X и целое число N.Подрограмма вычислит значение X в Nй степени.Попрограмму вложить в главную программу,в которой можно будет ввести числа X и N и потом вызовом подпрограммы выдаст результат X в Nй степени.


К своему стыду, я даже не брался за 2-ю задачу.

И ещё вопрос чисто по работе самого паскаля.У меня Windows 2000, поставил 7-ю версию борланд паскаля.Сильно тормозит, не могу оперировать мышью.
Буду сильно признателен,если кто-нибудь найдёт время для оказания помощи.
С уважением, Евген.

Автор: pascal65536 15.03.2004 8:55

В стандартном паскале нет функции возведения в степень. Придётся действительно писать специальную функцию. Обычно используют логарифмы и антилогарифмы для возведения в степень.

У меня тоже win2k проблем с паскалем нет, правда у меня 6-я версия. Только надо работать в полноэкранном режиме.

Автор: Catty 16.03.2004 0:58

x^a=exp(a*ln(x)) - так можешь возвести число в степень в Паскале!

Автор: Atos 16.03.2004 18:34

Цитата
я написал, как сумел, но не выходит 3-й столбец.

Строчка writeln(I); должна быть вставлена в цикл for.

И, кстати, что это за непонятная строчка?
Код
if X > 200 then X-200;

Автор: Guest 17.03.2004 0:49

Atos
Это я пытался задать алгоритм 3-го столбца.Но видимо неудачно.Если знаешь, будь добр, подскажи.

Автор: APAL 17.03.2004 5:57

Наверное он имел в виду:

Код
if X > 200 then X:=X-200;


;)

Автор: Catty 19.03.2004 1:23

В книге Фаронова есть твоя вторая задача! Можешь порыться в форуме, здесь по-моему уже кто-то оставлял ссылку на его сайт, посмотри может она там есть!! ;)

Автор: Евген 19.03.2004 5:48

Catty
Спасибо.Кстати нашёл.Вот ссылка кому надо http://pascal.dax.ru/?books

Автор: Atos 20.03.2004 11:45

Попробуй для распечатки 3 столбца

Код

for I:= 1 to 20 do
begin
write(I*5:2,' ',4*(I*5-10):3,' ');
X:= 4(I*5-10);
if X > 200 then writeln(X-200) else writeln(' ');
end;

Автор: Guest 22.03.2004 17:05

Пишет
Error 94= "." expected.
huh.gif

Автор: Atos 22.03.2004 18:08

Так наверное один end лишний! Или что-то в этом духе...

Автор: Евген 23.03.2004 4:49

А ты сам пробовал запустить? а то чего то у меня не выходит.... unsure.gif

Автор: fms 24.03.2004 3:19

дак наверно end'a с точкой не хватает.. раз "expected".

Автор: APAL 24.03.2004 16:36

To Atos, fms:

Помоему я понял... smile.gif
Был приведен только ФРАГМЕНТ проги, а он наверное пытался его откомпелировать... Может "доуказать" раздел описаний, и самое главное "PROGRAM ..."?

Автор: Guest 26.03.2004 21:54

короче справился я с задачками...всем спасибо за участие.....вот кому интересно их решение:

Код

program pr1;
var
i,x:longint;
begin
for i:=1 to 20 do
begin
write(i*5:3,' ');
x:=4*(i*5-10);
write(x:3,' ');
if
x>200
then
write (x - 200);
writeln;
end;
end.

и вторая:
Код

program du3;
var x,n:integer;
function Mocnina(x,n:double):double;
begin
Mocnina:= round(exp(n*ln(x)));
end;
begin
write('Zadejte x=');
readln(x);
write('Zadejte n=');
readln(n);
write(Mocnina(x,n));
end.