Лабораторная работа № 5 по дисциплине «Информатика» на

advertisement
Лабораторная работа № 5
по дисциплине «Информатика»
на тему: «Введение в С++. Базовая структура программы.
Базовые типы данных»
Начало работы
Напишите программу вывода на экран надписи согласно следующему
примеру.
#include <iostream>
using namespace std;
int main()
{
cout << "Hello world!" << endl;
return 0;
}
Добавьте в программу целочисленную переменную x и введите значение с
клавиатуры (cin >> x;) Выведите введенное значение на экран.
Поэкспериментируете с известными вам типами данных.
Усложните вывод посредством
управляющих конструкций:
включения
в
выводимую
строку
cout << "Спасибо!\nВы ввели\t" << x << endl;
Обратите внимание, что \n подволяет перевести курсор в начало
следующей строки, а \t — сделать отступ вида «горизонтальная табуляция».
Задание 1
Сформировать справочную таблицу следующего вида:
Тип данных
Обозначение
MIN
MAX
...
...
...
...
Здесь для каждого базового типа данных указано название, обозначение
(внутренне «имя типа» для С++), число байт, выделяемых для переменной
указанного типа, а также минимальное и максимальное значение. Обратите
внимание на то, что для типов float, double и long double диапазон значений по
модулю. При этом отрицательные значения для переменных данных типов также
возможны и симметричны относительно 0.
Добавьте еще два относительно «новых» типа данных:
 long long int;
 unsigned long long int.
Сравните результаты с данными по типам long int, unsigned long int.
Модули, которые необходимо дополнительно к <iostream> подключить
директивой include:
#include <typeinfo>
#include <limits>
Используемые функции:
Описание функции
Пример
typeid(х).name() — получение
обозначения типа данных перемено х
//Объявление целочисленной переменной
int i;
//Вывод на экран обозначения
cout << typeid(i).name() << endl;
"\t" — управляющая конструкция
«горизонтальная табуляция»;
cout << "Hello\tworld!" << endl;
sizeof(х) — функция, возвращающая
размер в байтах, выделяемый
компилятором по хранение значения
переменной х в зависимости от ее типа.
//Объявление целочисленной переменной
int i;
//Вывод на экран числа байтов
cout << sizeof(i) << endl;
numeric_limits< Название типа >::min() //Вывод на экран минимального значения
— функция для вывода минимального для прееменных типа int
значения диапазона для переменных
cout << numeric_limits<int>::min() << endl;
заданного типа.
numeric_limits< Название типа >::max() //Вывод на экран максимального значения
— анлогична предыдущей, но
для прееменных типа int
возвращает максимальное значение.
cout << numeric_limits<int>::max() << endl;
При желании код вывода таблицы можно вынести в отдельную функцию.
Тогда структура программы должна иметь примерно следующий вид:
#include <iostream>
#include <typeinfo>
#include <limits>
using namespace std;
char c;
...
void table();
//Предварительное определение функции table()
int main()
{
//Вызов функции для печати таблицы базовых типов
table();
return 0;
}
void table()
{
cout << "Тип данных\t\tОбозначение\tБайт\tMIN\t\tMAX" << endl;
cout << "char" << "\t\t\t" << typeid(c).name() << "\t\t" << sizeof(c) << "\t"
<< numeric_limits<char>::min() <<"\t\t" << numeric_limits<char>::max() << endl;
...
}
Задание 2
Ввести с клавиатуры символ и 4 числа различных типов, например:
 c = символ типа char;
 si = целое число типа short int;
 i = целое число типа int;
 f = вещественное число типа float;
 d = вещественной число двойной точности типа double.
Внимание: при выборе типов постарайтесь брать типы с различными
диапазонами (см. таблицу, которую вы получили ранее).
Найти значение выражения:
result = (c/si)+(i*f)+(d-c)
В качестве эксперимента рассчитайте отдельно каждое слагаемое, не
присваивая результат какой-либо переменной, а непосредственно выводя
результат на экран, например:
cout << "(c/si)=" << c << "/" << si << "=" << c/si << " of " << typeid(c/si).name() <<
endl;
Обязательно добавьте программный вывод типа рещультата (typeid).
Аналогично расчитайте другие слагаемые и результат. Обратите внимание,
что такие операции (например, деление символа на целое число) не только
возможны, но и приводят к косвенным операциям приведения типов. Если все
сделано правильно, то результат вычисления выражения должен быть типа
double.
Примечение: расчет функции можно также разместить в отдельной
функции.
На рисунке 1 представлен пример выполнения всех предложенных
заданий.
Рисунок 1 - Пример выполнения заданий
Download