ВХОД

МЕТОДИЧЕСКИЕ РАЗРАБОТКИ ПО КУРСУ ИНФОРМАТИКИ

"ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ PASCAL"

Начало > Глава III. Палиндромы, Фибоначчи > Задачи с решениями

ГЛАВА 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.

 

 

 

 

Copyright ©2011 Nika A.S.
Hosted by uCoz