Главная / Информатика / Использование формул геометрической прогрессии для решения задач по информатике

Использование формул геометрической прогрессии для решения задач по информатике

8. Геометрическая прогрессия

1. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те ра­бо­ты сле­ду­ю­ще­го фраг­мен­та про­грам­мы:

 

var k, s: integer;

begin

    s:=0;

    k:=0;

    while s < 80 do begin

        s:=s+2*k;

        k:=k+4;

    end;

    write(s);

end.

Реше­ние.

Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие s < 80, т. е. пе­ре­мен­ная k опре­де­ля­ет, сколь­ко раз вы­пол­нит­ся цикл.

 

Ак­ку­рат­но вы­пи­шем все s и k:

 

s 0 0 8 24 48 80

k 0 4 8 12 16 20

 

(Пом­ни­те, что усло­вие s < 80 про­ве­ря­ет­ся толь­ко после k:=k+4, по­это­му дей­ствие s:=s+2*k по­след­ний раз вы­пол­нит­ся для k=16)

 

Сле­до­ва­тель­но ответ 80.



2. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те ра­бо­ты сле­ду­ю­ще­го фраг­мен­та про­грам­мы:

 

var k, s: integer;

begin

    s:=0;

    k:=0;

    while k < 12 do begin

        s:=s+2*k;

        k:=k+3;

    end;

    write(s);

end.

Реше­ние.

Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие k < 12, т. е. пе­ре­мен­ная k опре­де­ля­ет, сколь­ко раз вы­пол­нит­ся цикл.

 

Так как числа не­боль­шие, можно ак­ку­рат­но вы­пи­сать все s и k:

 

s 0 0 6 18 36

k 0 3 6 9 12

(Пом­ни­те, что усло­вие k < 12 про­ве­ря­ет­ся сразу после k:=k+3, сле­до­ва­тель­но дей­ствие s:=s+2*k для k=12 вы­пол­нять­ся не будет)

 

Сле­до­ва­тель­но, ответ — 36.



3. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те вы­пол­не­ния про­грам­мы (за­пи­сан­ной ниже на раз­ных язы­ках про­грам­ми­ро­ва­ния).

 

Бей­сик

Пас­каль

DIM N, S AS INTEGER

N = 1

S = 6

WHILE S <= 365

S = S + 36

N = N * 2

WEND

PRINT N

var n, s: integer;

begin

n : = 1;

s : = 6;

while s <= 365 do

begin

s : = s + 36;

n : = n * 2

end;

write(n)

end.

Си

Ал­го­рит­ми­че­ский

#include

void main()

{

int n, s;

n = 1;

s = 6;

while (s <= 365)

{

s = s + 36;

n = n * 2;

}

printf("%d", n);

}

алг

нач

цел n, s

n : = 1

s : = 6

нц пока s <= 365

s : = s + 36

n : = n * 2

кц

вывод n

кон

Реше­ние.

Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие s <= 365, т. е. пе­ре­мен­ная s опре­де­ля­ет, сколь­ко раз вы­пол­нит­ся цикл. Цикл вы­пол­нит­ся hello_html_24acb7d.png раз. Учи­ты­вая, что из­на­чаль­но s=6 и что дей­ствие "n : = n * 2" вы­пол­ня­ет­ся после "s : = s + 36", при­хо­дим к вы­во­ду, что дей­ствие "n : = n * 2" вы­пол­нит­ся 10 раз. Сле­до­ва­тель­но, зна­че­ние n будет равно 210 = 1024.

 

Ответ: 1024.



4. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те вы­пол­не­ния про­грам­мы (за­пи­сан­ной ниже на раз­ных язы­ках про­грам­ми­ро­ва­ния).

 

Бей­сик

Пас­каль

DIM N, S AS INTEGER

N = 1

S = 0

WHILE S <= 1024

S = S + 128

N = N * 2

WEND

PRINT N

program B05;

var n, s: integer;

begin

n := 1;

s := 0;

while s <= 1024 do

begin

s := s + 128;

n := n * 2;

end;

write(n)

end.

Си

Ал­го­рит­ми­че­ский язык

#include

void main()

{

int n, s;

n = 1;

s = 0;

while (s <= 1024)

{

s = s + 128;

n = n * 2;

}

printf("%d", n);

}

алг

нач

цел n, s

n := 1

s := 0

нц пока s <= 1024

s := s + 128

n := n * 2

кц

вывод n

кон

 

Реше­ние.

Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие s ≤ 1024, т. е. пе­ре­мен­ная s опре­де­ля­ет, сколь­ко раз вы­пол­нит­ся цикл.

За­ме­тим, что hello_html_m6764396f.png После 9 шага s ста­нет рав­ной 1152 и усло­вие s ≤ 1024 ока­жет­ся не­вы­пол­нен­ным, цикл пре­рвет­ся. Сле­до­ва­тель­но, зна­че­ние n будет равно 29 = 512.

 

Ответ: 512.



5. Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те вы­пол­не­ния про­грам­мы (за­пи­сан­ной ниже на раз­ных язы­ках про­грам­ми­ро­ва­ния).

 

Бей­сик

Пас­каль

DIM N, S AS INTEGER

N = 0

S = 1

WHILE S <= 1000

S = S * 3

N = N + 3

WEND

PRINT N

program B05;

var n, s: integer;

begin

n := 0;

s := 1;

while s <= 1000 do

begin

s := s * 3;

n := n + 3;

end;

write(n)

end.

Си

Ал­го­рит­ми­че­ский язык

#include

void main()

{

int n, s;

n = 0;

s = 1;

while (s <= 1000)

{

s = s * 3;

n = n + 3;

}

printf("%d", n);

}

алг

нач

цел n, s

n := 0

s := 1

нц пока s <= 1000

s := s * 3

n := n + 3

кц

вывод n

кон

 

Реше­ние.

Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие s ≤ 1000, т. е. пе­ре­мен­ная s опре­де­ля­ет, сколь­ко раз вы­пол­нит­ся цикл.

По­сколь­ку 36 < 1000 < 37 = 2187 , сле­до­ва­тель­но, цикл вы­пол­нит­ся 7 раз. На 7-м шаге s ста­нет рав­ной 2187 и усло­вие s ≤ 1000 ока­жет­ся не вы­пол­нен­ным, цикл пре­рвет­ся. Сле­до­ва­тель­но, зна­че­ние n будет равно 7·3 = 21.

 

Ответ: 21.



Использование формул геометрической прогрессии для решения задач по информатике
  • Информатика
Описание:

Пример задачи.

Опре­де­ли­те, что будет на­пе­ча­та­но в ре­зуль­та­те ра­бо­ты сле­ду­ю­ще­го фраг­мен­та про­грам­мы:

 var k, s: integer;

begin

    s:=0;

    k:=0;

    while s < 80 do begin

        s:=s+2*k;

        k:=k+4;

    end;

    write(s);

end.

Реше­ние.

Цикл while вы­пол­ня­ет­ся до тех пор, пока ис­тин­но усло­вие s < 80, т. е. пе­ре­мен­ная k опре­де­ля­ет, сколь­ко раз вы­пол­нит­ся цикл.

Ак­ку­рат­но вы­пи­шем все s и k:

 s 0 0 8 24 48 80

k 0 4 8 12 16 20

 (Пом­ни­те, что усло­вие s < 80 про­ве­ря­ет­ся толь­ко после k:=k+4, по­это­му дей­ствие s:=s+2*k по­след­ний раз вы­пол­нит­ся для k=16)

 Сле­до­ва­тель­но ответ 80.

 

 

Автор Хакимзянова Нурания Идерисовна
Дата добавления 26.12.2014
Раздел Информатика
Подраздел
Просмотров 482
Номер материала 12495
Скачать свидетельство о публикации

Оставьте свой комментарий:

Введите символы, которые изображены на картинке:

Получить новый код
* Обязательные для заполнения.


Комментарии:

↓ Показать еще коментарии ↓