Задача 261 сложное уравнение паскаль

Программирование на Паскале. Тема: «Решение квадратного уравнения с использованием конструкции IF–THEN–ELSE»

Цели урока:

  • Повторить с учащимися правила решения квадратных уравнений
  • Вспомнить алгоритмическую конструкцию IF-THEN-ELSE
  • Составить блок-схему программы и саму программу на языке Pascal
  • Проверить работоспособность программы на конкретных примерах
  • Расширить представления учащихся о применении языка Pascal
  • Воспитать у учащихся чувство аккуратности, внимательности, ответственности
  • Научить учащихся самостоятельно находить свои ошибки в программах
  • Оборудование:

  • Таблички с формулами
  • Плакат с блок-схемой алгоритма КВУР
  • Листочки с индивидуальными заданиями
  • Система программирования «Turbo Pascal 7.0»
  • До сих пор мы с вами говорили о каких-то отвлечённых задачах из области математики. Сегодня мы поговорим о конкретной задаче, которая встречается у вас почти на каждом уроке. Это решение квадратного уравнения. Я хочу, чтобы вы на примере этой задачи поняли, что программирование — это не просто прихоть учителя, это действительно раздел информатики, который может нам помочь, например, в решении конкретных математических задач. Нужно только уметь разбираться в этом.

    2. Математическое решение

    Давайте вспомним, что понимают под квадратным уравнением?

    Что из себя представляют числа a,b,c и как их называют?

    С чего начинают решение квадратного уравнения?

    Найдите вокруг себя формулу дискриминанта. (D=b 2 -4ac) (Приложение 3)

    Как мы решаем далее квадратное уравнение? (сравнение D с нулём)

    Какие выводы мы из этого делаем?

    (если D 0, то два корня)

    Как найти корни квадратного уравнения? Найдите формулы корней среди тех, что развешены повсюду.

    Если я случай наличия корней квадратного уравнения сведу к условию D0, то что я получу в случае D=0?

    (Два одинаковых корня)

    Давайте ещё раз подробно разберём нашу задачу:

    Итак, у нас есть квадратное уравнение ax 2 +bx+c=0.

    Мы должны решить его, т.е. найти такие значения х, при которых правая часть уравнения =0. Мы знаем, что для этого нам надо:

    Найти дискриминант D=b 2 — 4ac.

    Сравнить его с нулём

    D=b 2 -4ac=10 2 -4*3*3=100 — 36 =64

    Х1=,

    X2 =

    3. Составление блок-схемы алгоритма.

    По заданному решению попробуем составить блок-схему алгоритма в тетради. Кто справится первым, прошу к доске.

    Подпишем основные элементы блок — схемы применительно к языку программирования.

    4. Составление программы по блок — схеме.

    Теперь, пользуясь нашими записями, составим программу и покажем её учителю. Тот, кто до конца урока составит только программу, не проверив её на компьютере, получит три, тот, кто наберёт программу на компьютере, но не проверит её на примерах, получит три. Тот, кто выполнит всё задание, получит пять.

    А я раздам вам домашнее задание.

    Var a,b,c,d,x1,x1: real;

    Write(‘введите коэффициенты уравнения a,b,c’); readln(a,b,c);

    Else writeln(‘действительных корней нет’)

    1. Составить и набрать программу КВУР на компьютере.

    Загрузка среды Pascal- 2ЩЛКМ по значку Pascal, нажать ALT+ENTER.

    Запуск программы — ЩЛКМ по кнопке RUN выбрать RUN.

    2. Решить следующие квадратные уравнения и показать учителю их решения (если нет такой возможности, то занести их в маршрутный лист (Приложение 4)

    1,5х 2 -0,6х — 4,8 = 0

    3. Переделайте программу КВУР таким образом, чтобы в ней учитывался случай, когда D=0 и уравнение имеет один корень.

    4. Закрыть программу.

    Подсказка: Меню File — Exit или ALT+X.

    1. За простое воспроизведение (набор программы) без проверки оценка «3»

    2. За проверку работы программы на примерах, представленных учителем оценка «4»

    3. За решение всех заданий и дополнительное изменение программы для случая D=0, оценка «5»

    4. Закрыть программу.

    Подсказка: Меню File — Exit или ALT+X.

    Х1Х2
    13,2301390,1031947
    21,464102-5,464102
    31,106107-1,356107
    4Корней нет
    5Корней нет
    61,60
    72-1,6
    8Корней нет
    90,6872614-1,131706
    109,486833-9,486833

    Можно дать дополнительное задание:

    Изменить программу так, чтобы ответ был с точностью до 2-х знаков после запятой.

    1) Напишите программу проверки пароля. Пусть пароль — некоторое число, зафиксированное в программе. Программа печатает приглашение «введите пароль» и вводит число. Если введённое число совпадает с фиксированным паролем, то программа выводит приветствие, если нет — сообщает о том, что пароль не угадан.

    7. Подведение итогов урока.

    Итак, ребята, сегодня мы с вами решали конкретные задачи из математики, применяя свои умения по программированию. Вы получили следующие оценки за свои знания. (Перечисление оценок) На следующем уроке нам предстоит познакомиться с новыми алгоритмами — Циклическими.

    На сегодня наш урок закончен. До свидания.

    Литература:

  • И. Семакин, Л. Залогова «Информатика. Базовый курс. 9 класс», М., БИНОМ, 2005г.
  • А.А. Чернов «Конспекты уроков информатики в 9-11 классах», Волгоград: Учитель, 2006г.
  • Л.И. Белоусова, С.А. Веприк «Сборник задач по курсу информатики», М., «Экзамен», 2007.
  • Олимпиадные задачи — простая математика

    ЗАДАЧА №312 Арифметическая прогрессия

    (Время: 1 сек. Память: 16 Мб Сложность: 15%)

    Заданы первый и второй элементы арифметической прогрессии. Требуется написать программу, которая вычислит элемент прогрессии по ее номеру.

    Входные данные

    Входной файл INPUT.TXT содержит три целых числа, разделенных пробелами – первый элемент прогрессии A1 (1 ≤ A1 ≤ 1000), второй элемент прогрессии A2 (1 ≤ A2 ≤ 1000), и номер требуемого элемента N (1 ≤ N ≤ 1000).

    Выходные данные

    Выходной файл OUTPUT.TXT должен содержать одно целое число — N-й элемент арифметической прогрессии.

    Из курса школьной матеметики известна формула $$a_n=a_1+d(n-1),\ d=a_k-a_=a_2-a_1 \to a_n=a_1+(a_2-a_1)(n-1)$$

    Для представления данных достаточно стандартного типа integer .

    ЗАДАЧА №411 Квадратное уравнение

    (Время: 1 сек. Память: 16 Мб Сложность: 28%)

    Сложно найти человека, который любит решать однообразные задачки по математике. В последнее время школьникам стало легче, ведь с появлением компьютеров почти в каждой квартире стало существенно проще проверять себя. Но программы, в которых решение уравнений является стандартной функцией, установлены не везде. Напишите программу, которая сможет решить уравнение ax 2 + bx + c = 0 при заданных коэффициентах a, b и c.

    Входные данные

    Единственная строка входного файла INPUT.TXT содержит три целых числа a, b и c, каждое из которых не превосходит по модулю 30000. Числа разделяются пробелами.

    Выходные данные

    На первой строке выходного файла OUTPUT.TXT выведите число различных действительных корней заданного уравнения. Затем выведите сами корни по одному на строке с ошибкой, не превосходящей 10 -4 . Если для заданных коэффициентов корней бесконечно много, на единственной строке выходного файла выведите -1.

    Некоторую сложность этой задаче придает разветвленность алгоритма. В самом деле, при а = 0 квадратное уравнение вырождается в уравнение первой степени, а при a = b = 0 возникает вариант с = 0, где при с = 0 получается тождество 0 = 0 и х может быть любым, а при с ≠ 0 решений нет. Первая ветка алгоритма есть: если (a = 0 и b = 0), то при с = 0 вывести -1, иначе вывести 0

    Уравнение первой степени имеет вид bx+c = 0, откуда х = -с/b. Случай с b = 0 здесь невозможен, он исключен предыдущей веткой и уравнение имеет единственный корень. Можно включать в алгоритм и эту ветку. если (a = 0 и b ≠ 0), то вывести 1 и в следующей строке значение -c/b

    Осталось рассмотреть случай a ≠ 0, приводящий к квадратному уравнению. Алгоритм решения квадратного урвнения школьникам известен. Сначала вычисляется дискриминант D = b 2 — 4ac. Далее возможны три случая. При D 0 уравнение имеет два действительных и различных корня. Здесь выводим 2 и значения корней, полученные по формуле $$x_<1,2>=\frac<-b\pm\sqrt><2a>$$

    Исходные данные представляем в стандартном типе real

    ЗАДАЧА №682 Сумма n-значных чисел

    (Время: 1 сек. Память: 16 Мб Сложность: 30%)

    По заданному n найти сумму всех n-значных чисел.

    Входные данные В единственной строке входного файла INPUT.TXT записано одно натуральное число n (1 ≤ n ≤ 100).

    Выходные данные В единственную строку выходного файла OUTPUT.TXT нужно вывести все цифры суммы всех n-значных чисел.

    Задача на нахождение суммы арифметической прогрессии $$S=\frac<2>n$$

    Сложность в том, что эта сумма может оказаться очень большой для n-значных чисел.

    Например, если n=100, то нужно найти значение $$S=\frac<10^<99>+(10^<100>-1)><2>9\cdot10^<99>$$

    Это число, запись которого содержит около 200 цифр, так что понадобится тип BigInteger .

    Приведем формулу к виду, минимизирующему количество возведений в степень. $$S=\frac<10^+10^n-1><2>9\cdot10^; \ k=10^ \to S=\frac<2>9k=\frac<9k(11k-1)><2>$$

    При написании программы на время такой подход оптимален. Если хочется решить задачу “красивее” и создать программу, позволяющую получать суммы для n = 1000, 10000 и т.д. придется заняться анализом получаемых сумм. С этой целью получим суммы для n = 1..5.

    n = 1 S=45

    n = 2 S=4905

    n = 3 S=494550

    n = 4 S=49495500

    n = 5 S=4949955000

    Начиная с n = 3 просматривается закономерность: сначала идет ‘494’, потом n-3 раза повторяется ‘9’, далее следует ‘55’, и в конце n-2 раза повторяется ‘0’. Это позволяет написать вариант программы, обходящийся без BigInteger .

    ЗАДАЧА №205 Таймер

    (Время: 1 сек. Память: 16 Мб Сложность: 31%)

    Таймер — это часы, которые умеют подавать звуковой сигнал по прошествии некоторого периода времени. Напишите программу, которая определяет, когда должен быть подан звуковой сигнал.

    Входные данные В первой строке входного файла INPUT.TXT записано текущее время в формате ЧЧ:ММ:СС (с ведущими нулями). При этом оно удовлетворяет ограничениям: ЧЧ — от 00 до 23, ММ и СС — от 00 до 60.

    Во второй строке записан интервал времени, который должен быть измерен. Интервал записывается в формате Ч:М:С (где Ч, М и С — от 0 до 109, без ведущих нулей). Дополнительно если Ч=0 (или Ч=0 и М=0), то они могут быть опущены. Например, 100:60 на самом деле означает 100 минут 60 секунд, что то же самое, что 101:0 или 1:41:0. А 42 обозначает 42 секунды. 100:100:100 — 100 часов, 100 минут, 100 секунд, что то же самое, что 101:41:40.

    Выходные данные В выходной файл OUTPUT.TXT выведите в формате ЧЧ:ММ:СС время, во сколько прозвучит звуковой сигнал. При этом если сигнал прозвучит не в текущие сутки, то дальше должна следовать запись +”количество” days. Например, если сигнал прозвучит на следующий день – то +1 days.

    Идея решения проста: вести расчеты в секундах. В одном часе 3600 секунд, в одной минуте — 60. К исходному времени добавляется временной интервал, а итог из секунд переводится в дни, часы, минуты и секунды. Гораздо большую проблему может представлять интерпретация исходных данных из-за нестандартного разделителя “:” и достаточно вольной записи временного интервала. При формировании вывода удобно использовать интерполированные строки.

    Решение системы уравнений

    Задача

    Требуется определить, сколько можно преобрести ручек (по цене 10 руб.), карандашей (5 руб.) и ластиков (2 руб.) на 100 рублей. При этом всего предметов должно быть 30.

    Решение

    Обозначим искомое количество ручек, карандашей и ластиков через переменные a , b и c соответственно.

    Цены предметов: pa , pb , pc .

    Количество предметов: qty .

    Сумма покупки: sum .

    Алгоритм решения задачи:

    Составим систему уравнений.
    Уравнение суммы покупки: 10*a + 5*b + 2*c = 100
    Уравнение количества предметов: a + b + c = 30

    Заменим числа соответствующими переменными:
    Уравнение суммы покупки: pa*a + pb*b + pc*c = sum
    Уравнение количества предметов: a + b + c = qty

    Чтобы перебрать все возможные варианты сочетания переменных a , b и с , надо использовать три цикла, вложенные друг в друга.
    Если при каких-либо значениях a , b и c оба уравнения будут истинны, значит эти значения являются решением для системы уравнений.
    Система уравнений может иметь несколько решений или не иметь ни одного.

    Программа на языке Паскаль:

    При заданных данных программа выдаст два варианта решения системы уравнений:

    Программа может выглядеть немного по-другому. При заданных значениях a и b определить c можно по формуле qty — a — b . В таком случае код будет выглядеть так:


    источники:

    http://pascalabcnet.github.io/olymp_simple_math.html

    http://pas1.ru/combined-equations