Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР6-С++-27 марта-2012.doc
Скачиваний:
17
Добавлен:
28.08.2019
Размер:
6.55 Mб
Скачать

3.7. Типичные ошибки при выполнении работы

Операция сравнения ошибочно записывается в виде =. Следует записывать = =.

Составные операторы необходимо заключать в фигурные скобки.

3.8. Требования к студентам

В результате выполнения работы студенты должны:

знать синтаксис операторов, организующих ветвящиеся процессы;

знать и уметь использовать на практике отладочные средства среды ВС при отладке программ с разветвлением;

уметь анализировать иерархию условных операторов с точки зрения оптимальности ее организации.

2.5.3. Задание 3

2.5.3.1. Условие задания

Составить программу вычисления функции согласно указанному варианту.

Таблица 6.4

Задания

1

Прямая L, заданная на плоскости координатами двух точек (a,b) и(c,d), разбивает координатную плоскость на две полуплоскости. Известны также координаты двух точек (x1, y1) и (x2, y2), не лежащих на данной прямой. Определить, находятся ли точки в разных полуплоскостях или в одной, и напечатать сообщение. Иметь возможность повторного обращения в диалоге.

2.

Составить программу для определения корней системы двух линейных алгебраических уравнений по правилу Крамера. Решение вывести в виде системы уравнений. Иметь возможность повторного обращения в диалоге.

3.

Дано натуральное число N, в записи которого ровно пять знаков. Определить, является ли это число палиндромом или нет, напечатать сообщение текстом. Значение числа вводить в диалоге, иметь возможность повторного обращения.

4.

Дано натуральное число N, определяющее возраст человека в годах. Дать для этого числа наименование «год», «года» или «лет». Например, «Вам 21 год» или «Вам 43 года». Иметь возможность повторного обращения в диалоге.

5.

Окружность на плоскости с центром в начале координат имеет радиус R. Известны также координаты концов некоторого отрезка (x1,y1) и (x2,y2). Определить, пересекает ли отрезок окружность и сколько раз. Значения координат вводить в диалоге, иметь возможность повторного обращения.

6.

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

7.

Даны длины трех отрезков. Определить, можно ли построить треугольник с такими длинами сторон. Если да, то определить, какой это треугольник: прямоугольный, остроугольный или тупоугольный. Значения длин вводить в диалоге, иметь возможность повторного обращения.

8.

Заданы декартовы координаты точки на плоскости. Перевести в полярные координаты с учетом номера четверти, где находится точка. Угол перевести в градусную меру с точностью до минут. Значения вводить в диалоге, иметь возможность повторного обращения.

9.

По введенным координатам точки (x,y) определить номер четверти координатной плоскости, где находится точка. Значения координат вводить в диалоге, иметь возможность повторного обращения.

10.

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

11.

На плоскости заданы три точки своими координатами. Определить расстояния от точек до начала координат и напечатать, какая из точек расположена ближе к началу координат. Значения вводить в диалоге, иметь возможность повторного обращения.

12.

Дано натуральное число N, в записи которого ровно пять знаков. Определить, имеет ли это число одинаковые цифры или нет. Значение числа вводить в диалоге, иметь возможность повторного обращения.

13.

Окружность на плоскости с центром в начале координат имеет радиус 1. Известны координаты левого верхнего угла квадрата со стороной 1. Определить, принадлежит ли окружности хотя бы одна вершина квадрата. Значения вводить в диалоге, иметь возможность повторного обращения

14.

Окружность с центром в начале координат имеет радиус 1. Определить, пересекает ли прямая y = k·x + b окружность или хотя бы касается один раз. Значения k и b вводить в диалоге, иметь возможность повторного обращения.

15.

На плоскости заданы два квадрата координатами левого верхнего угла и длинами сторон. Определить, пересекаются ли они. Значения вводить в диалоге, иметь возможность повторного обращения.

16.

На плоскости задано кольцо с центром в начале координат и радиусами r1 и r2, где r1<r2. Дана точка своими координатами (x,y). Определить, находится ли точка внутри кольца. Значения вводить в диалоге, иметь возможность повторного обращения.

17.

Прямоугольной формы кирпич имеет стороны A, B, C. Определить, пройдет ли кирпич в прямоугольное отверстие размером 5 на 8. Значения вводить в диалоге, иметь возможность повторного обращения.

18.

Даны четыре числа. Определить, являются ли они элементами арифметической прогрессии. Значения вводить в диалоге, иметь возможность повторного обращения.

19.

В продаже есть два вида системных блоков, по цене К1 и К2 руб., и три вида мониторов по цене М1, М2 и М3 руб. Известны также стоимость клавиатуры и мыши. Найти, сколько будет стоить самый дешевый компьютер, и сколько самый дорогой. Значения стоимостей вводить в диалоге, иметь возможность повторного обращения.

20.

Прямоугольной формы контейнер имеет размеры 8*8*12, где 12 – высота контейнера. Дано К прямоугольных блоков размером n*n*2n. Определить, войдут ли эти блоки в контейнер. Если не войдут, то определить, сколько останется. Размер блоков вводить в диалоге, иметь возможность повторного обращения.

21.

На плоскости заданы три точки своими координатами. Определить длины сторон охватывающего их прямоугольника наименьшего размера. Пусть его стороны параллельны координатным осям. Значения координат вводить в диалоге, иметь возможность повторного обращения.

22.

Даны два интервала числовой оси [a1,b1] и [a2,b2]. Найти соотношение интервалов: пересекаются или нет, первый принадлежит второму или наоборот. Значения вводить в диалоге, иметь возможность повторного обращения.

23.

На плоскости задан квадрат координатами левого верхнего угла и длиной стороны. Задан также отрезок координатами концов. Определить, находится ли отрезок полностью внутри квадрата или один его конец внутри, или отрезок полностью снаружи. Значения вводить в диалоге, иметь возможность повторного обращения.

24.

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

25.

Дано цилиндрическое ведро радиусом r и высотой h. Требуется с его помощью переместить К литров жидкости из одной емкости в другую. Определить, можно ли это сделать за одно действие. Если нет, то определить, сколько раз нужно воспользоваться ведром. Размеры вводить в диалоге, иметь возможность повторного обращения.

26.

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

27.

Дан возраст двоих людей в формате «Число, месяц, год». Найти который из них старше, сравнивая по отдельности год, затем месяц, затем день. Значения вводить в диалоге, иметь возможность повторного обращения.

28.

Даны прямоугольная коробка размером w*w*h1 и цилиндрическое ведерко радиуса основания r и высотой h2. Найти, какая емкость больше по объему. Значения вводить в диалоге, иметь возможность повторного обращения.

29.

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

30.

Дано числовое значение денежной суммы не более 100 руб. Вывести значение числа прописью, например, «2 рубля», «12 рублей», «51 рубль». Анализировать остаток от деления на 10. Так, для остатка, равного 1 наименование «рубль», для остатка, равного 2, 3, 4, наименование «рубля», для остатка, равного 5, 6, 7, 8, 9, 0 наименование «рублей». Числа второго десятка – исключение. Значение денежной суммы вводить в диалоге, иметь возможность повторного обращения.

31.

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

32.

При кормлении одного лабораторного животного нужно в день К1 калорий для мыши, К2 калорий для крысы. Есть корма калорийностью P1 по цене Х1 руб., P2 по цене X2 руб. и P3 по цене X3 руб. за кг. Подобрать самый дешевый дневной рацион для X мышей и Y крыс. Значения данных вводить в диалоге, иметь возможность повторного обращения.

33.

Для одного подарка выделено К руб. В подарок можно положить яблоки по цене К1 руб., апельсины по цене К2 руб. и печенье по цене К3 руб. за штуку. В подарок каждый из предметов должен войти хотя бы один раз. Если получается, то по два одинаковых или по три. Найти состав подарка. Найти сумму, которая останется от покупки. Значения данных вводить в диалоге, иметь возможность повторного обращения.

2.5.3.2. Пример решения задачи (вариант 31)

2.5.3.3. Условие программы

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

2.5.3.3. Схема алгоритма

2.5.3.3. Программа

/****************************************************/

/* Лабораторная работа № 6 */

/* Разветвляющийся вычислительный процесс */

/* Задание № 3-Домашнее */

/* Вариант № 31. */

/* Автор: Иванова А.А. студентка гр. ИНФО-101 */

/****************************************************/

#include<conio.h>

#include<math.h>

#include<iostream.h>

#include<stdio.h>

#include <stdio.h>

int main()

{

float sb1, sb2, sb3, s, sred, ost1, ost2, ost3;

/* Ввод данных */

cout << "Введите через пробел три суммы sb1, sb2, sb3: ";

cin >> sb1 >> sb2 >> sb3;

s = sb1 + sb2 + sb3;

sred = s/3.0;

ost1 =sb1 - sred; ost2 = sb2 - sred; ost3 = sb3 - sred;

/* Вывод только что введенных значений */

cout << "Исходные данные: " << endl;

cout << "sb1 = " << sb1 << " sb2 = " << sb2 << " sb3 = " << sb3<< endl;

cout << "Промежуточные данные: "<< endl ;

cout << "s = " << s << " sred = " << sred << endl;

cout << "ost1 = " << ost1 << " ost2 = " << ost2 << " ost3 = " << ost3<< endl;

/* Проверка условий */

if ((ost1==ost2)&& (ost1==ost2))

{cout << "Братья располагают одинаковыми суммами:" << endl;

cout << "sb1 = " << sb1 << " sb2 = " << sb2 << " sb3 = " << sb3 << endl;

}

else if (ost1 >0 && ost2 >0)

{cout << "Брату 3 отдают: ";

cout << "Брат 1 = " << ost1 << " рублей; ";

cout << "Брат 2 = " << ost2 << " рублей " << endl;

}

else if (ost1 >0 && ost3 >0)

{cout << "Брату 2 отдают: ";

cout << "Брат 1 = " << ost1 << " рублей; ";

cout << "Брат 3 = " << ost3 << " рублей " << endl;

}

else if (ost2 >0 && ost3 >0)

{cout << "Брату 1 отдают: ";

cout << "Брат 2 = " << ost2 << " рублей; ";

cout << "Брат 3 = " << ost3 << " рублей " << endl;

}

else if (ost1 >0 && ost2 <0 && ost3 <0)

{cout << "Брат 1 отдает: ";

cout << "Брату 2 = " << -ost2 << " рублей; ";

cout << "Брату 3 = " << -ost3 << " рублей " << endl;

}

else if (ost2 >0 && ost1 <0 && ost3 <0)

{cout << "Брат 2 отдает: ";

cout << "Брату 1 = " << -ost1 << " рублей; ";

cout << "Брату 3 = " << -ost3 << " рублей " << endl;

}

else if (ost3 >0 && ost1 <0 && ost2 <0)

{cout << "Брат 3 отдает: ";

cout << "Брату 1 = " << -ost1 << " рублей; ";

cout << "Брату 2 = " << -ost2 << " рублей " << endl;

}

getch();

return 0;

}

2.5.3.3. Тестирование

Вариант 1

Вариант 2

Вариант 3

Вариант 4

Вариант 5

Вариант 6

Вариант 7

2.5. Вывести тексты программы на принтер.

2.6. Подготовить отчет.

2.6. Подготовиться к защите лабораторной работы (вопросы к защите приводятся).