- Теория:
- Алгоритмы:
- Числа:
|
ГЛАВА III
ЗАДАЧИ С РЕШЕНИЯМИ
Числа Фибоначчи
|
1. Вывести на экран n первых чисел ряда Фибоначчи.
2. Вывести на экран n-ый элемент ряда Фибоначчи.
3. Вывести на экран n1-ый и n2-ой элементы ряда Фибоначчи и их сумму.
4. Найти двадцатое число Фибоначчи.
5. Найти удвоенное двадцатое число Фибоначчи.
6. 10 случайных чисел генерируются компьютером в интервале [5,10].
Вывести на экран числа ряда Фибоначчи. Найти их среднее арифметическое.
7. Число x вводится с клавиатуры. Проверить, является оно числом ряда Фибоначчи. Программа с тестированием.
8. Найти количество чисел Фибоначчи в интервале [2, 6].
9. Найти количество чисел Фибоначчи в интервале [a, b].
|
1. Вывести на экран n первых чисел ряда Фибоначчи.
Решение: первый алгоритм поиска чисел Фибоначчи.
Ответ:
n=6
1 1 2 3 5 8
program fib_01;
uses crt;
var i, ch, ch1, ch2, n :integer;
{i - счетчик чисел Фибоначчи;
n - количество чисел Фибоначчи;
ch - число Фибоначчи;
ch1, ch2 - вспомогательные переменные
алгоритма поиска чисел Фибоначчи}
begin
clrscr;
write('n='); readln(n);
ch:=0; {алгоритм поиска чисел Фибоначчи}
ch1:=1;
for i:=1 to n do
begin
ch2:=ch1;
ch1:=ch;
ch:=ch1+ch2;
write (ch:5) {надо вывести на экран все числа Фибоначчи,, поэтому оператор вывода находится внутри цикла}
end;
end.
|
2. Вывести на экран n-ый элемент ряда Фибоначчи.
Решение: первый алгоритм поиска чисел Фибоначчи.
Ответ:
n=10
ch=55
program fib_02;
uses crt;
var ch, ch1, n, i, ch2: integer;
{i - счетчик чисел Фибоначчи;
n - количество чисел Фибоначчи;
ch - число Фибоначчи;
ch1, ch2 - вспомогательные переменные
алгоритма поиска чисел Фибоначчи}
begin clrscr;
write('n='); readln(n);
ch:=0;
ch1:=1;
For i:=1 to n do
begin
ch2:=ch1;
ch1:=ch;
ch:=ch1+ch2;
End;
write ('ch=':5,ch)
{надо вывести на экран только последнее найденное число Фибоначчи, поэтому оператор вывода находится снаружи цикла}
end.
|
3. Вывести на экран n1-ый и n2-ой элементы ряда Фибоначчи и их сумму
Решение: первый алгоритм поиска чисел Фибоначчи.
Ответ:
n1=5
n2=10
5 55
S=60 |
или |
Ответ:
n1=10
n2=5
5 55
S=60 |
Program fib_03;
Uses CRT;
var n1, n2, ch, ch1,ch2, i, max, s:integer;
{i - счетчик чисел Фибоначчи;
n1, n2 - номера чисел Фибоначчи;
ch - число Фибоначчи;
ch1, ch2 - вспомогательные переменные
алгоритма поиска чисел Фибоначчи;
max - наибольший номер числа Фибоначчи;
S - сумма чисел}
begin
clrscr;
s:=0;
write('n1='); readln(n1);
write('n2='); readln(n2);
ch:=0;
ch1:=1;
if n2 > n1 then max:=n2 else max:=n1;{эта проверка делается на случай, если сначала введен больший номер, а затем меньший}
for i:=1 to max do
begin
ch2:=ch1;
ch1:=ch;
ch:=ch1+ch2;
if (i=n1) or (i=n2) then
{если число является n1-ым или n2-ым элементом ряда, то прибавляем его к сумме}
begin
write(ch:5);
s:=s+ch;
end;
end;
writeln; write('S=':5,s);
end.
|
4. Найти двадцатое число Фибоначчи.
Решение: первый алгоритм поиска чисел Фибоначчи.
Ответ: ch=6765
program fib_04;
uses crt;
var ch, ch1, n, i, ch2: integer;
{i - счетчик чисел Фибоначчи;
ch - число Фибоначчи;
ch1, ch2 - вспомогательные переменные алгоритма поиска чисел Фибоначчи}
begin clrscr;
ch:=0;
ch1:=1;
For i:=1 to 20 do
begin
ch2:=ch1;
ch1:=ch;
ch:=ch1+ch2;
End;
write ('ch=':5,ch) {надо вывести на экран только последнее найденное число Фибоначчи, поэтому оператор вывода находится снаружи цикла}
end.
|
5. Найти удвоенное двадцатое число Фибоначчи.
Решение: первый алгоритм поиска чисел Фибоначчи.
Ответ: ch*2=13530
program fib_05;
uses crt;
var ch, ch1, n, i, ch2: integer;
{i - счетчик чисел Фибоначчи;
ch - число Фибоначчи;
ch1, ch2 - вспомогательные переменные алгоритма поиска чисел Фибоначчи}
begin clrscr;
ch:=0;
ch1:=1;
For i:=1 to 20 do
begin
ch2:=ch1;
ch1:=ch;
ch:=ch1+ch2;
End;
write ('ch*2=':5, ch*2) {надо вывести на экран только последнее найденное число Фибоначчи, поэтому оператор вывода находится снаружи цикла}
end.
|
6. 10 случайных чисел генерируются компьютером в интервале [5,10].
Вывести на экран числа ряда Фибоначчи. Найти их среднее арифметическое.
Решение: первый алгоритм поиска чисел Фибоначчи (рациональнее было бы применить второй алгоритм поиска чисел Фибоначчи. )
Ответ может быть:
Количество чисел Фибоначчи равно 0.
или
ch=8 ch=8 ch=8
Sred=8...
program fib_06;
uses crt;
var x: byte; {случайноечисло}
ch, ch1, ch2: byte; {проверка ряда Фибоначчи}
S, kch: integer; {сумма и количество чисел Фибоначчи}
Sred: real; {среднее арифметическое}
ii, i: byte; {ii - счетчик для случайных чисел,
i - счетчик для ряда Фибоначчи}
begin clrscr;
randomize;
kch :=0;
For ii :=1 to 10 do {всего будет проверено 10 чисел}
begin
x := random(10-5+1)+5; {случайное число}
ch :=0; {начало алгоритма для проверки чисел Фибоначчи}
ch1 :=1;
for i :=1 to 6 do {т.к. в интервале [5, 10] только 6 чисел Фибоначчи:
1 1 2 3 5 8}
begin
ch2 :=ch1;
ch1 :=ch;
ch :=ch1+ch2;
if x = ch then
begin write ('ch=' : 10, ch);
S := S+ch; {ищем сумму и количество чисел, чтобы затем найти среднее арифметическое}
inc(kch)
end;
end;
end;
writeln;
{проверка деления на 0:}
if kch< >0 then begin Sred:=s/kch ; write ('Sred=':5, sred) end
else writeln('Количество чисел Фибоначчи равно 0.');
end.
|
7. Число x вводится с клавиатуры. Проверить, является оно числом ряда Фибоначчи. Программа с тестированием.
Решение: второй алгоритм поиска чисел Фибоначчи.
Ответ:
x=5
1. ch1=1 ch2=0 ch=1
2. ch1=0 ch2=1 ch=1
3. ch1=1 ch2=1 ch=2
4. ch1=1 ch2=2 ch=3
5. ch1=2 ch2=3 ch=5
Цикл закончен
x - число Фибоначчи
x=6
1. ch1=1 ch2=0 ch=1
2. ch1=0 ch2=1 ch=1
3. ch1=1 ch2=1 ch=2
4. ch1=1 ch2=2 ch=3
5. ch1=2 ch2=3 ch=5
6. ch1=3 ch2=5 ch=8
Цикл закончен
x - не число Фибоначчи
program fib_07;
uses crt;
var i, ch, ch1, ch2, x, n:integer;
{x - заданное число;
i - порядковый номер цикла;
ch - число Фибоначчи;
ch1, ch2 - вспомогательные переменные
алгоритма поиска чисел Фибоначчи}
begin clrscr;
write('x='); readln(x);
ch1:=0; ch2:=1; ch:=1;
i:=1;
repeat write(i:5,'. ') ;
ch1:=ch2;
ch2:=ch-1;
ch:=ch1+ch2; write('ch1=':10,ch1,'ch2=':10,ch2,'ch=':10,ch);
inc(i); {порядковый номер цикла}
inc(ch);
writeln;
until (x < ch) ;
writeln('Цикл закончен') ;
if x = ch -1 then writeln( ' x - число Фибоначчи')
else writeln( ' x - не число Фибоначчи')
{здесь x=ch-1, т.к. последнее действие в цикле - увеличение числа на 1}
end.
|
8. Найти количество чисел Фибоначчи в интервале [2, 6].
Программа с тестированием.
Решение: второй алгоритм поиска чисел Фибоначчи.
Ответ:
x=2
число Фибоначчи= 2 k=1
x=3
число Фибоначчи= 3 k=2
x=4
x - не число Фибоначчи
x=5
число Фибоначчи= 5 k=3
x=6
x - не число Фибоначчи
k=3
program fib_08;
uses crt;
var ch, ch1, ch2, x, n, k: integer;
{x - числа из заданного интервала;
k - количество чисел Фибоначчи;
ch - число Фибоначчи;
ch1, ch2 - вспомогательные переменные
алгоритма поиска чисел Фибоначчи}
begin clrscr;
x:=2; {первое число в заданном интервале}
k:=0; {количество чисел сначала равно 0}
while x<=6 do {6 - последнее число в заданном интервале}
begin
writeln('x=',x);
ch1:=0; ch2:=1; ch:=1; {алгоритм для проверки: является ли X числом Фибоначчи}
repeat
ch1:=ch2;
ch2:=ch-1;
ch:=ch1+ch2;
inc(ch);
until (x<ch) ; {до тех пор, пока X не превосходит очередное число Фибоначчи}
if x=ch-1 then {если X равен очередному числу Фибоначчи, то количество увеличивается на 1}
begin
write('число Фибоначчи= ',ch-1);
inc(k);
writeln('k=':5,k);
end
else writeln('x - не число Фибоначчи');
inc(x) {готовим для проверки следующий X}
end;
writeln('k=',k)
end.
|
9. Найти количество чисел Фибоначчи в интервале [a, b].
Решение: второй алгоритм поиска чисел Фибоначчи.
Ответ:
первое число в заданном интервале=10
последнее число в заданном интервале=1000
число Фибоначчи= 13
число Фибоначчи= 21
число Фибоначчи= 34
число Фибоначчи= 55
число Фибоначчи= 89
число Фибоначчи= 144
число Фибоначчи= 233
число Фибоначчи= 377
число Фибоначчи= 610
число Фибоначчи= 987
k=10
program fib_09;
uses crt;
var ch, ch1, ch2, a, b, x, k :integer;
{x - числа из заданного интервала;
a, b - границы интервала;
k - количество чисел Фибоначчи;
ch - число Фибоначчи;
ch1, ch2 - вспомогательные переменные
алгоритма поиска чисел Фибоначчи}
begin
clrscr;
write('первое число в заданном интервале=' );
readln(a) ;
write('последнее число в заданном интервале=' );
readln(b) ;
x:=a; {первое проверяемое число равно первому числу в заданном интервале}
k:=0;
while x<=b do {пока X не выйдет за границы заданного интервала}
begin
ch1:=0; ch2:=1; ch:=1; {алгоритм для проверки: является ли X числом Фибоначчи}
repeat
ch1:=ch2;
ch2:=ch-1;
ch:=ch1+ch2;
inc(ch);
until (x<ch) ; {до тех пор, пока X не превосходит очередное число Фибоначчи}
if x=ch-1 then
begin writeln('число Фибоначчи= ',ch-1); inc(k) end;
inc(x) {проверяем следующий X}
end;
writeln('k=',k)
end.
|
|
|
|
|
|
|
|