PDA

Просмотр полной версии : Pascal. Задачи.


Zakary
12.05.2006, 13:52
Привет всем. хочу спросить..кто-нибудь может помочь сделать пару задач на паскале?
1-ая
Решить задачу с использованием цикла. найти сумму к чисел, стоящих на четных местах в геометрической прогрессии 2,8,32,128,512
2-ая
Даны числа a и х. Вычтислить значение выражения sqr(sqr(...sqr(sqr(х+а)+а)+...+а))+а всего н скобок.

кто сможет помогите пожалуйста по ним..особенно по первой. они вообще не сильно сложные(информатика 11 класс)..но я чета не могу.

Mobile
12.05.2006, 21:04
10000$

Utochka
12.05.2006, 21:10
Zakary - если согласен за 5-10$ я возьмусь.

Dronga
12.05.2006, 21:16
Блин, подправьте, а то без компилятора под рукой фигово.
1.var
i,k:integer;
begin
k:=2;
writeln('Skolko wagov??');
readln(n);
for i:=1 to n do begin
k:=k*4;
writeln(k) {для отладки}
end;
end.Сейчас вторую погляжу. Без компилятора фигово.

2.
sqr(sqr(...sqr(sqr(х+а)+а)+...+а))+а
var
x,a,sum,i,k:real;
begin
writeln('Vvedite X');
readln(x);
writeln('Vvedite A');
readln(a);
sum:=x+a;
writeln('Vvedite shag');
readln(k);
for i:=1 to k do begin
sum:=sqr(sum)+a;
writeln(sum) {для отладки}
end;
end.
Если ничего не путаю, то должно работать правильно.

Utochka
12.05.2006, 21:33
Dronga - конечно хорошо, что на халяву выложил ему код, но я хотел бабосы срубить )

Dronga
12.05.2006, 21:44
На этом????? Побойся бога!

Deem3n®
12.05.2006, 22:45
вот не успел запостить ))
1.

var
i, n: integer;
pr_item, sum: longint;
begin
writeln('Enter num of progression elements (>=2):');
readln(n);

pr_item := 2;
sum := 0;
writeln('Summed progression elements:');
for i := 0 to n do
begin
pr_item := pr_item shl 2;
if (not odd(i)) then
begin
sum := sum + pr_item;
write(pr_item, ' ');
end;
end;
writeln;
writeln('sum = ', sum);
end.
Enter num of progression elements (>=2):
10
Summed progression elements:
8 128 2048 32768 524288 8388608
sum = 8947848
2. Банальная рекурсия
var
x, a, n, result: integer;
function f(var x:integer; var a:integer; n:integer):integer;
begin
if (n = 1) then
f := sqr(x+a)+a
else
f := sqr(f(x, a, n - 1)) + a;
end;
begin
writeln('Enter x, a and n:');
readln(x, a, n);
writeln('Result = ', f(x, a, n));
end.
Enter x, a and n:
1 1 3
Result = 677
Обьяснять код не буду - сам разберешся
На этом????? Побойся бога!ну ну ))

Zakary
13.05.2006, 10:01
Deem3n, dronga
спасибо вам огромное!!! есть ещё добрые люди на свете...+
ещё. если можете объясните что значат эти две строчки
pr_item := pr_item shl 2;
if (not odd(i)) then

Deem3n®
13.05.2006, 10:20
Deem3n, dronga
спасибо вам огромное!!! есть ещё добрые люди на свете...+
ещё. если можете объясните что значат эти две строчки
pr_item := pr_item shl 2;
if (not odd(i)) then
pr_item := pr_item shl 2; экивалентно pr_item := pr_item * 4 - логический сдвиг влево на 2 бита битовой строки (написал так по привычке потому что первая инструкция выполняется намного быстрее второй)
Odd(X) Возвращает булево True (истина), если Х — нечетное целое, и False (ложь) — в противном случае

[Zarakul]
13.05.2006, 11:26
они вообще не сильно сложные(информатика 11 класс)..но я чета не могу.Ни разу в 11-ом классе даже близко таких задач не решали...

Zakary
13.05.2006, 15:01
Deem3n
ещё раз спасибо!
Zarakul
А у нас вот так вот)))

Sn@k3
13.05.2006, 15:21
']Ни разу в 11-ом классе даже близко таких задач не решали...
вы чё серъёзно.блин а нас закидывают такие барахлом.приходится делать

Otaku
13.05.2006, 17:17
Блин. Ведь я лет в 15 такие задачки щёлкал. Экзамены сдавл даже. А сейчас паскаль забыл совсем :(
Старею?

Zakary
14.05.2006, 14:44
Вот здесь ну очень легкая задача...больше по математике надо))) Решить задачу с использованием условного оператора. Составить программу для определения вида треугольника по двум сторонам и углу меджду ними. Определяемое совйство: равностороний, равнобедренный или прямоугольный(обратите внимание, что треугольник может быть равнобедренным прямоугольным). Для корректного анализа нужно определить ещё третью сторону (например, по теореме косинусов sqr(c)=sqr(a)+sqr(b)-2*a*b*cos(a)). вот что получилось у меня, но не правильно работает.
program abc;
var a,b,c,d:real;
begin
write('enter 1 side:'); readln(a);
write('enter 2 side:'); readln(b);
write('enter angle:'); readln(c);
d:=sqrt(sqr(a)+sqr(b)-2*a*b*cos(a));
if c=90 then writeln('priamougolnii');
if (a=b) and (a=d) and (c=60) then writeln('ravnostoronii');
if (a=b) or (b=d) or (a=d) and (c<>60)then writeln ('ravnobedrenii');
readln;
end.(

Zakary
16.05.2006, 16:22
Все ещё требуется ваш хелп.

Li4inka
16.05.2006, 17:36
1) 2Mobile ты мудак
2) все кто хотели на этом срубить деньги просто гады :) должно быть стыдно.
3) Zakary - программирование это лишь умение задачу вбить комуптеру чтобы он ее делал, но если ты сам не знаешь как решать задачу теб нужно сначала над первым работать, а не браться за второе - это так совет.
1) стандартные тригонометрические функции в паскале берут угол как аргумент не в градусах, а радианах, для перевода градусов в радианы : rad=gradus*pi/180;
2) замени:

if (a=b) then if (c=60) then writeln('ravnostoronii')
else writeln ('ravnobedrenii');

SanyaX
16.05.2006, 19:49
Li4inka вот закрыла бы твой маленький ротик. Програмист-тракторист широкого профиля тебе звание было бы.

Zakary
18.05.2006, 09:59
Li4inka
Спасибо за сове. но оскорблять не надо.....Mobile ведь пошутил)))