Програмування на мові Сі

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Федеральне агентство з освіти.
ГОУ ВПО Уральський Державний Технічний Університет - УПІ імені першого президента Росії Б. М. Єльцина
Кафедра теплофізики та інформатики в металургії.
Дисципліна: Алгоритмізація та програмування.
Звіт
Лабораторна робота № 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 ("% .15 f", 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 ("% .15 f", 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.
Викладач: Степура А. А.
Студент гр. МТ-190503: Свиткин В. Г.
Єкатеринбург, 2009

Мета: Отримання навичок у виборі і використанні операторів Сі + +; знайомство з ітераційними процесами.
Завдання: Використовуючи оператор циклу, знайти суму елементів, зазначених у завданні. Результат надрукувати, забезпечивши відповідним заголовком.
Знайти суму ряду з точністю e = 10 -4, загальний член якого

Текст програми:
# Include <cstdlib>
# Include <iostream>
# Include <math.h>
# 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 ("Сума ряду:% f \ n", s);
system ("PAUSE");
return EXIT_SUCCESS;}
Результат виконання програми:
Сума ряду: 2201.546404

Федеральне агентство з освіти.
ГОУ ВПО Уральський Державний Технічний Університет - УПІ імені першого президента Росії Б. М. Єльцина
Кафедра теплофізики та інформатики в металургії.
Дисципліна: Алгоритмізація та програмування.
Звіт
Лабораторна робота № 3
"Обчислення функцій з використанням їх розкладу в степеневий ряд"
Варіант 9.
Викладач: Степура А. А.
Студент гр. МТ-190503: Свиткин В. Г.
Єкатеринбург, 2009

Мета: Практика в організації ітераційних та арифметичних циклів.
Завдання: Для х змінюється від a до b з кроком (ba) / k, де (k = 10), обчислити функцію f (x), використовуючи її розкладання в степеневий ряд в двох випадках:
а) для заданого n;
б) для заданої точності e (e = 0.0001).
Для порівняння знайти точне значення функції.
Варіант 9
Функція:

Діапазон x:

Число доданків ряду:
n = 3
Формула для обчислення суми:

Текст програми:
# Include <cstdlib>
# Include <iostream>
# Include <math.h>
# Define A 0.1
# Define B 0.8
# Define E 10e-4
int main (int argc, char * argv []) {
float x, k = (BA) / 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 =% .2 f SN =% f SE =% f Y =% f \ n", x, sn, se, y);}
system ("PAUSE");
return EXIT_SUCCESS;}
Результат виконання програми:
x = 0.10 SN = 0.100002 SE = 0.100002 Y = 0.100002
x = 0.17 SN = 0.170028 SE = 0.170028 Y = 0.170028
x = 0.24 SN = 0.240160 SE = 0.240159 Y = 0.240160
x = 0.31 SN = 0.310576 SE = 0.310573 Y = 0.310576
x = 0.38 SN = 0.381603 SE = 0.381603 Y = 0.381603
x = 0.45 SN = 0.453777 SE = 0.453775 Y = 0.453777
x = 0.52 SN = 0.527929 SE = 0.527913 Y = 0.527929
x = 0.59 SN = 0.605342 SE = 0.605261 Y = 0.605350
x = 0.66 SN = 0.688034 SE = 0.688034 Y = 0.688093
x = 0.73 SN = 0.779289 SE = 0.779568 Y = 0.779652
x = 0.80 SN = 0.884678 SE = 0.886442 Y = 0.886677

Федеральне агентство з освіти.
ГОУ ВПО Уральський Державний Технічний Університет - УПІ імені першого президента Росії Б. М. Єльцина
Кафедра теплофізики та інформатики в металургії.
Дисципліна: Алгоритмізація та програмування.
Звіт
Лабораторна робота № 4
"Робота з одновимірними масивами"
Варіант 9.
Викладач: Степура А. А.
Студент гр. МТ-190503: Свиткин В. Г.
Єкатеринбург, 2009

Мета: Отримання навичок обробки одновимірних масивів.
Завдання: (Варіант 9)
Сформувати одновимірний масив цілих чисел, використовуючи датчик випадкових чисел.
Роздрукувати отриманий масив.
Видалити перший елемент із заданим значенням.
Зрушити масив циклічно на К елементів вправо.
Роздрукувати отриманий масив.
Текст програми:
# Include <cstdlib>
# Include <iostream>
# Include <time.h>
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 <size; i + +) {
a [i] = rand ()% 100; printf ("% d", a [i]);}
printf ("\ nEnter value to destroy :>"); scanf ("% d ", & x);
for (i = 0; i <size; i + +) {
if (a [i] == x) {
for (j = i; j <size-1; j + +) {
a [j] = a [j +1];}
size -; break;}}
for (i = 0; i <size; i + +) {
printf ("% d", a [i]);}
printf ("\ nEnter K :>"); scanf ("% d ", & k);
for (i = 0; i <size; i + +) {
if ((i + k) <size) {b [i + k] = a [i];} else {b [i + k-size] = a [i];}}
printf ("Result: \ n");
for (i = 0; i <size; 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.
Викладач: Степура А. А.
Студент гр. МТ-190503: Свиткин В. Г.
Єкатеринбург, 2009

Мета: Організувати обробку масивів з використанням функцій, навчитися передавати масиви як параметри функцій.
Завдання: Використовуючи функції, вирішити зазначене завдання. Масив має передаватися у функцію як параметр:
Варіант 9. Написати функцію для обчислення суми елементів квадратної матриці, які розташовані нижче головної діагоналі. З її допомогою знайти максимальне значення такої суми в n матрицях.
Текст програми:
# Include <cstdlib>
# Include <iostream>
# Include <time.h>
# Include <math.h>
# Define SIZE 5
static int a [SIZE] [SIZE];
void CreateArray (int a [SIZE] [SIZE]) {
int i, j;
for (i = 0; i <SIZE; i + +) {
for (j = 0; j <SIZE; j + +) {
a [i] [j] = rand ()% 100;}}}
void PrintArray (int a [SIZE] [SIZE]) {
int i, j;
for (i = 0; i <SIZE; i + +) {
for (j = 0; j <SIZE; j + +) {
printf ("% d", a [i] [j]);}
printf ("\ n ");}}
int MatrixSum1 (int m [SIZE] [SIZE]) {
int i, j, s = 0;
for (i = 1; i <SIZE; i + +) {
for (j = 0; j <i; 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:% d \ n", t);
if (t> s) {s = t;}}
printf ("\ nMaximum% d \ n", 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.
Викладач: Степура А. А.
Студент гр. МТ-190503: Свиткин В. Г.
Єкатеринбург, 2009

Мета: Вивчення символьних і рядкових змінних та способів їх обробки в мові Сі.
Завдання: Задано рядок, що складається з символів. Символи об'єднуються в слова. Слова один від одного відділяються одним або декількома пропусками. У кінці тексту ставиться крапка. Текст містить не більше 255 символів. Виконати введення рядка, використовуючи функцію Gets (s) і обробку рядка у відповідності зі своїм варіантом.
Варіант 9. Перетворити рядок так, щоб усі слова в ній стали ідентифікаторами, слова складаються тільки з цифр - видалити.
Текст програми:
# Include <cstdlib>
# Include <iostream>
# Include <string.h>
void ClearString (char string [255]) {
int i;
for (i = 0; i <255; i + +) {string [i] = '\ 0';}}
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 == '\ 0') {
if (t [0]> '9 ') {if (r) {
strcat (str, t); strcat (str, "");}
} T [j] = '\ 0';
j = 0; ClearString (t); break;}
else {t [j] = c; j + +;}
} While (1);
} While (c! ='.'&& c! = '\ 0');
printf ("Right identifiers: \ n");
puts (str);
system ("PAUSE");
return EXIT_SUCCESS;}
Вихідні дані:
A1 1F Number 111 b 123c5 fff t.
Результат виконання програми:
Enter text> A1 1F Number 111 b 123c5 fff t.
Right identifiers:
A1 Number b fff t
Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Лабораторна робота
27.1кб. | скачати


Схожі роботи:
Програмування на мові С
Програмування на мові Асемблер
Робота з функціями в мові програмування Сі
Оператори циклу у мові програмування Сі
Програмування на алгоритмічній мові Бейсік
Масиви та покажчики в мові програмування Сі
Робота зі структурами в мові програмування Сі
Умовні та безумовні оператори у мові програмування Сі
Оператори введення і виведення в мові програмування Сі
© Усі права захищені
написати до нас