Программная реализация разветвляющихся алгоритмов

Автор работы: Пользователь скрыл имя, 12 Января 2014 в 17:21, лабораторная работа

Краткое описание

Цель работы: изучение основных средств языка программирования С++, необходимых для кодирования алгоритма с разветвляющейся структурой.
Задачи работы:
- изучить написание логических выражений на языке С++;
- научиться использовать операцию условия, условный оператор if … else, переключатель switch для организации разветвления в программе;
- научиться применять операторы передачи управления break, return;
- освоить использование средств автоматизации процесса отладки в интегрированной среде программирования Microsoft Visual C++ 2005 Express Edition.

Прикрепленные файлы: 1 файл

5fan_ru_Программная реализация разветвляющихся алгоритмов.doc

— 311.50 Кб (Скачать документ)

                       cout << "Вы показали отличный результат.\n";

                      else

                        {

                          cout << "Вы сдали тест нечестно!\n";

                          total_test_score = 0;

                         }

...

В тексте данной программы соответствие if и else показано с помощью отступов, что позволяет наглядно отследить вложенность операторов и, тем самым, избежать возможных ошибок в программе.

В этих цепочках вложенности каждый из условных операторов (после проверяемого условия и после else) может быть как полным условным, так и иметь сокращенную форму записи. Чтобы не допустить ошибок неоднозначного сопоставления if и else, которые могут возникать при одновременном использовании вложенных условных операторов как в полной, так и в сокращенной форме, следует при написании программ руководствоваться следующим синтаксическим правилом языка С++: каждый  else связывается с ближайшим предыдущим if, не имеющим else.

 Например, в

if ( n > 0 )

    if( a > b )

            z = a;

    else

            z = b;

конструкция else относится к внутреннему if, как мы и показали, сдвинув else под соответствующий if. Если это не то, что вы хотите, то для получения нужного соответствия необходимо использовать фигурные скобки:

 if (n > 0)

    { if (a > b)

            z = a;

     }

else

    z = b;

4.2.4. Переключатель switch

Вложенные операторы if выглядят слишком громоздко, поэтому в Си++ реализован еще один способ множественного ветвления с использованием оператора switch, который называется переключателем. Переключатель позволяет выбрать для выполнения один из нескольких операторов, в зависимости от текущего значения определенной переменной или выражения.

Переключатель имеет следующий  синтаксис:

switch (селектор)

{

case константное_выражение_1 : <операторы1>

...

...

...

case константное_выражение_N : <операторыN>

default : <операторы>

}

Управляющая конструкция switch передает управление к тому из помеченных с помощью case операторов, для которого значение константного выражения совпадает со значением селектора. Селектор (переключающее выражение) должен быть целочисленным или символьным (короткое целое). Значения константных выражений, помещаемых за служебными словами case, приводятся к типу селектора. В одном переключателе все константные выражения должны иметь различные значения, но быть одного типа. Любой из операторов, помещенных в фигурных скобках после конструкции switch (...), может быть помечен одной или несколькими метками вида

case константное_выражение:

Если значение селектора не совпадает ни с одним из константных выражений, то выполняется переход к оператору, отмеченному меткой default. В каждом переключателе должно быть не больше одной метки default, однако эта метка может и отсутствовать. В случае отсутствия метки default при несовпадении селектора ни с одним из константных выражений, помещаемых вслед за case, в переключателе не выполняется ни один из операторов.

Сами по себе метки case константное_выражение_j: и default: не изменяют последовательности выполнения операторов. Если не предусмотрены переходы или выход из переключателя (который выполняется с помощью оператора break), то в переключателе последовательно выполняются все операторы, начиная с той метки, на которую передано управление.

Пример 4.5.

//Программа выводит на экран названия нечетных целых цифр,

//не меньших заданной 
#include < iostream >

#include <conio.h>

using namespace std;

void main () 
{ int ic; 
cout << "\nВведите любую десятичную цифру:"; 
cin >> ic; 
cout << '\n'; 
switch (ic) 
{ case 0: case 1: cout << "один,"; 
case 2: case 3: cout << "три,"; 
case 4: case 5: cout << "пять,"; 
case 6: case 7: cout << "семь,";  
case 8: case 9: cout << "девять.";

break;

default: cout << "Ошибка! Это не цифра!";

}

getch();

}  
Результаты двух выполнений программы:

Введите любую десятичную цифру: 
4 < Enter > пять, семь, девять 
Введите любую десятичную цифру: 
z < Enter > Ошибка! Это не цифра!

Кроме сказанного о возможностях переключателя, приведенная программа иллюстрирует действие оператора break. С его помощью выполняется выход из переключателя. Если поместить операторы break после вывода каждой цифры, то программа будет печатать название только одной нечетной цифры.

Пример 4.6.

В приведенном выше примере 4.4 сообщение для печати выбирается в зависимости от значения переменной "total_test_score". Это может быть произвольное целое число в диапазоне от 0 до 100. Диапазон проверяемых значений можно сузить, если учесть, что оценка теста проверяется с точностью до 10-ти баллов. Введем дополнительную целочисленную переменную "score_out_of_ten" и присвоим ей значение:

score_out_of_ten = total_test_score/10;

Теперь проверку в программе  можно сформулировать так:

(1) если переменная "score_out_of_ten" равна 0, 1, 2, 3 или 4, то печатать сообщение "Вы не прошли тест. Выучите материал как следует.",

(2) если "score_out_of_ten" равна 5, то печатать сообщение "Вы прошли тест со средним результатом." и т.д.

В целом оператор "switch" будет  выглядеть так:

 

//Фрагмент программы, иллюстрирующий  использование 

//оператора switch для организации множественного ветвления

...

score_out_of_ten = total_test_score / 10;

switch ( score_out_of_ten )

{

case 0 : case 1 : case 2 : case 3 : case 4 :

cout << "Вы не прошли тест. Выучите материал как следует.\n";

break;

case 5 :

cout << "Вы прошли тест со средним результатом.\n";

break;

case 6 : case 7 :

cout << "Вы хорошо выполнили  тест.\n";

break;

case 8 : case 9 : case 10 :

cout << "Вы показали отличный  результат.\n";

break;

default :

cout << "Вы выполнили тест  нечестно\n";

сout << "(оценка не должна быть больше 100 баллов)!\n";

}

...

 

 

4.3 Варианты заданий

Вариант №1.

С клавиатуры вводится натуральное число n ( ) - возраст человека в годах. Вывести это числовое значение на экран следующим образом: например, 21 год, 42 года, 17 лет.

 

Вариант №2.

С клавиатуры вводится целое четырехзначное число. Найти  сумму всех четных цифр данного числа.

 

Вариант №3.

С клавиатуры вводится целое четырехзначное число. Если сумма      1-ой и 2-ой цифр числа больше, чем сумма 3-ей и 4-ой цифр, то вывести на экран сумму всех цифр; если меньше – среднее арифметическое всех цифр; если суммы равны - произведение всех цифр.

 

Вариант №4.

 

 С клавиатуры вводится действительное число а. Для функции f(x), график которой представлен на рисунке, вычислить f(а).

 

 

 

 

 

 

 

Вариант №5.

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

 

Вариант №6.

В  киоске  продается  газета  стоимостью  5 руб.  и  журнал стоимостью 80 руб.  Составить  программу,  которая  спрашивает  о желании покупателя (журнал или газета) и  принимает деньги (сумма вводится с клавиатуры). В том случае, если указанная сумма больше, чем стоимость покупки, на экран выводится сумма сдачи. Если уплаченных денег недостаточно, то выдается соответствующее сообщение.

 

 

Вариант №7.

Дано действительное число а. Вычислить f(a), где f – периодическая функция с периодом 2, совпадающая на отрезке [-1, 1] с функцией, график которой изображен на рисунке.


 

 

 

 

 

 

 

 

 

 

Вариант №8.

Дано действительное число а. Вычислить f(a), где f – периодическая функция с периодом 1,5, совпадающая на отрезке [0, 1,5] с функцией, график которой изображен на рисунке.


 

 

 

 

 

 

 

 

 

 

Вариант №9.

Даны действительные числа х и у. Произвести следующие действия:

  • если х и у отрицательны, то каждое значение заменить его модулем;
  • если отрицательно только одно из них, то оба значения увеличить на 0,5;
  • если оба значения неотрицательны, то оба значения уменьшить в 10 раз;
  • в остальных случаях х и у оставить без изменений.

 

Вариант №10.

Напишите программу, которая анализирует, какую клавишу нажал пользователь и выводит соответствующее сообщение:

это цифра;

это буква;

это другой символ.

В том случае, если введена  цифра, вывести прописью название всех цифр, следующих за данной.

Вариант №11.

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

– программа  должна запрашивать значения операндов и операцию;

– для операции деления следует выполнить проверку равенства нулю делителя. Если делитель равен нулю, нужно выдать сообщение о том, что деление на нуль невозможно.

Результат работы программа должна выводить в виде:

операнд1 операция  операнд2  = результат,    например    2*3=6.

 

Вариант №12.

Дано целое  четырехзначное число. Проверить, является ли данное число палиндромом (перевертышем), как, например, числа 1221, 6666 и т.п.

 

Вариант №13.

Дано действительное число а. Для функции f(x), график которой представлен на рисунке, вычислить f(а).

 

 

 

 

 

 

 

 

 

Вариант №14.

Напишите программу  для  вычисления и вывода на экран  корней квадратного уравнения ax² + bx + c = 0. Значения коэффициентов уравнения вводите в диалоговом режиме.

 

Вариант №15.

Даны действительные числа x, y, z. Проверить, нет ли среди них одинаковых чисел и выдать соответствующее сообщение. Если среди данных чисел нет одинаковых, то большее из x, y, z заменить средним арифметическим двух оставшихся значений.

 

Вариант №16.

Даны три натуральных числа, которые обозначают число, месяц и год соответственно. Проверить корректность этой даты (например, 30 февраля 1900 года – некорректная дата). Найти номер этого дня с начала года.

Вариант №17.


Даны действительные числа х, у. Определить, принадлежит ли точка с координатами (х, у) заштрихованной части плоскости.

 

 

 

 

 

 

 

Вариант №18.


Даны действительные числа х, у. Определить, принадлежит ли точка  с координатами (х, у) заштрихованной части плоскости.

 

 

 

 

 

 

 

 

 

 

Вариант №19.


Пусть D – заштрихованная часть плоскости. Действительные числа (х, у) – координаты точки на плоскости. Найти значение функции f(x, y), которая определена следующим образом:

 

 

 

Вариант №20.

Дан номер года. Указать число дней в этом году. (Принять во внимание, что каждый год, номер которого делится на 4, является високосным, за исключением тех номеров, которые делятся на 100 и не делятся на 400).

Вариант №21.

Дано  натуральное  число n (n <=1000).  Определить, чему равна  сумма его цифр S. Вычислить f(S), если

 

Вариант №22.

Даны действительные числа  a, b, c. Выяснить, существует ли треугольник с длинами сторон a, b, c. Если такой треугольник существует, проверить, является он прямоугольным, остроугольным или тупоугольным.

 

Вариант №23.

 

П усть D – заштрихованная часть плоскости. Действительные числа (х, у) – координаты точки на плоскости. Найти значение функции f(x, y), которая определена следующим образом:

 

 

Вариант №24.

Присвоить  целой переменной h третью от конца цифру в записи целого положительного числа k . Вычислить f(h), если

 

Вариант №25.

Дано целое  четырехзначное число х. Если в исходном числе х есть ровно две одинаковые цифры, то найти произведение двух других цифр. В противном случае подсчитать сумму всех цифр числа x.

 

Вариант №26.

Дано целое  четырехзначное число х. Вывести на экран сообщение о том, сколько в данном числе одинаковых цифр и каково их значение.

 

Вариант №27.

Напишите программу, которая анализирует, какую клавишу нажал пользователь и выводит соответствующее сообщение:

это цифра;

это буква;

это другой символ.

В том случае, если введена буква, проверить, является ли она гласной или согласной.

 

Вариант №28.

 

Пусть D – заштрихованная часть плоскости. Действительные числа (х, у) – координаты точки на плоскости. Найти значение функции f(x, y), которая определена следующим образом:

 

 

 

 

 

Вариант №29.


Пусть D – заштрихованная часть плоскости. Действительные числа (х, у) – координаты точки на плоскости. Найти значение функции f(x, y), которая определена следующим образом:

 

Вариант №30.

Даны числа X1,Y1,X2,Y2,X3,Y3, - координаты трех каких-то вершин прямоугольника в прямоугольной системе координат. Вычислить и напечатать координаты четвертой вершины.

Контрольные вопросы

  1. Опишите синтаксис условного оператора if – else.
  2. В чем отличие операции условия от условного оператора if – else?
  3. Как организуется вложенность операторов if – else?
  4. Как реализовать в программе пользовательское меню, используя переключатель switch?
  5. Написать на языке С++ программу, которая определяет большее из 3-х заданных чисел.

Информация о работе Программная реализация разветвляющихся алгоритмов