Пошук

неділю, 10 січня 2010 р.

V. Цикли з передумовою

ЗАДАЧА № 32

Постановка задачі:

Дано натуральне число N. Визначити кількість цифр у числі.

Текст програми:

Program Task_32;

Uses crt;

Var N: longint; Counter: integer;

Begin

Clrscr;

Write(‘Введіть число: ’);

Readln(N);

Counter:= 0;

While N > 0 do

Begin

Counter:=Counter+1; {Підрахунок кількості цифр}

N:=N div 10; {Відкидання останньої цифри}

End;

Writeln(‘Кількість цифр у заданому числі дорівнює ’, N);

Readkey;

End.

ЗАДАЧА № 33

Постановка задачі:

Коли Василині Премудрій виповнилося 18 років, Чахлик Невмирущий вирішив одружитися з нею. Василина запитала Чахлика, скільки у нього скринь із золотом. Чахлик відповів, що зараз у нього n скринь і щороку додається ще по т скринь. Василина пообіцяла, що вийде заміж тоді, коли у Чахлика буде k повних скринь із золотом. Скільки років буде тоді нареченій?

Текст програми:

Program Task_33;

Uses crt;

Var

m, n, k:word;

{n – початкова кількість скринь із золотом,

 m – щорічний «прибуток» Чахлика,

 k – «потреби» Василини Премудрої}

Sum, Years:word;

{Sum – щорічне накопичення Чахлика,

 Years – вік Василини Премудрої}

Begin

Clrscr;

Write(‘Введіть початкову кількість скринь з золотом: ‘);

Readln(n);

Write (‘Введіть щорічний прибуток Чахлика: ‘);

Readln(m);

Write(‘Введіть «потреби» Василини Премудрої: ‘);

Readln(k);

Sum:=n;{Початковий «капітал» Чахлика}

Years:=18;{Початковий вік Василини}

While Sum<=k do

Begin

Sum:=Sum+m;

Years:=Years+1;

End;

Writeln(‘Василині вже виповнилося ‘, Years, ‘ років.‘);

Readkey;

End.

ЗАДАЧА № 34

Постановка задачі:

Дано натуральне число п. Визначити суму цифр у числі.

Аналіз алгоритму:

Для розв’язку цієї задачі використаємо такий штучний прийом: щоб знайти суму цифр, ми повинні «брати» цифри по одній і додавати їх одна до одної, а потім використану цифру «відкидати». Це нам дозволять зробити операції ділення націло та знаходження залишку від цілочисельного ділення. Так, при діленні числа націло на 10 остання цифра числа буде«відкидатися», а при знаходженні залишку від ділення націло ми виділяємо останню цифру числа. Тобто:

123 div 10 = 12

3928 mod 10 = 8.

Процес буде повторюватись, доки від числа «нічого не залишиться», тобто, доки воно не перетвориться на нуль.

Текст програми:

Program Task_34;

Uses crt;

Var n:longint; {N – дане число}

Sum:byte; {Sum – сума цифр числа}

Begin

Clrscr;

Sum:=0; {Сума цифр числа спочатку дорівнює 0}

Write(‘Введіть ціле число: ‘);

Readln(N);

N:=abs(N);

While N>0 do

Begin

Sum:=Sum+N mod 10; {Знаходження суми цифр}

N:=N div 10; {«Відкидання» останньої цифри числа}

End;

Writeln(‘Сума цифр = ‘, Sum);

Readkey;

End.

ЗАДАЧА № 35

Постановка задачі:

Дано ціле число т > 1. Знайти найбільше число k, при якому виконується умова 4k < т.

Текст програми:

Program Task_35;

Uses crt;

Var m, k, Rez:longint; {Rez – обчислення степеню 4}

Begin

Clrscr;

Write(‘Введіть значення m (m>1): ‘);

Readln(m);

Rez:=1;

k:=0;

While Rez

Begin k:=k+l; Rez:=Rez*4; End;

Writeln(‘k = ‘, k) ;

Readkey;

End.

ЗАДАЧА № 36

Постановка задачі:

Обчислити суму ряду  з точністю ε.

Аналіз алгоритму:

Під час обчислення результатів деяких експериментів виникає необхідність отримання результату із заданою похибкою. Нехай результатом є нескінченна сума, що задається певною формулою, і відома похибка ε (ε > 0) для знаходження наближеного значення результату. Будемо вважати, що необхідна точність досягнута, коли додавання наступного доданку змінює суму на величину, меншу за ε.

У даній задачі перед обчисленням чергової суми ми порівнюємо наступний доданок з похибкою і якщо доданок менше, обмеження припиняються.

Текст програми:

Program Task_36;

Uses crt;

Var і:word;

S, Epsilon:real; {S – результат обчислень, Epsilon – похибка}

Begin

Clrscr;

S:=0; {Початкове значення дорівнює 0,

тому що результат є накопиченням суми}

Write(‘Введіть значення похибки (Е>0): ‘);

Readln(Epsilon);

і:=1;

While 1/sqr(i)>Epsilon do

Begin S:=S+1/sqr(i); i:=i+1; End;

Writeln(‘Сума ряду = ‘, S:8:2);

Readkey;

End.

ЗАДАЧА № 37

Постановка задачі:

Обчислити значення числа π, використовуючи формулу

Знайти, кількість доданків що дає значення числа π з точністю до 3 знаків.

Аналіз алгоритму:

Для організації циклу з передумовою в цій задачі необхідно мати еталон числа π для порівняння з нескінченною сумою. Візьмемо за цей еталон значення вбудованої функції Рі. Крім того, за умовою задачі нам необхідно отримати результат із точністю до третьої цифри після коми. Пропоную для цього стандартне число π і отриману нескінченну суму помножити на число 1000 та округлити результат за допомогою функції round (отриману суму, крім того, необхідно ще помножити на 4, оскільки сама сума є чвертю числа π). Зверніть увагу також на те, що в нескінченній сумі доданки, що стоять на парних місцях, додаються зі знаком «+», а доданки на непарних місцях – віднімаються від суми. Тобто, залежно від номера доданку (парний чи непарний) ми організовуємо знакочергування у нескінченній сумі.

Текст програми:

Program Task_37;

Uses crt;

Var і, n:word; {і – параметр циклу, n – кількість доданків}

Rez_Pi:real; {Rez_Pi – обчислене значення числа Рі}

Begin

Clrscr;

Rez_Pi:=0;

і: =1; {і – значення знаменника першого доданка}

n:=0; {n – доданків ще нема}

while round(pi*1000)=round(Rez_Pi*4000) do

Begin

If n mod 2=0 Then Rez_Pi:=Rez_Pi+1/i

Else Rez_Pi:=Rez_Pi–1/i;

i:=i+2;

n:=n+1;

End;

Writeln(‘Кількість необхідних доданків: ‘, n);

Writeln(‘Порівняйте значення Рі: ‘);

Writeln(‘  Результат обчислень програми: ‘, Rez_Pi:10:8);

Writeln(‘  Вбудована функція: ‘ , Рі:10:8);

Readkey;

End.

Немає коментарів:

Дописати коментар