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

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

Формат операции преобразования типов:

имя_типа (операнд)

Например, int(x), float(2/5), long(x+y/0.5).

Пример 1.

//Взятие цифры разряда сотых в дробном числе

#include <stdio.h>

void main(){

float s,t;

long int a,b;

 

printf("Введите вещественное число\n");

scanf("%f", &s);

t=s*100;

a=int(t);

//переменная t приводится к типу int в переменную a

b=a%10;

printf("\nЦифра разряда сотых числа %f равна %d.",s,b);

}

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

 

Пример 2.Временной интервал

Заданы моменты начала и конца некоторого промежутка времени в часах, минутах и секундах (в пределах одних суток). Найти продолжительность этого промежутка в тех же единицах.

 

Исходными данными для этой задачи являются шесть целых величин, задающих моменты начала и конца интервала, результатами – три целых величины (тип int).

Назовем переменные для хранения начала интервала hour1, min1 и sec1, для хранения конца интервала – hour2, min2 и sec2, а результирующие величины – hour, min и sec.

Для решения этой задачи необходимо преобразовать оба момента времени в секунды, вычесть первый из второго, а затем преобразовать результат обратно в часы, минуты и секунды. Следовательно, потребуется промежуточная переменная sum_sec, в которой будет храниться величина интервала в секундах. Она может иметь весьма большие значения, ведь в сутках 86400 секунд, что выходит за пределы типа int. Следовательно, для этой переменной выберем длинный целый тип (long int, сокращенно long).

Для перевода результата из секунд обратно в часы и минуты используется отбрасывание дробной части при делении целого числа на целое.

 

//Временной интервал. Форматированный ввод-вывод данных

#include <stdio.h>

void main () {

int hour1, min1, sec1, hour2, min2, sec2, hour, min, sec;

long int sum_sec;

 

printf("Введите время начала интервала (час мин сек)\n");

scanf("%d%d%d", &hour1,&min1,&sec1);

printf("Введите время окончания интервала (час мин сек)\n");

scanf("%d%d%d", &hour2,&min2,&sec2);

 

sum_sec = (hour2-hour1)*3600+(min2-min1)*60+sec2-sec1;

hour = sum_sec/3600;

min = (sum_sec-hour*3600)/60;

sec = sum_sec - hour*3600-min*60;

 

printf("Продолжительность промежутка от %d:%d:%d до

%d:%d:%d\n",hour1,min1,sec1,hour2,min2,sec2);

printf(" равна %d:%d:%d\n",hour,min,sec);

}

Задания

1.Найти сумму первых трех цифр дробной части вещественного числа. Например, для числа 23,16809 она равна 15.

2.Составить программу вычисления стоимости поездки на автомобиле на дачу (туда и обратно). Исходными данными являются: расстояние до дачи (в километрах); количество бензина, которое потребляет автомобиль на 100 км пробега; цена одного литра бензина. Ниже представлен рекомендуемый вид диалога во время работы программы. Данные, вводимые пользователем, выделены жирным шрифтом.

Вычисление стоимости поездки на дачу.

Расстояние до дачи (км) – 67

Расход бензина (л на 100 км) – 8.5

Цена литра бензина (руб.) – 23.7

Поездка на дачу обойдется в 269 руб. 94 коп.

3.Составить линейную программу, печатающую значение 1, если указанное высказывание является истинным, и 0 – в противном случае. Величина d является корнем только одного из уравнений ах2 + bх + с = 0 и тх + п = 0относительно х.

 

Домашние задания

1.Наберите код программы из Примера 2. Сохраните код в файл с именем vr_int_f.cpp. Выполните компиляцию и запуск программы. Реализуйте потоковый ввод-вывод данных в этой задаче, сохранив под именем vr_int_р.cpp.

2.Разработайте программу для вычисления у. Числа a, b, c вводятся с клавиатуры. В данном задании используйте форматированный ввод-вывод данных.

;

3.Составить линейную программу, печатающую значение 1, если указанное высказывание является истинным, и 0 – в противном случае. Точка с координатами x, y не принадлежит единичному кругу с центром в начале координат и принадлежит кругу радиусом 3 и с центром в начале координат.

4.Составить программу, которая преобразует введенное с клавиатуры дробное число в денежный формат. Например, число 12,348 должно быть преобразовано к виду 12 руб. 35 коп. Решите данную задачу в двух вариантах: со стандартным потоком ввода-вывода и с форматированным вводом-выводом. Ниже представлен рекомендуемый вид диалога во время работы программы. Данные, вводимые пользователем, выделены жирным шрифтом.

Преобразование числа в денежный формат.

Введите дробное число – 23,6

23.6 руб. – это 23 руб. 60 коп.









Дата добавления: 2015-02-16; просмотров: 1152;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.