//PascalABC.NET 3.2 сборка 1318
//Вариант по формуле Бине
Var
n,fibn:real;
i:integer;
begin
readln(n);
if n<=0 then writeln('Не существует чисел Фиббоначи меньше 0')
else
begin
i:=0;
while fibn<n do
begin
fibn:=(power((1+sqrt(5))/2,i)-power((1-sqrt(5))/2,i))/sqrt(5);
inc(i);
end;
writeln((power((1+sqrt(5))/2,i)-power((1-sqrt(5))/2,i))/sqrt(5)-1);
end;
end.
//В лоб
Var
sum,n,buf,fib0,fib1:integer;
function fibb(fib0,fib1:integer):integer;
begin
result:=fib0+fib1;
end;
begin
fib0:=0;
fib1:=1;
readln(n);
if n<=0 then
writeln('Не существует чисел Фиббоначи меньше 0')
else
begin
if fibb(fib0,fib1)>=n then sum:=0 else
begin
while fibb(fib0,fib1)<n do
begin
buf:=fib1;
fib1:=fibb(fib0,fib1);
fib0:=buf;
end;
sum:=fibb(fib1,fibb(fib0,fib1))-1;
end;
writeln(sum);
end;
end.
Пример ввода:
12
Пример вывода:
20
<em>VAR</em>
<em> a,b,c: LongInt;</em>
<em>BEGIN</em>
<em> Read(a,b,c);</em>
<em> </em>
<em> if (a*b = 1)or(a*c = 1)or(b*c = 1) then Write('ДА')</em>
<em> else Write('НЕТ');</em>
<em>END.</em>
Const N=30;
var s,b:real;
c,i:integer;
A:array[1..N] of real;
begin
Randomize();
b:=0;
c:=0;
for i:=1 to N do
begin
A[i]:=random(500)+300;
b:=b+A[i];
end;
s:=b/N;
for i:=1 to N do if A[i]<s then c:=c+1;
Writeln('Средняя зарплата: ',s);
Write('Количество сотрудников,получающих зарплату ниже средней: ',c);
End.
Просто добавить условие, что делить на 0 нельзя.
Delphi/Lazarus
------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
a, b, c, d, x1, x2: real;
begin
a := StrToFloat(Edit1.Text);
b := StrToFloat(Edit2.Text);
c := StrToFloat(Edit3.Text);
if a <> 0 then
begin
d := sqr(b) - 4 * a * c;
if (d > 0) then
begin
x1 := (-b+sqrt(d))/(2*a);
x2 := (-b-sqrt(d))/(2*a);
Label1.Caption := 'x1 = ' + FloatToStr(x1);
Label2.Caption := 'x2 = ' + FloatToStr(x2);
end
else
if d = 0 then
begin
x1:=-b /(2*a);
x2:=x1;
Label1.Caption := 'x1 = ' + FloatToStr(x1);
Label2.Caption := 'x2 = ' + FloatToStr(x2);
end
else
if d < 0 then
ShowMessage('Корней нет');
end
else
if (a = 0) and (b = 0) and (c = 0) then
ShowMessage('X = любое.')
else
if (a = 0) and (b = 0) then
ShowMessage('Решений нет.')
else
if (a = 0) then
begin
x1 := (-c)/b;
Label1.Caption := 'x = ' + FloatToStr(x1);
Label2.Caption := '';
end;
end;