Федеральное агентство по образованию.
ГОУ ВПО Уральский Государственный Технический Университет – УПИ имени первого президента России Б. Н. Ельцина
Кафедра теплофизики и информатики в металлургии.
Дисциплина: Алгоритмизация и программирование.
Отчет
Лабораторная работа №1
"Знакомство с Си++. Выполнение программы простой структуры"
Вариант 9.
Преподаватель: Степура А. А.
Студент гр. Мт-190503: Свиткин В. Г.
Екатеринбург, 2009
Цель: Знакомство со средой программирования, создание, отладка и выполнение простой программы, содержащей ввод/вывод информации и простейшие вычисления.
Задачи: 1) вычислить значение выражения при различных вещественных типах данных: float и double. Сравнить и объяснить полученные результаты.
2) Вычислить значения выражений. Объяснить полученные результаты.
Задание 1. Вычислить значение выражения при различных вещественных типах данных (float и double). Вычисления следует выполнять с использованием промежуточных переменных. Сравнить и объяснить полученные результаты.
, при а=100, b=0.001
Текст программы:
#include <cstdlib>
#include <iostream>
#include <math.h>
int main(int argc, char *argv[]){
//Объявление переменных и исходные данные
float a1=100,b1=0.001,c1;
double a2=100,b2=0.001,c2;
//Расчет значений выражения для типов float и double
//Вывод результата с 15 знаками после запятой
printf(" Float: ");
c1=(pow(a1+b1,4.0)-(pow(a1,4)+4*pow(a1,3)*b1) )/ (6 * a1 *a1 *b1* b1+ 4*a1*b1*b1+pow(b1,4) );
printf("%.15f",c1);
printf("\nDouble: ");
c2=(pow(a2+b2,4)-(pow(a2,4)+4*pow(a2,3)*b2) )/ (6*a2*a2*b2*b2 +4*a2*b2*b2 + pow(b2,4) );
printf("%.15f",c2);
system("PAUSE");
return EXIT_SUCCESS; }
Результат выполнения программы:
Float: 0.993384063243866
Double: 0.993384430723606
Результаты совпадают с точностью до 6 знаков после запятой. Это происходит из-за того, что при вычислениях с типом float точность меньше, и при каждом вычислении накапливается погрешность. Вычисление с типом double точнее, чем с float.
Задание 2.Вычислить значения выражений. Объяснить полученные результаты.
n+++m
m-- >n
n-- >m
Текст программы:
#include <cstdlib>
#include <iostream>
#include <math.h>
int main(int argc, char *argv[]){
int m=7,n=4,y;
printf("n=%d,m=%d\n",n,m);
y=++n*++m;
printf("++n*++m=%d\n",y);
printf("n=%d,m=%d\n",n,m);
y=m++<n;
printf("m++<n=%d\n",y);
printf("n=%d,m=%d\n",n,m);
y=n++>m;
printf("n++>m=%d\n",y);
printf("n=%d,m=%d\n",n,m);
system("PAUSE");
return EXIT_SUCCESS; }
Результат выполнения программы:
n=4,m=7
++n*++m=40
n=5,m=8
m++<n=0
n=5,m=9
n++>m=0
n=6,m=9
Объяснение результата.
При выполнении первого действия сначала переменные увеличиваются на единицу, затем умножаются: 5 * 7 =40. При выполнении второго действия сначала идет сравнение переменных, после этого переменная m увеличивается на единицу. При выполнении третьего действия сначала переменные сравниваются, затем переменная n увеличивается на единицу.
Федеральное агентство по образованию.
ГОУ ВПО Уральский Государственный Технический Университет – УПИ имени первого президента России Б. Н. Ельцина
Кафедра теплофизики и информатики в металлургии.
Дисциплина: Алгоритмизация и программирование.
Отчет
Лабораторная работа №2
" Использование основных операторов языка Си "
Вариант 9.
Преподаватель: Степура А. А.
Студент гр. ............