Пример 1. Напишем программу, в которой логическая переменная принимает значение true, если, случайным образом выбранная, точка с координатами (x,y) попадает внутрь кольца с центром в начале координат и радиусами 0.1 и 0.6, иначе - логическая переменная принимает значение false.
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
void main (void)
{
float x,y;
bool p;
//Ввод данных
randomize();
x=rand()/10000.0; y=rand()/10000.0;
cout<<"x="<<x<<" y="<<y<<endl;
//Расчет
p=((x*x + y*y)> 0.1) && ((x*x + y*y) < 0.6);
//Вывод результата}
cout<<"p="<<p;
getch();
}
Поэкспериментируйте с программой. Замените логическое выражение на
p=!(((x*x + y*y)< 0.1) || ((x*x + y*y) > 0.6));
Основываясь на законах де Моргана, объясните полученные экспериментальные результаты.
Пример 2. Составим программу, результатом работы которой будет удаление из двоичного представления данного натурального числа i-го бита.
#include <iostream.h>
#include <conio.h>
void main (void)
{
int n,x,y,z,k;
//Ввод данных
cout<<"Введите значение натурального числа n=?"<<endl;
cin>>n;
cout<<"Введите номер вычеркиваемого бита k=?"<<endl;
cin>>k;
//Расчет
x=1 << k;
y=~x;
z=n & y; //Можно было написать z=n & ~(1 << k);
//Вывод результата
cout<<"x="<<x<<" y="<<y<<" z="<<z<<endl;
getch();
}
Необходимо разобраться с алгоритмом программы, провести тестовый расчет.
Пример 3. Дайте объяснение результатам следующей программы.
#include <iostream.h>
#include <conio.h>
void main (void)
{
cout<<(1365 & 2730)<<endl;
cout<<(1365 | 2730)<<endl;
cout<<(1365 ^ 2730)<<endl;
cout<<(1365 & 0xFF)<<endl;
cout<<(1365 & 0xFF0)<<endl;
cout<<(1365 & 0xFF00)<<endl;
getch();
}
Для объяснения полученных результатов переведите числа в двоичную систему счисления. Поэкспериментируйте с программой. Убедитесь, например, что -256 & 255 =0; -256 | 255 = -1; -256 ^ 255 = -1. Вспомните, что для представления отрицательных чисел в компьютере используется дополнительный код.
Замените побитовые операции над числами логическими и сравните полученные результаты. Дайте объяснение путем выполнения данных операций без использования ЭВМ.
Пример 4. Составим программу определения наибольшего из двух чисел.
#include <iostream.h>
#include <conio.h>
double Max(double a,double b)
{
if (a>b)
return a;
else
return b;
}
void main (void)
{
double x,y,max;
cout<<"Введите два числа x,y=?";
cin>>x>>y;
cout<<"max="<<Max(x,y)<<endl;
getch();
}
Разработайте алгоритм и составьте программу определения наибольшего числа из трех, четырех чисел. Используйте для ввода чисел генератор случайных чисел randomize(); rand. Проведите вычислительный эксперимент с программой.
Пример 5. Проведите вычислительный эксперимент с программой, использующей оператор switch:
#include <iostream.h>
#include <conio.h>
void main (void)
{
short month;
cout<<"Введите номер месяца в году:"<<endl; cin>>month;