Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №5.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.18 Mб
Скачать

Явные преобразования типов

Выражения могут быть преобразованы из одного типа в другой явным указанием. Выражение E может быть явно преобразовано к типу имя-типа с помощью записи вида

(имя - типа) Е

где имя типа представляется в форме

указатель-типа абстрактный-описатель

Абстрактный описатель аналогичен описателю, за исключением того, что он не содержит определяемого или описываемого идентификатора. Смысл слов имя-типа, представляемого в форме

Т абстрактный описатель

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

  • форма абстрактного описателя - смысл слов " Т абстрактный описатель ";

  • пустой ( абстрактный описатель ) - абстрактный описатель типа Т ;

  • * ( абстрактный описатель ) - указатель на тип Т ;

  • абстрактный описатель ( ) - функция, возвращающая значение типа Т ;

  • абстрактный описатель [ n ] - массив с n элементами типа Т, n - выражение с постоянным значением;

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

int i;

char *pc, *name;

char *calloc( ), *strcpy( );

тогда можно привести следующие примеры явных преобразований типов:

(char) i - преобразует значение типа int в значение типа char.

pc=(char *) 0777 - преобразует восьмеричный литер 0777 в значение указателя на знак таким образом, что оно может быть присвоено переменной "pc".

(emp *) calloc(1,sizeof(emp)) - преобразует значение "знакового" указателя, возвращаемого функцией calloc, в значение указателя emp.

(void) strcpy(name,"gehani") - опускает значение, возвращенное функцией strcpy.

Синтаксис типов

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

  1. Трудность создания форматеров.

  2. Большое число ошибок, допускаемых даже опытными программистами.

  3. Трудность создания синтаксических анализаторов для трансляторов с языка Си - не существует двух трансляторов с языка Си, синтаксис входного языка для которых полностью совпадал бы.

  4. Имеется три случая, когда необходимо использовать типы:

    • описания, связывающие тип с именем, как например, в случае описания (глобальных) переменных и формальных параметров;

    • описания, связывающие значения (и тип) с именем, как, например, описания программ;

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

Задание. При выполнении заданий данной лабораторной работы обязатедьно использовать конструкции switch

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

Написать программу, в которой при вводе 1 вычисляется квадрат заданного числа, 2 – куб заданного числа и т.д.

Используя оператор switch, написать программу, позволяющую по введенному номеру музыкальной ноты вывести ее словесное наименование. Например, 3 – ми.

Используя оператор switch, написать программу, в которой при вводе 1 будет вычисляться косинус заданного числа, 2 – синус заданного числа, 3 – тангенс заданного числа, при вводе любого другого значения выдать сообщение о невозможности использования тригонометрической функций.

Используя оператор switch, написать программу, позволяющую по введенному номеру дня недели вывести его словесное наименование. Например, 1 – понедельник.

Используя оператор switch, написать программу, позволяющую по введенному номеру месяца вывести его словесное наименование. Например, 1 – январь.

Используя оператор switch, написать программу, позволяющую получить словесное наименованиешкольных оценок. Например, 1 – очень плохо.

Используя оператор switch, написать программу, которая по введенному номеру выводит фамилию студента Вашей подгруппы.

Используя оператор switch, написать программу, позволяющую по введенному номеру музыкальной ноты вывести ее словесное наименование. Например, 3 – ми.

Используя оператор switch, написать программу, позволяющую по введенному номеру дня недели вывести количество часов занятий в вашей группе.

Треугольник задан координатами своих вершин на плоскости: А(хаа), В(хbb), С(хсс). Определить, является он прямо-, остро- или тупоугольным.

Используя оператор switch, написать программу, которая выводит возможные значения координат X и Y в зависимости от номера координатной плоскости.

Треугольник задан длинами своих сторон: а, b, с. Определить, является ли он тупоугольным, прямоугольным или остроугольным. Замечание. Достаточно, используя теорему косинусов найти знаки косинусов внутренних углов треугольника, не вычисляя самих углов (они могут быть нулевыми или развернутыми).

Можно ли на прямоугольном участке застройки размером а на b метров разместить два дома размером в плане р на g и r на q метров? Дома можно располагать только параллельно сторонам участка.

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

Как известно, число делится на 3 тогда и только тогда, когда сумма его цифр делится на 3. Проверить этот признак на примере заданного трехзнач­ного числа. Замечание. Теоретическое утверждение о признаке делимости предлагается проверить на примере любого вводимого числа. Признак считается доказанным, но не будет лишним поиск для него контрпримеров.

Используя switch найти порядковый номер максимальной и минимальной цифры в четырехзначном числе.

Написать программу, в которой при вводе 1 вычисляется квадрат заданного числа, 2 – куб заданного числа и т.д.