Ім'я файлу: Програмування на мові Сі.doc Розширення: doc Розмір: 26кб. Дата: 07.04.2021 скачати Пов'язані файли: Англиский Али.doc Технології програмування.docx Філософія.docx Основи інформатики.doc Федеральне агентство з освіти. ГОУ ВПО Уральський Державний Технічний Університет - УПІ імені першого президента Росії Б. М. Єльцина Кафедра теплофізики та інформатики в металургії. Дисципліна: Алгоритмізація та програмування. Звіт Лабораторна робота № 1 "Знайомство з Сі + +. Виконання програми простий структури" Варіант 9. Викладач: Степура А. А. Студент гр. МТ-190503: Свиткин В. Г. Єкатеринбург, 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 ("% .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 # Include # Include 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 + + 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 + +> m = 0 n = 6, m = 9 Пояснення результату. При виконанні першої дії спочатку змінні збільшуються на одиницю, потім множаться: 5 * 7 = 40. При виконанні другого дії спочатку йде порівняння змінних, після цього мінлива m збільшується на одиницю. При виконанні третього дії спочатку змінні порівнюються, потім мінлива n збільшується на одиницю. Федеральне агентство з освіти. ГОУ ВПО Уральський Державний Технічний Університет - УПІ імені першого президента Росії Б. М. Єльцина Кафедра теплофізики та інформатики в металургії. Дисципліна: Алгоритмізація та програмування. Звіт Лабораторна робота № 2 "Використання основних операторів мови Сі" Варіант 9. Викладач: Степура А. А. Студент гр. МТ-190503: Свиткин В. Г. Єкатеринбург, 2009 Мета: Отримання навичок у виборі і використанні операторів Сі + +; знайомство з ітераційними процесами. Завдання: Використовуючи оператор циклу, знайти суму елементів, зазначених у завданні. Результат надрукувати, забезпечивши відповідним заголовком. Знайти суму ряду з точністю e = 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 ("Сума ряду:% 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). Для порівняння знайти точне значення функції.
Текст програми: # Include # Include # Include # 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 # 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 printf ("\ nEnter value to destroy :>"); scanf ("% d ", & x); for (i = 0; i for (j = i; j size -; break;}} for (i = 0; i printf ("\ nEnter K :>"); scanf ("% d ", & k); for (i = 0; i for (i = 0; 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 # Include # Include # Include # Define SIZE 5 static int a [SIZE] [SIZE]; void CreateArray (int a [SIZE] [SIZE]) { int i, j; for (i = 0; i void PrintArray (int a [SIZE] [SIZE]) { int i, j; for (i = 0; i printf ("\ n ");}} int MatrixSum1 (int m [SIZE] [SIZE]) { int i, j, s = 0; for (i = 1; i 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 # Include # Include 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 http://ua-referat.com |