Помощь в написании студенческих работ
Антистрессовый сервис

Программирование на языке Си++

Лабораторная работаПомощь в написанииУзнать стоимостьмоей работы

Результаты совпадают с точностью до 6 знаков после запятой. Это происходит из-за того, что при вычислениях с типом float точность меньше, и при каждом вычислении накапливается погрешность. Вычисление с типом double точнее, чем с float. Задание 1. Вычислить значение выражения при различных вещественных типах данных (float и double). Вычисления следует выполнять с использованием промежуточных… Читать ещё >

Программирование на языке Си++ (реферат, курсовая, диплом, контрольная)

Федеральное агентство по образованию.

ГОУ ВПО Уральский Государственный Технический Университет — УПИ имени первого президента России Б. Н. Ельцина Кафедра теплофизики и информатики в металлургии.

Дисциплина: Алгоритмизация и программирование.

Отчет

Лабораторная работа № 1

" Знакомство с Си++. Выполнение программы простой структуры"

Вариант 9.

Преподаватель: Степура А. А.

Студент гр. Мт-190 503: Свиткин В. Г.

Екатеринбург, 2009

Цель: Знакомство со средой программирования, создание, отладка и выполнение простой программы, содержащей ввод/вывод информации и простейшие вычисления.

Задачи: 1) вычислить значение выражения при различных вещественных типах данных: float и double. Сравнить и объяснить полученные результаты.

2) Вычислить значения выражений. Объяснить полученные результаты.

Задание 1. Вычислить значение выражения при различных вещественных типах данных (float и double). Вычисления следует выполнять с использованием промежуточных переменных. Сравнить и объяснить полученные результаты.

при а=100, b=0.001

Текст программы:

#include

#include

#include

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.993 384 063 243 866

Double: 0.993 384 430 723 606

Результаты совпадают с точностью до 6 знаков после запятой. Это происходит из-за того, что при вычислениях с типом float точность меньше, и при каждом вычислении накапливается погрешность. Вычисление с типом double точнее, чем с float.

Задание 2.Вычислить значения выражений. Объяснить полученные результаты.

n+++m

m— >n

n— >m

Текст программы:

#include

#include

#include

int main (int argc, char *argv[]){

int m=7,n=4,y;

printf («n=%d, m=%dn», n, m);

y=++n*++m;

printf («++n*++m=%dn», y);

printf («n=%d, m=%dn», n, m);

y=m++

printf («m++

printf («n=%d, m=%dn», n, m);

y=n++>m;

printf («n++>m=%dn», y);

printf («n=%d, m=%dn», n, m);

system («PAUSE»);

return EXIT_SUCCESS; }

Результат выполнения программы:

n=4,m=7

++n*++m=40

n=5,m=8

m++

n=5,m=9

n++>m=0

n=6,m=9

Объяснение результата.

При выполнении первого действия сначала переменные увеличиваются на единицу, затем умножаются: 5 * 7 =40. При выполнении второго действия сначала идет сравнение переменных, после этого переменная m увеличивается на единицу. При выполнении третьего действия сначала переменные сравниваются, затем переменная n увеличивается на единицу.

Федеральное агентство по образованию.

ГОУ ВПО Уральский Государственный Технический Университет — УПИ имени первого президента России Б. Н. Ельцина Кафедра теплофизики и информатики в металлургии.

Дисциплина: Алгоритмизация и программирование.

Отчет

Лабораторная работа № 2

" Использование основных операторов языка Си «

Вариант 9.

Преподаватель: Степура А. А.

Студент гр. Мт-190 503: Свиткин В. Г.

Екатеринбург, 2009

Цель: Получение навыков в выборе и использовании операторов Си++; знакомство с итерационными процессами.

Задача: Используя оператор цикла, найти сумму элементов, указанных в задании. Результат напечатать, снабдив соответствующим заголовком.

Найти сумму ряда с точностью =10-4, общий член которого

Текст программы:

#include

#include

#include

#define E 10e-4 //точность

int main (int argc, char *argv[]){

int n=1;

double s=0,a=1;

do {a*=10.0/(n+1); //расчет следующего числа ряда по рекуррентной формуле

s+=a;n++;}

while (a>E); //выход из цикла при достижении нужной точности

printf («Сумма ряда:%fn», s);

system («PAUSE»);

return EXIT_SUCCESS;}

Результат выполнения программы:

Сумма ряда: 2201.546 404

Федеральное агентство по образованию.

ГОУ ВПО Уральский Государственный Технический Университет — УПИ имени первого президента России Б. Н. Ельцина Кафедра теплофизики и информатики в металлургии.

Дисциплина: Алгоритмизация и программирование.

Отчет

Лабораторная работа № 3

" Вычисление функций с использованием их разложения в степенной ряд «

Вариант 9.

Преподаватель: Степура А. А.

Студент гр. Мт-190 503: Свиткин В. Г.

Екатеринбург, 2009

Цель: Практика в организации итерационных и арифметических циклов.

Задача: Для х изменяющегося от a до b с шагом (b-a)/k, где (k=10), вычислить функцию f (x), используя ее разложение в степенной ряд в двух случаях:

а) для заданного n;

б) для заданной точности (=0.0001).

Для сравнения найти точное значение функции.

Вариант 9

Функция:

Диапазон x:

Число слагаемых ряда:

n=3

Формула для вычисления суммы:

Текст программы:

#include

#include

#include

#define A 0.1

#define B 0.8

#define E 10e-4

int main (int argc, char *argv[]){

float x, k=(B-A)/10.0,sn=0,se=0,t, y;

int i, j, n=3;

for (x=A;x<=B;x+=k){

sn=x;se=x;

for (i=1;i<=n;i++){

sn+=pow (x, 4*i+1)/(4*i+1);};

j=1;

do {t=pow (x, 4*j+1)/(4*j+1);

j++;se+=t;}

while (t>E);

y=log ((1.0+x)/(1.0-x))/4.0 + atan (x)/2.0;

printf («x=%.2f SN=%f SE=%f Y=%fn», x, sn, se, y);}

system («PAUSE»);

return EXIT_SUCCESS;}

Результат выполнения программы:

x=0.10 SN=0.100 002 SE=0.100 002 Y=0.100 002

x=0.17 SN=0.170 028 SE=0.170 028 Y=0.170 028

x=0.24 SN=0.240 160 SE=0.240 159 Y=0.240 160

x=0.31 SN=0.310 576 SE=0.310 573 Y=0.310 576

x=0.38 SN=0.381 603 SE=0.381 603 Y=0.381 603

x=0.45 SN=0.453 777 SE=0.453 775 Y=0.453 777

x=0.52 SN=0.527 929 SE=0.527 913 Y=0.527 929

x=0.59 SN=0.605 342 SE=0.605 261 Y=0.605 350

x=0.66 SN=0.688 034 SE=0.688 034 Y=0.688 093

x=0.73 SN=0.779 289 SE=0.779 568 Y=0.779 652

x=0.80 SN=0.884 678 SE=0.886 442 Y=0.886 677

Федеральное агентство по образованию.

ГОУ ВПО Уральский Государственный Технический Университет — УПИ имени первого президента России Б. Н. Ельцина Кафедра теплофизики и информатики в металлургии.

Дисциплина: Алгоритмизация и программирование.

Отчет

Лабораторная работа № 4

" Работа с одномерными массивами «

Вариант 9.

Преподаватель: Степура А. А.

Студент гр. Мт-190 503: Свиткин В. Г.

Екатеринбург, 2009

Цель: Получение навыков обработки одномерных массивов.

Задача: (Вариант 9)

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

Распечатать полученный массив.

Удалить первый элемент с заданным значением.

Сдвинуть массив циклически на К элементов вправо.

Распечатать полученный массив.

Текст программы:

#include

#include

#include

int main (int argc, char *argv[]){

int i, j, x, k, size;

srand (time (NULL));

int a[100];

int b[100];

printf («Enter size:>»);

scanf («%d» ,&size);

for (i=0;i

a[i]=rand ()%100;printf («%d «, a[i]);}

printf («nEnter value to destroy:>»);scanf («%d» ,&x);

for (i=0;i

if (a[i]==x){

for (j=i;j

a[j]=a[j+1]; }

size—;break;}}

for (i=0;i

printf («%d «, a[i]);}

printf («nEnter K:>»);scanf («%d» ,&k);

for (i=0;i

if ((i+k)

printf («Result:n»);

for (i=0;i

printf («%d «, b[i]);}

printf («n»);

system («PAUSE»);

return EXIT_SUCCESS;}

Результат выполнения программы:

Enter size:>10

50 17 89 6 52 0 60 30 44 21

Enter value to destroy:>89

50 17 6 52 0 60 30 44 21

Enter K:>3

Result:

30 44 21 50 17 6 52 0 60

Федеральное агентство по образованию.

ГОУ ВПО Уральский Государственный Технический Университет — УПИ имени первого президента России Б. Н. Ельцина Кафедра теплофизики и информатики в металлургии.

Дисциплина: Алгоритмизация и программирование.

Отчет

Лабораторная работа № 5

" Функции и массивы"

Вариант 9.

Преподаватель: Степура А. А.

Студент гр. Мт-190 503: Свиткин В. Г.

Екатеринбург, 2009

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

Задача: Используя функции, решить указанную задачу. Массив должен передаваться в функцию как параметр:

Вариант 9. Написать функцию для вычисления суммы элементов квадратной матрицы, которые расположены ниже главной диагонали. С ее помощью найти максимальное значение такой суммы в n матрицах.

Текст программы:

#include

#include

#include

#include

#define SIZE 5

static int a[SIZE][SIZE];

void CreateArray (int a[SIZE][SIZE]){

int i, j;

for (i=0;i

for (j=0;j

a[i][j]=rand ()%100;}}}

void PrintArray (int a[SIZE][SIZE]){

int i, j;

for (i=0;i

for (j=0;j

printf («%d «, a[i][j]);}

printf («n»);}}

int MatrixSum1(int m[SIZE][SIZE]){

int i, j, s=0;

for (i=1;i

for (j=0;j

s+=m[i][j]; }}

return s;}

int main (int argc, char *argv[]){

int s=0,i, t, N;

N=atoi (argv[1]); //количество матриц N вводится в параметре командной строки

srand (time (NULL));

for (i=1;i<=N;i++){

CreateArray (a);

PrintArray (a);

t=MatrixSum1(a);

printf («nSumm:%dn «, t);

if (t>s){s=t;}}

printf («nMaximum %dn», s);

system («PAUSE»);

return EXIT_SUCCESS;}

Результат выполнения программы (N=3):

0 72 91 65 7

59 23 13 17 77

55 16 74 40 85

18 56 19 89 63

20 87 49 89 35

Summ:468

30 92 77 90 68

40 72 79 7 91

16 46 34 78 0

9 7 57 33 60

5 31 2 71 84

Summ:284

47 22 56 36 57

19 27 1 5 75

25 67 52 35 73

90 0 34 9 78

99 27 48 33 59

Summ:442

Maximum 468

Федеральное агентство по образованию.

ГОУ ВПО Уральский Государственный Технический Университет — УПИ имени первого президента России Б. Н. Ельцина Кафедра теплофизики и информатики в металлургии.

Дисциплина: Алгоритмизация и программирование.

Отчет

Лабораторная работа № 6

" Строки"

Вариант 9.

Преподаватель: Степура А. А.

Студент гр. Мт-190 503: Свиткин В. Г.

Екатеринбург, 2009

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

Задача: Задана строка, состоящая из символов. Символы объединяются в слова. Слова друг от друга отделяются одним или несколькими пробелами. В конце текста ставится точка. Текст содержит не более 255 символов. Выполнить ввод строки, используя функцию Gets (s) и обработку строки в соответствии со своим вариантом.

Вариант 9. Преобразовать строку так, чтобы все слова в ней стали идентификаторами, слова состоящие только из цифр — удалить.

Текст программы:

#include

#include

#include

void ClearString (char string[255]){

int i;

for (i=0;i<255;i++){string[i]='';}}

int main (int argc, char *argv[]){

char str[255], s[255]="", t[255]="", c;bool r;

int i=0,j=0;

printf («Enter text>»); gets (s);

strcpy (str," «);

do{r=false;

do{c=s[i]; i++;

if (c>'9'){r=true;}

if (c==' '||c=='.'||c==''){

if (t[0]>'9'){if®{

strcat (str, t);strcat (str," «);}

} t[j]='';

j=0;ClearString (t);break;}

else {t[j]=c;j++;}

}while (1);

}while (c≠'.'&&c≠'');

printf («Right identifiers: n»);

puts (str);

system («PAUSE»);

return EXIT_SUCCESS;}

Исходные данные:

A1 1 °F Number 111 b 123c5 fff t.

Результат выполнения программы:

Enter text> A1 1 °F Number 111 b 123c5 fff t.

Right identifiers:

A1 Number b fff t

Показать весь текст
Заполнить форму текущей работой