![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Розширення області значення змінноїСодержание книги
Поиск на нашем сайте
Даний метод значною мірою подібний розібраному в попередній секції - якщо необхідна змінна вже міститься в післяумові, то її можна використовувати для побудови інваріанта, просто дозволивши їй мінятися в більш широких межах. Як приклад розберемо класичну задачу «Шахрай на на соціальній допомозі». В оригінальному варіанті розглядаються три потенційно нескінченних упорядкованих за алфавітом списку прізвищ - співробітники дослідницького центру IBM, студенти Колумбійського університету та безробітні Нью-Йорка. Потрібно знайти перше з прізвищ, що зустрічається у всіх трьох списках (у припущенні, що воно є). Задача 2.5. Знайдіть мінімальне число, що міститься в кожному з двох упорядкованих за зростанням масивів цілих чисел, в продовженні, що таке існує. Розв'язання. Нехай наявні масиви - це a, Якщо не включати в передумова інформацію про те, що масиви є впорядкованими (не забуваючи про це, звичайно), то перед- і постумови шуканої програми буду мати вигляд Розширення області значень змінних i, j і k природний спосіб побудови інваріанта в даному випадку: В якості дій, які будуть наближати цикл до завершення можна використовувати оператори "i ++;", "j ++;" і "k ++;". При цьому зрозуміло, що кожен з них зобов'язаний бути присутнім у підсумковій програмі. Обчислимо wp ("i ++;", I) = (i + 1≤iv). Це означає, що збільшення індексу i в циклі потрібно робити, коли Легко помітити, однак, що виконання умови Це вже дозволяє написати програму, але якщо уважно дослідити доказ її правильності, то можна виявити можливість для її спрощення, що і реалізовано нижче.
Текст програми. public class Arr3 {public static void main(String[] args){ int a[] = { 1, 2, 4, 8,16,32,64,128};int b[] = {10,12,14,16,18,20,22, 24};int c[] = { 9,12,13,16,17,20,21, 24};inti = 0, j = 0, k = 0;while (true) { if (a[i] < b[j]) {i++; continue; }if (b[j] < c[k]) {j++; continue; }if (c[k] < a[i]) {k++; continue;}Xterm.println("Минимальное общее число=" + a[i]);return; } }}Обов'язково перевірте всі п'ять умов правильності цієї підсумкової програми. Завдання для самостійного рішення При вирішенні завдань необхідно побудувати і довести правильність побудованої програми виду "S0; while (e) S;", а за відсутності в умові задачі явно заданих інваріанта циклу і обмежуючій функції пояснити попередньо, яким чином вони були отримані. Задача 1.1. Напишіть програму, що друкує n-е число Фібоначчі Задача 1.2. Напишіть програму, що знаходить приватна Задача 1.3. Напишіть програму, що знаходить найбільший спільний дільник gcd (X, Y) двох цілих позитивних чисел X і Y, не використовує операцій множення і ділення і не змінну величин X і Y. При написанні програми покладіть Вказівка. Скористайтеся наступними властивостями найбільшого загального дільника двох чисел, що не рівних одночасно нулю (не забудьте навчитися доводити всі ці властивості):
Задача 1.4. Напишіть програму, що знаходить наближене значення квадратного кореня Задача 1.5. Напишіть програму, що визначає перше входження заданого цілого числа х в заданий масив масивів ВКАЗІВКА. Використовуйте інваріант, який стверджує, що х не перебуває у вже перевірених рядках
Задача 1.6. Напишіть програму (бінарний або двійковий пошук), визначальну для впорядкованого за не зменшенням масиву Задача 1.7. Напишіть програму, що друкує факторіал введеного невід’ємного цілого числа, змінювати яке не можна. Для побудови інваріанта використовуйте метод заміни константи змінної. Лекція 11.
|
||||||
Последнее изменение этой страницы: 2016-09-20; просмотров: 295; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.12.145 (0.009 с.) |