Главная страница
Навигация по странице:

  • Краткие сведения из теории 3.1. Типы разветвляющихся алгоритмов

  • 3.2. Операторы перехода

  • 3.2.1. Операторная запись обхода

  • 3.2.2. Операторная запись альтернативы

  • 3.2.3. Операторная запись алгоритма выбора

  • 3.2.4. Метка. Оператор перехода. Пустой оператор.

  • Задание к работе Разработать программу в соответствии с индивидуальным вариантом задания. Методические указания

  • Варианты индивидуальных заданий

  • ЛАБОРАТОРНАЯ РАБОТА N4 Тема: " Перечислимые и ограниченные типы данных " Цель работы

  • Краткие сведения из теории

  • Задание к работе Выполнить индивидуальное задание. Методические указания

  • ЛАБОРАТОРНАЯ РАБОТА N 5

  • лабораторные работы паскаль. Практикум по программированию на языке Паскаль Учебное пособие


    Скачать 0.89 Mb.
    НазваниеПрактикум по программированию на языке Паскаль Учебное пособие
    Анкорлабораторные работы паскаль.pdf
    Дата28.01.2018
    Размер0.89 Mb.
    Формат файлаpdf
    Имя файлалабораторные работы паскаль.pdf
    ТипПрактикум
    #14972
    страница3 из 11
    1   2   3   4   5   6   7   8   9   10   11
    Тема: "Разветвляющиеся вычислительные процессы"
    Цель работы
    Получение навыков разработки алгоритмов и программирования разветвляющихся вычислительных процессов.
    Краткие сведения из теории
    3.1. Типы разветвляющихся алгоритмов
    Второй типовой структурой алгоритмов является разветвляющийся вычислительный процесс, в котором направление вычислений зависит от результата проверки некоторого условия. Направления, по которым может следовать вычислительный процесс, называются ветвями. В программах разветвляющихся процессов естественный порядок выполнения операторов нарушается и обеспечивается выполнение той последовательности операторов, которая соответствует выбранным условиям. В языке Паскаль это реализуется специальными управляющими операторами или операторными структурами, которые называются операторами перехода.
    Схему алгоритма разветвленной структуры характеризует наличие блока "условие", который имеет два выхода, помеченные словами "да" и "нет". Еще этот блок называют логическим блоком. В этом блоке осуществляется проверка выполнения некоторого логического условия. Если условие "истинно", вычислительный процесс идет по выходу "да", в противном случае - по выходу "нет".
    Различают три типа разветвляющихся алгоритмов, функциональные схемы которых приведены на рисунке 6.
    Рис.6. Функциональные схемы разветвляющихся процессов
    S
    B нет да а
    S2
    B нет да б
    S1
    S2
    S1
    B1 да нет
    B2 да нет
    BK да нет
    SK вход выход в

    24
    Ветвление, представленное на рис.6(а), называется обходом, так как оператор S, записанный в арифметическом блоке, не выполняется, если условие В ложно. При реализации вычислительного процесса арифметический блок будет обойден, и направление вычислений пойдет по ветви "нет".
    Выбор из двух возможностей, или альтернатива, представлен на рис.6(б). Если проверяемое условие В будет истинным, выполнится оператор S1, в противном случае выполнится оператор S2. Отметим, что алгоритм обхода является частным случаем альтернативы.
    Выбор из многих возможностей представлен на рис.6(в). Здесь Вi, i=1,K представляют собой условия выбора, в зависимости от значений которых выполняется один из соответствующих им операторов S1, S2, . . , SK.
    3.2. Операторы перехода
    Назначение операторов перехода состоит в организации безусловных и условных переходов в программе в зависимости от результата проверки логического условия В.
    3.2.1. Операторная запись обхода
    Разветвление такого типа может быть записано с помощью условного оператора, который имеет вид:
    IF < выражение > THEN < оператор > , где IF ( "если" ) и THEN ( "то" ) - ключевые слова;
    < выражение > - логическое условие;
    < оператор > - оператор.
    При решении практических задач бывает необходимо в зависимости от результата проверки, выполнить (или обойти) группу операторов. Язык Паскаль предоставляет возможность сделать из группы операторов один составной оператор, заключив группу операторов в операторные скобки Begin и End.
    Тогда условный оператор для записи обхода группы операторов имеет вид:
    IF < выражение > THEN Begin < S1, S2, . . , SN > End;.
    Пример.
    Вычислить и вывести на экран корень квадратный из положительного числа Х, значение которого не превышает 1000. В случае отрицательного числа никаких вычислений в программе не производится.
    Дано: Х - исходное число.
    Математическая запись задачи
    :
    Y
    X
    =



    Схема алгоритма решения задачи приведена на рисунке 7.
    Рис.7
    Программа на языке Паскаль (операторная запись алгоритма ).
    Program KOR(input, output);
    VAR {описание действительных переменных X и Y }
    , если Х >=0 нет вычислений, если Х < 0.
    Y
    = X
    начало ввод Х
    Х
    ≥0 вывод Х
    конец да

    25
    X, Y : real;
    Begin
    Readln( X ); { ввод переменной Х }
    If X >= 0 Then
    Begin
    { составной оператор }
    Y :=SQRT ( X );
    WriteLn( ' Корень из Х равен ', Y : 6:2)
    End
    End.
    3.2.2. Операторная запись альтернативы
    Выбор из двух возможностей реализуется условным оператором, имеющим следующий синтаксис:
    IF < выражение > THEN < оператор 1 > ELSE < оператор 2 >; где ELSE ("иначе") - ключевое слово.
    Если < выражение > истинно, то выполняется < оператор 1 >, в противном случае - < оператор 2 >.
    Оператор, стоящий после ключевого слова ELSE, может быть любым оператором, в том числе и условным. Кроме того, < оператор 1> и <оператор 2> могут быть составными операторами.
    Ниже приведена одна из возможных конструкций условного оператора:
    IF B1 THEN Begin End ELSE If B2 Then Else ;
    Здесь B1 и B2 - логические условия. < Оператор 1 > представляет собой составной оператор, а < оператор 2 > - условный оператор If - Then - Else. Если логическое условие В1 истинно, выполнятся S1 и S2, и управление будет передано следующему в программе оператору.
    Если логическое условие В1 ложно, выбирается < оператор 2 >. При его выполнении проверяется условие В2: в случае истинности выражения В2 выполняется оператор S3, в противном случае - S4.
    Пример.
    Словесная постановка задачи. Вычислить корни квадратного уравнения. Квадратное уравнение имеет вид: aX
    2
    + bX + c = 0.
    Словесное описание задачи:
    1.
    Ввести значения коэффициентов квадратного уравнения a, b и c.
    2.
    Вычислить значение D = b
    2
    - 4ac.
    3.
    Сравнить D с нулем. Если D < 0, перейти к п. 6.
    4.
    Вычислить X1 = ( -b +
    D
    )/( 2a); X2 = ( -b -
    D
    )/( 2a ).
    5.
    Вывести на печать значения X1 и X2. Перейти к п. 7.
    6.
    Вывести сообщение об отсутствии действительных корней уравнения.
    7.
    Прекратить вычисления.
    Схема алгоритма решения задачи приведена на рисунке 8.

    26
    Рис.8. Схема алгоритма
    Операторная запись задачи.
    PROGRAM KORNY(input, output);
    VAR {описание переменных } a, b, c : real;
    X1, X2, D : real;
    BEGIN
    { ввод коэффициентов квадратного уравнения }
    ReadLn( ' Введите коэффициенты a, b, c: ', a, b, c );
    { вычисление дискриминанта D }
    D = b * b - 4 * a * c;
    WriteLn;
    { условный оператор }
    IF D < 0 THEN
    WriteLn( ' Уравнение не имеет действительных корней.')
    ELSE
    Begin
    X1 := ( -b + SQRT(D) ) / 2* a;
    X2 := ( -b - SQRT(D) ) / 2 *a;
    WriteLn( ' X1= ', X1 : 7:2, ' X2= ', X2 : 7:2 )
    End
    END.
    X1 = ( -b +
    D
    )/( 2a);
    X2 = ( -b -
    D
    )/( 2a); начало ввод a, b, c
    D<0
    Корней нет конец да
    D = b
    2
    - 4ac
    Х1, Х2

    27
    3.2.3. Операторная запись алгоритма выбора
    Обычно при написании программ не рекомендуется использовать многократно вложенные друг в друга условные операторы, так как программа становится громоздкой и ее трудно понимать. Считается, что число уровней вложения не должно превышать двух - трех. Для тех случаев, когда необходимо проверять много условий и в зависимости от них выполнять различные действия, в языке Паскаль существует специальный оператор выбора.
    Синтаксис оператора выбора:
    CASE < индекс выбора > OF < элементы списка выбора > [ELSE <оператор>] END;
    Индекс выбора состоит из выражения. Элементы списка выбора включают список операторов, каждый из которых помечен одной или несколькими константами выбора. Все константы выбора должны быть различными, а их тип должен быть идентичен типу выражения (индекса выбора). В качестве типа выражения, следовательно, и констант выбора, можно использовать любой простой тип, за исключением типа REAL.
    Выполнение оператора выбора начинается с вычисления значения индекса выбора. Затем выбирается для выполнения тот оператор из списка элементов выбора, который помечен константой выбора, имеющей вычисленное значение индекса выбора. Если константы с таким значением нет, то управление передается оператору, стоящему за зарезервированным словом ELSE. Конструкция ELSE <оператор> может отсутствовать. В этом случае при отсутствии в списке выбора нужной константы ничего не произойдет и оператор выбора просто завершит работу.
    Рассмотрим фрагменты программ, содержащие оператор выбора.
    Пример 1
    PROGRAM EXAMPL1( input, output );
    VAR
    I : INTEGER;
    X : REAL;
    BEGIN
    CASE I OF
    1 : X := Sin( X );
    2 : X := Сos( X );
    3 : X := Exp( X );
    4 : X := Ln( X )
    End;
    END.
    Пример 2.
    PROGRAM EXAMPL2;
    VAR
    I : INTEGER;
    X : REAL;
    BEGIN
    CASE I OF
    1 : X := Sin( X );
    2 : X := Сos( X );
    3 : X := Exp( X );
    4 : X := Ln( X )
    ELSE

    28
    WriteLn ( ' Значение индекса выбора не соответствует заданным константам .' );
    END
    END.
    Пример 3.
    В элементе списка выбора можно использовать несколько констант выбора, а также диапазоны:
    CASE ХCH OF
    'A', 'C', 'E', 'G' : WriteLn( 'Указано несколько констант');
    'K' . . 'R' : WriteLn( 'Указан интервал')
    END;
    В этом операторе переменная ХCH символьного типа.
    В заключение отметим, что:
    − в качестве элемента списка выбора можно использовать составной оператор;
    − все константы выбора внутри одного оператора выбора обязательно должны быть различными, так как в противном случае возникает неоднозначность в выборе исполняемого оператора;
    − в разных операторах выбора разрешается использовать одинаковые константы выбора.
    3.2.4. Метка. Оператор перехода. Пустой оператор.
    Каждый оператор в программе может быть помечен меткой – произвольным идентификатором. Метка позволяет именовать некоторый оператор программы и таким образом ссылаться на него. Метка располагается перед оператором и отделяется от него двоеточием.
    Например:
    10: ReadLn( ' Введи значение переменной A:', A);
    124: Y := X * X + S * Z;
    Метки не влияют на выполнение оператора. Они должны быть описаны в разделе описания меток. Описание меток состоит из ключевого слова LABEL и следующего за ним списка меток.
    Например:
    LABEL 10, 124, 540, L1, L2;
    Описания меток располагаются до совокупности всех описаний переменных. Описанной меткой должен быть помечен только один оператор программы.
    Оператор перехода прерывает естественный порядок выполнения операторов. Он состоит из ключевого слова GOTO, за которым следует метка. Дальнейшее выполнение программы должно продолжаться, начиная с оператора, помеченного указанной меткой.
    В языке Паскаль существует довольно строгая дисциплина использования операторов перехода. Сформулируем эти ограничения:
    1) с помощью оператора перехода нельзя войти внутрь составного оператора, но внутри составного оператора разрешены любые передачи управления;
    2) с помощью оператора перехода нельзя войти внутрь тела цикла, минуя его заголовок.
    Внутри тела цикла разрешены любые передачи управления;
    3) с помощью оператора перехода нельзя войти ни в одну из ветвей условного оператора, а также передать управление из одной ветви в другую;
    4) с помощью оператора перехода нельзя войти внутрь оператора выбора или передать управление на другую константу выбора;
    5) с помощью оператора перехода нельзя войти в тело процедуры;
    6) с помощью оператора перехода можно выйти из любой конструкции языка программирования за единственным исключением: если в программе содержатся многократно вложенные друг в друга процедуры, то из любой внутренней процедуры можно выйти с помощью оператора перехода, ведущего к метке, которой помечен оператор

    29
    на самом внешнем уровне вложенности блоков (то есть выйти можно только в главную программу).
    Пустой оператор в программе обозначается точкой с запятой. Чаще всего он встречается с меткой и ставится в конце составного оператора или программы.
    Контрольные вопросы
    1. Дайте классификацию разветвляющихся алгоритмов.
    2. Какие блоки используются для описания разветвляющихся алгоритмов?
    3. Какой оператор используется для записи обхода?
    4. Какой оператор используется для записи альтернативы?
    5. Каково назначение оператора выбора и в каких случаях он используется?
    6. Каково назначение оператора перехода?
    7. Сформулируйте ограничения использования оператора перехода.
    8. Что такое метка и для чего она предназначена?
    9. Можно ли алгоритм выбора из многих возможностей записать с помощью оператора условного перехода?
    Задание к работе
    Разработать программу в соответствии с индивидуальным вариантом задания.
    Методические указания
    При выполнении индивидуального задания необходимо соблюдать рассмотренную технологию решения задач на ЭВМ:
    1) изучить словесную постановку задачи, выделив при этом все виды данных;
    2) сформулировать математическую постановку задачи;
    3) выбрать метод решения задачи, если это необходимо;
    4) разработать графическую схему алгоритма;
    5) записать разработанный алгоритм на языке Паскаль;
    6) разработать контрольный тест к программе;
    7) отладить программу;
    8) представить отчет по работе к защите.
    Содержание отчета
    1. Титульный лист.
    2. Словесная постановка задачи.
    3. Математическая постановка задачи.
    4. Листинг программы.
    5. Контрольный тест.
    6. Ответы на контрольные вопросы по согласованию с преподавателем.
    Варианты индивидуальных заданий
    1. Дано натуральное число n (n
    ≤9999). Является ли это число палиндромом
    (перевертышем) с учетом четырех цифр, как, например, числа 2222, 6116, 0440 и т.д.?
    2. Дано натуральное число n (n
    ≤100), определяющее возраст человека (в годах). Дать для этого числа наименования «год», «года», «лет». Например, 1 год, 23 года, 46 лет и т.д.
    3. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми: первое число – номер вертикали (при счете слева направо), второе – номер горизонтали (при чете снизу вверх) Даны натуральные числа k, l, m, n, каждое из которых не превосходит восьми. Требуется выяснить, являются ли поля (k, l) и (m, n) полями одного цвета.
    4. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми: первое число – номер вертикали (при счете слева направо), второе – номер горизонтали (при чете снизу вверх) Даны натуральные числа k, l, m, n, каждое из которых не превосходит восьми. На поле (k, l) расположен ферзь. Требуется выяснить, угрожает ли он полю (m, n).

    30 5. Даны действительные положительные числа a, b, c, x, y. Выяснить, пройдет ли кирпич с ребрами a, b, c в прямоугольное отверстие со сторонами x, y. Просовывать кирпич в отверстие разрешается только так, чтобы каждое из его ребер было параллельно или перпендикулярно каждой из сторон отверстия.
    6. Можно ли из круглой заготовки радиусом r вырезать две прямоугольные пластинки размером a
    ×b, c×d?
    7. Среди целых чисел k, l, m найти пары кратных.
    8. Число делится на 3, если сумма его цифр делится на 3. Проверить этот признак на примере заданного трехзначного числа.
    9. Можно ли на прямоугольном участке застройки размером a
    ×b метров разместить два дома размером в плане p
    ×q, r×s метров? Дома можно располагать только параллельно сторонам участка.
    10. Можно ли коробку размером a
    ×b×с упаковать в посылку размером r×s×t. «Углом» укладывать нельзя.

    31
    ЛАБОРАТОРНАЯ РАБОТА N4
    Тема: " Перечислимые и ограниченные типы данных "
    Цель работы:
    Ознакомиться с перечислимыми типами, получить навыки в организации ввода-вывода значений переменных перечислимого типа данных.
    Краткие сведения из теории
    В лабораторной работе N 1 рассмотрены базовые типы данных: целые, вещественные, символьные и булевские. В языке Турбо-Паскаль с помощью базовых типов можно определить такие типы, как перечислимые и ограниченные.
    4.1. Перечислимые типы
    Перечислимый тип данных задается в виде перечисления в строго определенном порядке и в строго ограниченном количестве всех значений, которые могут принимать данные рассматриваемого типа.
    Перечислимый тип состоит из списка констант. Переменные этого типа могут принимать значения любой из этих констант. Описание перечислимого типа имеет вид:
    Type
    < имя типа > = <( список констант)>;
    Var
    < имя переменной >: < имя типа >;
    Под константой понимается особый вид констант, задаваемый пользователем. Под списком понимается перечень констант, разделенных запятыми. Сам список заключается в круглые скобки. Например:
    Type year = (winter, spring, summer, autumn);
    Var avar : year;
    Здесь year - имя перечислимого типа, winter ,... - константы; avar - переменная, которая может принимать значение любой из констант. Допускается указывать константы перечислимого типа непосредственно в разделе описания переменных без использования раздела TYPE, например:
    Var avar : (winter, spring, summer, autumn);
    Каждая из констант имеет порядковый номер, который начинается нуля. Так, winter имеет порядковый номер 0, а autumn - 3. Упорядоченность констант позволяет применять к ним операции отношений <, <=, =, <>, >=, >, а также стандартные функции:
    ORD(avar) - для определения порядкового номера указанного элемента.
    PRED(avar) - для определения элемента, являющегося предыдущим для указанного элемента.
    SUCC(avar) - для определения элемента, являющегося следующим для указанного элемента.
    При работе с данными перечислимого типа необходимо помнить следующие правила:
    1. Нельзя считывать или печатать значения перечислимого типа, например:
    Read(avar); { ошибка }
    Writeln(avar); { ошибка }
    2. С данными перечислимого типа нельзя выполнять арифметические действия, например: avar := winter + summer; { ошибка }
    3. Тип boolean - перечислимый тип, определение которого автоматически присутствует в программе, например:
    Type boolean = (false,true); причем ORD(false) = 0, ORD(true) = 1, т.е. false < true.

    32
    4.2. Ограниченные типы
    Если переменная принимает не все значения своего типа, а только значения, содержащиеся в некотором ограниченном диапазоне, то ее можно объявить как переменную ограниченного типа, например:
    Type mounth = (jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec); summer = jun..aug; { ограниченный тип }
    В данном примере тип mounth, из которого выделен тип summer, является базовым относительно типа summer.
    При определении ограниченного типа указывается начальное и конечное значения, которые может принимать константа базового типа. Граничные константы разделяются двумя точками. Описание ограниченного типа имеет вид:
    Type
    < имя типа > = < левая константа .. правая константа >;
    При использовании ограниченных типов данных необходимо помнить следующие правила:
    Обе граничные константы должны быть одинакового типа.
    В качестве базового типа можно использовать любой простой тип, кроме действительного типа. Например, возможны отрезки: целого типа - index = 0..63; символьного типа - letter = 'A'..'Z'; перечислимого типа - summer = jun..aug.
    Левая граничная константа должна быть меньше правой.
    Переменные ограниченного типа должны быть описаны в разделе переменных с помощью имен этих типов. Например:
    Var simv : letter; pole : index;
    Переменные ограниченного типа, как и перечислимого, можно описывать, не обращаясь к разделу описания типов. Например:
    Var simv : 'A'..'Z'; pole : 0 .. 63;
    Интервалы перечислений подчинены тем же самым ограничениям, что и сам перечислимый тип. Так элементы интервала jun..aug не могут вводиться или выводиться, к ним нельзя применять арифметические действия, их нельзя присваивать переменным никаких других типов, кроме summer, так как summer - базовый тип, по отношению к которому jun..aug является интервалом.
    Константы любого ограниченного типа имеют порядковые номера, совпадающие с их порядковыми номерами в базовом типе. Например:
    ORD(jun) - имеет порядковый номер 5;
    ORD(aug) - имеет порядковый номер 7.
    Если базовый тип переменных ограниченного типа INTEGER, то значения переменных могут обрабатываться как целые числа. Такая обработка включает чтение, запись и целую арифметику. Например:
    Read(pole); score := sqr(pole);
    Write(score);
    Если базовый тип CHAR, то значения из интервала могут обрабатываться как литеры, поэтому их можно вводить, выводить и использовать в логических выражениях, например:
    Read(simv);
    If simv <= 'D' then Write (' очень хорошо! ') еlse Write (' надо поработать ');

    33
    Пример
    .
    Словесная постановка задачи:
    Определить следующую дату дня недели, если заданы текущая дата и день недели. Текущая дата включает число и номер месяца. При выводе дата отображается в виде числа и названия месяца.
    Программа на языке Паскаль:
    Program PRIMER;
    Type mounth = (jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec); day = 1..31; year = 1900..2000;
    Var d : day; m : mounth; g : year; num : 1..12;
    Begin
    Write('==>');
    Readln(d, num, g); { ввод даты - число, номер месяца, год }
    Case num of
    1 : m:= jan;
    2 : m:= feb;
    3 : m:= mar;
    4 : m:= apr;
    5 : m:= may;
    6 : m:= jun;
    7 : m:= jul;
    8 : m:= aug;
    9 : m:= sep;
    10 : m:= oct;
    11 : m:= nov;
    12: m:= dec;
    End;
    Case m of { контроль на корректность количества дней в месяце} jan, mar, may, jul, aug, oct : If d = 31 then begin d := 1; m := succ(m) end else d := d + 1; apr, jun, sep, nov : If d = 30 then begin d := 1; m := succ(m) end else d := d + 1; dec : If d = 31 then begin d := 1; m := jan; g := g + 1 end else d := d + 1; feb : If (( d = 28) and ((g mod 4 <> 0) or (g mod 100 = 0)) and (g mod 400 <> 0)) or (d=29) then begin

    34
    d := 1; m := succ(m); end else d := d + 1 end; { case }
    Write('Следующая дата: ', d : 2); { вывод результата }
    Case m of { выбор названия месяца по номеру месяца} jan: write(' января '); feb: write(' февраля '); mar: write(' марта '); apr: write(' апреля '); may: write(' мая '); jun: write(' июня '); jul: write(' июля '); aug: write(' августа '); sep: write(' сентября '); oct: write(' октября '); nov: write(' ноября '); dec: write(' декабря ') end; { case }
    Writeln(g : 5,' года ')
    End.
    Пояснения к программе:
    В современном календаре каждый год, номер которого делится на 4, является високосным, за исключением тех номеров, которые делятся на 100 и не делятся на 400.
    Контрольные вопросы
    1. Что такое перечислимый тип?
    2. Какие операции допускаются с данными перечислимого типа?
    3. Какие стандартные функции можно использовать для данных перечислимого типа?
    4. Что такое ограниченный тип?
    5. Может ли быть последующее значение больше предыдущего при определении ограниченного типа?
    6. Какие операции допускаются над переменными ограниченного типа?
    Задание к работе
    Выполнить индивидуальное задание.
    Методические указания
    Перед выполнением индивидуального задания по вариантам 1-7, 10 ознакомьтесь с примером, приведенным выше.
    При выполнении индивидуального задания придерживаться следующей технологии:
    1) изучить словесную постановку задачи, выделив при этом все виды данных;
    2) выбрать метод решения задачи, если это необходимо;
    3) разработать программу на языке Паскаль, используя перечислимые и ограниченные типы данных;
    4) разработать контрольный тест к программе;
    5) отладить программу;
    6) представить отчет по работе к защите.
    Содержание отчета
    1. Титульный лист.
    2. Словесная постановка задачи.
    3. Графический или текстуальный алгоритм решения задачи.

    35 4. Листинг программы.
    5. Контрольный тест и результаты тестирования программы.
    6. Ответы на контрольные вопросы по согласованию с преподавателем.
    Варианты индивидуальных заданий
    1) Дан номер года. Указать число дней в этом году.
    2) Даны натуральные числа n,m(n<=m). Определить, сколько из чисел n, n+1,..,m являются номерами високосных годов.
    3) Даны натуральные числа a
    1
    ,b
    1
    ,c
    1
    ,a
    2
    ,b
    2
    ,c
    2
    , которые указывают две даты (число, месяц, год).
    Вычислить количество дней прошедших между двумя этими датами.
    4) Даны натуральные числа a
    1
    ,b
    1
    ,c
    1
    ,a
    2
    ,b
    2
    ,c
    2
    , которые указывают две даты (число, месяц, год).
    Вычислить количество полных лет прошедших между двумя этими датами.
    5) Даны натуральные числа a,b,c которые обозначают число, месяц и год. Проверить корректность этой даты.
    6) Даны натуральные числа a,b,c которые обозначают число, месяц и год. Найти номер этого дня с начала года.
    7) Даны натуральные числа a,b,c которые обозначают число, месяц и год. Определить, сколько полных дней осталось до конца года.
    8) Известно, что астрологи делят год на 12 периодов и каждый из них ставит в соответствии один из знаков зодиака:
    20.1-18.2-Водолей 19.2-20.3-Рыбы 21.3-19.4-Овен
    20.4-20.5-Телец 21.5-21.6-Близнецы 22.6-22.7-Рак
    23.7-22.8-Лев 23.8-22.9-Дева 23.9-22.10-Весы
    23.10-22.11-Скорпион 23.11-21.12-Стрелец 22.9-19.1-Козерог
    Дата дана в виде dd. mm. Определить какой знак зодиака соответствует этой дате.
    9) "Угадай число". Один из играющих задумывает число от 1 до 100, другой пытается угадать его за 5 вопросов вида: Верно ли, что задуманное число больше такого то числа?
    Написать программу, загадывающую число.
    10) В некоторой библиотеке последний четверг каждого месяца - санитарный день. По заданному номеру месяца выводить на экран дату санитарного дня.

    36
    ЛАБОРАТОРНАЯ РАБОТА N 5
    1   2   3   4   5   6   7   8   9   10   11


    написать администратору сайта