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

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

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

Автор: Sir-j 25.10.2005 18:01

Задача N1:
Дано целое число N и набор из N вещественных чисел. Если данный набор образует убывающую последовательность, то вывести 0; в противном случае вывести номер первого числа, нарушающего закономерность.

Задача N2:
Дано целое число N(>1). Вывести наибольшее целое K, при котором выполняется неравенство exp(x*ln(3))<N, и само значение exp(x*ln(3)).

P.S. Если можно распишите полностью, как делается задача.

Автор: volvo 25.10.2005 18:13

Цитата(Sir-j @ 25.10.2005 13:01)
Проблема с циклами, не могу разобраться!
В чем именно?
Цитата(Sir-j @ 25.10.2005 13:01)
Если данный набор образует убывающую последовательность, то вывести 0; в противном случае вывести номер первого числа, нарушающего закономерность
Что такое убывающая последовательность? Это та последовательность, у которой
a[i] < a[i - 1]... Вот и пользуйся While-ом:
i := 1; z_a := true;
while (i <= n) and z_a do begin
z_a := a[i] < a[i - 1];
if z_a then inc(i);
end;
if z_a then writeln('0') else writeln('i = ', i);


Цитата(Sir-j @ 25.10.2005 13:01)
Дано целое число N(>1). Вывести наибольшее целое K, при котором выполняется неравенство exp(x*ln(3))<N, и само значение exp(x*ln(3)).
Ну, и где ты здесь видел K в неравенстве?

Автор: Guest 25.10.2005 19:46

C теорией я знаком, но как это пременить на практике!!
во 2 задаче извеняюсь К=Х unsure.gif
Все ломаю голову: "...В противном случае ввывести номер первого числа, нарушающего закономерноcть..." мне было бы приятно увидеть всю задачу целиком, посмотреть в чем я ошибся!!! huh.gif

Автор: volvo 25.10.2005 19:50

Цитата(Guest @ 25.10.2005 14:46)
C теорией я знаком, но как это пременить на практике!!
С теорией ??? Ты основной кусок программы там случайно не заметил? Кстати, как раз и делающий то, над чем ты "ломаешь голову"... А целиком задачи писать здесь не принято...

Если уж ты и ответы через строчку читаешь... <_<

Автор: Sir-j 25.10.2005 20:25

пожелел бы первокурсника, покажи всю задачу!!!! :molitva:
я пока что еще плохо знаю программирование, но я стараюсь понять!!!!
но что-то не получается !! PLIZZZZZZ :molitva:

Автор: klem4 25.10.2005 20:57

Ну во первых первую задачу Volvo тебе уже решил, жаль что ты ничего не понял, вот тебе мое решение, немного другое, но мне больше нравится

uses crt;
var
x : array[1..30] of integer;
i,n : integer;

begin

clrscr;

write('n='); readln(n);

for i := 1 to n do readln(x[i]);

i := 1;

while (i<=n-1) and (x[i]>x[succ(i)]) do inc(i);

writeln;

write('Result : ');

if i=n then writeln(0)
else writeln(succ(i));

readln;

end.


а вторая вроде вот так :

uses crt;
var
x,n : real;

begin

clrscr;

write('N='); readln(n);

x := (ln(n)/ln(3))-1;

writeln('x=', x:3:1);

writeln(exp(x*ln(3)):3 :1);


readln;

end.


Автор: Sir-j 25.10.2005 21:00

Друг, спасибо!! я не забуду помощь!!!! smile.gif

Автор: volvo 25.10.2005 21:51

Цитата(klem4 @ 25.10.2005 15:57)
а вторая вроде вот так :

blink.gif
Цитата(Sir-j @ 25.10.2005 13:01)
Вывести наибольшее целое K, при котором выполняется неравенство exp(x*ln(3))<N, и само значение exp(x*ln(3)).


Все-таки, без Trunc не обойтись smile.gif

Добавлено:
А еще лучше - вот так (с циклом) :
uses crt;
var
x, n : integer;
begin

clrscr;

write('N='); readln(n);
// n := 28;

x := 0;
while 0.25 + exp(x*ln(3)) < n do inc(x);
dec(x);

writeln('x=', x:3);
writeln(exp(x*ln(3)):3 :1, ' < ', n);
readln;
end.

Автор: Sir-j 26.10.2005 20:17

Как решить первую задачу не употребляя массива?? huh.gif

Автор: volvo 26.10.2005 20:38

Цитата
Как решить первую задачу не употребляя массива?
Задания корректные давать. Я в задании не вижу запрета использовать массив... Если его все-таки запрещено использовать, то в следующий раз говори заранее...
uses crt;
var
x, x_pred: integer;
i, n : integer;
z_a: boolean;

begin
clrscr;

write('n='); readln(n);
i := 1; z_a := true;
readln(x_pred);

while (i <= n) and z_a do begin
readln(x);
z_a := x{a[i]} < x_pred{a[i - 1]};
if z_a then inc(i);

x_pred := x;
end;
if z_a then writeln('0: Ok') else writeln('i = ', succ(i));

readln;
end.