Персональная страничка
| ||
Предыдущий раздел:
Следующий раздел:
1. Из мат. анализа известно, что последовательность сумм вида:
сходится к функции . Исследуйте зависимость от точности приближения синуса десятым членом последовательности. Для этого рассчитайте величину в 20 точках в диапазоне от 0 до .
2. «Рисование» символами.
(а) Выведите на экран числа в следующем виде: 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 и т.д. (б) Выведите на экран числа в следующем виде: 7 6 5 4 3 2 6 5 4 3 2 5 4 3 2 4 3 2 3 2 2 (в) Выведите на экран числа в следующем виде: 1 3 2 2 4 4 3 3 3 5 5 5 4 4 4 4 6 6 6 6 (г) Выведите звездочки «полуелочкой» (рис. справа). (д) Превратите «полуелочку» в полную елочку. |
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * и т.д. Заданное количество раз. |
Следующий раздел:
Предыдущий раздел:
Ёёёёлочка %)
taras viktorovich,zdrastvuyte,podskagite,a skolko ziklov nado ispolzovat dlya postroenia elockia,zadanie 2 (g),pitalsya cheres 2 ne sovsem vihodit ta elka kotoraya nugna,drug podskazal chto tam nugno 3 zikla,eto tak?
Да, тремя проще всего.
rfr ltkfnm
{jhjifz pflfxf ))
Половинку ёлки сделал вот так :/
program elo4ka;
var
x, y, c, z, u, f: integer;
begin
for x := 1 to 3 do
begin
for y := 1 to x do
begin
write(x, ‘ ‘);
end;
writeln;
end;
begin
for c := 1 to 6 do
begin
for z := 1 to c do
begin
write(c, ‘ ‘);
end;
writeln;
end;
end;
begin
for u := 1 to 9 do
begin
for f := 1 to u do
begin
write(u, ‘ ‘);
end;
writeln;
end;
end;
end.
Есть ли способ попроще?)
Полуёлочка у тебя получается трехярусная. По заданию она должна иметь произвольное количество ярусов (см. фразу «и т.д. заданное число раз»). Я думаю, если ты этого добьешься, то одновременно упростишь программу.
program zd35;
var x,m,n,k,i,b,c:integer;
begin
writeln(‘Введите n’);
readln(n);
for k:=1 to n do
begin
for i:=1 to 3 do
begin
for m:=1 to i do
write(x ,’ ‘);
writeln
end;
end;
end.
Чего именно здесь не хватает? Цикла ещё одного ? чтобы, начиная новый цикл на одну строчку становилось больше.
всё, нашёл решение. for i:=1 to 3+k-1 do. Вместо строчки с i
Как сделать первый номер?
Суммы вроде той, что стоит в задании, считаются с помощью рекуррентных соотношений. Кроме того, нужен еще один цикл, который будет перебирать иксы от 0 до . Полнее ответить на так общо поставленный вопрос затрудняюсь.
Полуёлочка:
…
Был текст программы.
Хорошая полуелочка. Но как на счет полной?
А куда делся текст программы?
Ёлочка:
program yolochka;
var
x, y, z, n, h:integer;
begin
readln(x);
x:=x+2;
for y:= 3 to (x) do
begin
for z:= 1 to y do
begin
for n:= 1 to (x-z) do
write(‘ ‘);
for h:= 1 to (2*z) do
write(‘*’);
writeln;
end;
end;
end.
Полуёлочка (второй вариант):
program yolochka1;
var
x, y, z, n, h:integer;
begin
readln(x);
x:=x+2;
for y:= 3 to (x) do
begin
for z:= 1 to y do
begin
for n:= 1 to (x-z) do
write(‘ ‘);
for h:= 1 to z do
write(‘*’);
writeln;
end;
end;
end.
В полной елочке хотелось бы, чтоб на вершине была только одна звездочка, а не две. Будет красивее.
>> А куда делся текст программы?
Это была хорошая программа. Чтобы не мешать другим людям находить собственные решения, я все хорошие из комментариев стираю.
Можно и так:
program yolochka;
var
x, y, z, n, h:integer;
begin
readln(x);
x:=x+2;
for y:= 3 to (x) do
begin
for z:= 1 to y do
begin
for n:= 1 to (x-z) do
write(‘ ‘);
for h:= 1 to (2*z)-1 do
write(‘*’);
writeln;
end;
end;
end.
Теперь — хорошо.
Понравились задачи на Ёлочки. очень интересные. Однако версия елочки от анонима мне не понравилась, там нет пробелов между «*». вот моя ёлочка:
var i,j,p,n,c,s,g:integer;
begin
write (‘kol-vo stupeney elo4ki:’);readln(n);s:=3;g:=n;
while n0 do begin
p:=g*2+2;
c:=1;
for i:=1 to s do begin
For j:=1 to p do write (‘ ‘);
for j:=1 to c do write (‘* ‘);
writeln;
p:=p-2;
c:=c+2;
end;
s:=s+1;
n:=n-1;
end;
end.
Пусть цветут сто цветов!
Такая елочка может быть?
program zadacha_2d;
var
i, n, r, z, m, k, l: integer;
begin
write (‘введите количество ярусов елочки ‘);
read (r);
for m:= 1 to r do
begin
for n:= 1 to 2+m do
begin
for z:= 2+r-n downto 1 do
write(‘ ‘);
for i:=1 to n do
write(‘* ‘);
writeln;
end;
end;
for l:= 1 to 2 do
begin
for k:= 1 to r+1 do
write (‘ ‘);
write(‘*’);
writeln;
end;
end.
Не пойму в первой задаче, где взять 20 точек, если от 0 до 2Pi только 6. Почему-то программа во второй точке (x=2), должна показывать 0, а показывает не правильно:
при x=1 ответ 1
x=2 4.05231403988182E-14
x=3 2.85887999234244
x=4 32.2159870228703
x=5 352.944528309944
x=6 4203.29851213808
Поняла откуда 20 точек. Ошибки выдает из-за ограниченности программы в больших числах.
Например, S6(6)=-2.06025974025981 — примерно правильно, а уже S7(6)=4.69974664101275 , хотя должно быть +/- 0,….
Задаю integer
Как поступить при работе с большими цифрами?
Вернулась еще к первой задачи, вместо real использовала double и все вывело правильно. Кому интересно:
program zadacha_1;
var
x, r, i: integer;
a, b: double;
function f(n:double): double;
begin
if n<=1 then f:=1
else f:=n*f(n-1); {вычисление n!}
end;
function s(n:double): double;
begin
s:=exp(ln(x)*n); {вычисление x в n степени}
end;
function k(n:double): double;
begin
k:=2*n-1; {вычисление степени и знаминателя факториала}
end;
begin
for x:= 1 to trunc(2*pi) do
begin
r:=20;
a:=0;
b:=0;
for i:= 1 to r div 2 do
begin
a:=s(k(i))/f(k(i));
if i mod 2 = 0 then
b:=b-a else
b:=b+a;
end;
writeln(abs(sin(x)-b):2:3);
end;
end.
program zadacha5_2_e;
var
x,y,z,k,n,l:integer;
begin
write(‘Enter the number of storeys of Christmas tree’);
readln(n);
for l:=1 to 2*(4+(n-1))-1 do
begin
write(‘ ‘);
end;
write(‘*’);
writeln;
for x:=1 to n do
begin
for y:=1 to 4+(x-1) do
begin
for k:=y to n+2 do
begin
write(‘ ‘);
end;
for z:=1 to 2*y do
begin
write(‘*’,’ ‘);
end;
writeln;
end;
end;
end.
var {elochka}
a, b, c, d, e, f, n:integer;
begin
readln(n);{chislo iarusov}
for a:=1 to n+2 do
if a<=n then
begin
for b:=1 to a+2 do
begin
for c:=4*n-b downto 1 do
write(' ');
for d:=1 to 2*b-1 do
begin
write('*',' ');
end;
writeln;
end;
end else
begin
for e:=4*n-1 downto 1 do
write(' ');
write('x');
writeln;
end;
end.
//Задание 5: Вложенные циклы
//1. Из мат. анализа известно, что последовательность сумм вида:
//сходится к функции sin(x). Исследуйте зависимость от x точности приближения синуса десятым членом последовательности.
//Для этого рассчитайте величину |sin(x)-s_{10}(x)| в 20 точках в диапазоне от 0 до 2pi.
//Не пользуясь командами, которые мы еще не проходили.
program a51;
var
c, cc, z, h, i: integer;
r, yy, sn, a, x, y: real;
begin
a:=-1;
y:=1;
c:=1;
cc:=1;
x:=2;
for h:=1 to 614 do
begin
x:=h/195;
for i:=1 to 10 do
begin
a:=(-1)*(1)*a;
y:=x*y;
yy:=y;
y:=x*y;
if i=1 then
begin
cc:=1;
end else
begin
c:=cc*(i+i-2);
cc:=c*(i+i-1);
end;
sn:=sn+a*(yy/cc);
end;
r:=abs(sin(x)-sn);
writeln (‘Для x равным ‘, x, ‘ точность приближения синуса десятым членом последовательности к формуле равно ‘, r);
end;
end.
//(а) Выведите на экран числа в следующем виде:
// 1
// 2 2
// 3 3 3
// 4 4 4 4
// 5 5 5 5 5
//и т.д.
program a52а;
var
h, i,: integer;
begin
for i:=1 to 5 do
begin
for h:=1 to i do
begin
write (i, ‘ ‘)
end;
writeln;
end;
end.
//(в) Выведите на экран числа в следующем виде:
// 1
// 3
// 2 2
// 4 4
// 3 3 3
// 5 5 5
// 4 4 4 4
// 6 6 6 6
program a52в;
var
h, i: integer;
begin
for i:= 1 to 4 do
begin
for h:=1 to i do
begin
write(i);
end;
writeln;
for h:=1 to i do
begin
write(i+2);
end;
writeln;
end;
end.
program задача2_д;
var
i, n, k, x, q, q1, z, z1, z2: integer;
begin
write(‘Введите количество ярусов: ‘);
readln(q1);
q:=q1+1;
for x:=2 to q do
begin
for i:=1 to x do
begin
for n:=x div (q+1) downto i-q do
write(‘ ‘);
for k:=1 to i*2-1 do
write(‘* ‘);
writeln;
end;
end;
z2:=q*2;
for z:=1 to 2 do
begin
for z1:=1 to z2 do
write(‘ ‘);
write(‘*’);
writeln;
end;
end.