![]() |
![]() |
![]() |
|
|||||||||
|
![]() | |||||||||||
|
![]() |
||||||||
|
МЕНЮ
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА - РЕФЕРАТЫ - Дослідження зміни швидкості та витікання ідеального газу із ємкості під тискомДослідження зміни швидкості та витікання ідеального газу із ємкості під тиском15 Курсова робота на тему: «Дослідження зміни швидкості та витікання ідеального газу із ємкості під тиском» Постановка задачі Описати масив структур з трьох елементів. Кожна структура об'єднує дані для одного варіанта розрахунків. Необхідно для кожного варіанта на відрізку часу від 0 до Т з кроком dt (? t) побудувати графік зміни швидкості та витікання ідеального газу із ємкості під тиском. Де R - універсальна газова стала, M - молекулярна маса газу, Tc - температура в ємкості, Po - тиск у ємкості. де - відношення теплоємностей. Температура Ро та То змінюється в часі: Тут Рn, A, To, B - задані константи. Вхідні дані зчитувати з файлу, результати розрахунків записувати в інший файл. Передбачити окремі функції для обчислення Ро та То. Нижче представлені 3 варіанти вхідних даних: 1) R = 8.31696 Дж/грам*моль, To = 400о К, час T = 1200 с, dt = 600 с, B = 50 о К, Pn = 3.2, A = 1.2, M = 28.96, K = 1.402, P = 1.2 атм. 2) R = 8.31696 Дж/грам*моль, To = 400о К, час T = 1200 с, dt = 600 с, B = 50 о К, Pn = 4, A = 1.5, M = 28.96, K = 1.402, P = 1.5 атм. 3) R = 8.31696 Дж/грам*моль, To = 400о К, час T = 1200 с, dt = 600 с, B = 50 о К, Pn = 5, A = 2, M = 28.96, K = 1.402, P = 2 атм. Таблиця символічних імен
Блок - схема 15 Текст програми мовою С #include <stdio.h> #include <stdlib.h> #include <math.h> #include <conio.h> #include <graphics.h> #define №3 #define FN 21 #define R_ 8.31696 #define T_ 1200 #define dt_ 60 #define B_ 50 #define M_ 28.96 #define K_ 1.402 #define T0_ 400 struct data { float Pn; float A; float p; } x[N]; float Tc (float T0, float B, float t, float T); float P0 (float Pn, float A, float t, float T); float Kg (float K); void graf_output (int c, float xu[], float yv[], int N_, char*title); // - void main() { float tx[N] [FN]; float wx[N] [FN]; float w, t, Tc_, P0_, Kg_; int i, j; char str[40]; FILE *data; FILE *out; clrscr(); data = fopen («input.txt», «r»); if (! data) { printf («The file input.txt hasn't been found. Please create it or change the directory. \n»); getch(); exit(1); } out = fopen («output.txt», «w»); for (i=0; i<N; i++) { fscanf (data, «%f % f % f»,&x[i].Pn,&x[i].A,&x[i].p); } printf («Please type in any decimal number:»); scanf («%f»,&Kg_); fclose(data); clrscr(); for (i=0; i<N; i++) { for (t=0, j=0; t<=T_; t=t+dt_, j++) { Tc_ = Tc (T0_, B_, t, T_); P0_ = P0 (x[i].Pn, x[i].A, t, T_); Kg_ = Kg (K_); w = 2*R_*Tc_/(Kg_ * M_); w *= 1 - pow (x[i].p/P0_, Kg_); w = sqrt(w); fprintf (out, «%.0f\t%.5f\n», t, w); tx[i] [j]=t; wx[i] [j]=w; } fprintf (out, "\n\n\n\n»); } fclose(out); printf («All the function values (values of graph points' coordinates) will be put into \nthe output.txt file.\n»); printf («You are able to change the values of Pn, A and p. Change those\nvalues in the input.txt file.\n»); printf («The correct order of typing the values is showed under the graphs\n\n\n\n»); printf («Press Enter to continue»); getch(); for (i=0; i<N; i++) { sprintf (str, «Ph =%.3f, A =%.3f, P =%.3 f.», x[i].Pn, x[i].A, x[i].p); graf_output (i, tx[i], wx[i], FN, str); fflush(stdin); getch(); } } // - void graf_output (int c, float xu[], float yv[], int N_, char*title) { int gdriver = DETECT, gmode, errorcode; int xmax, ymax; // the maximum coordiantes x(width) y(hight) int xmin, ymin; // spaces between the graph and screen adges int x, y; // current coordinates int x_, y_; // previous coordinates int i; char st[20]; double miny, maxy; // extreem values of y initgraph (&gdriver, &gmode, «e:\\turbocpp\\bgi»); xmin = 90; ymin = 100; xmax = getmaxx() - 20; ymax = getmaxy() - 40; maxy = miny = yv[0]; for (i=0; i<N_; i++) { miny = (yv[i]<miny)? yv[i]:miny; maxy = (yv[i]>maxy)? yv[i]:maxy; } rectangle (0,0, getmaxx(), getmaxy()); setbkcolor(7); sprintf (st, «Input variant number % d», c+1); outtextxy (10,3, st); outtextxy (10,30, title); // first 2 lines-the axises x and y. next we got the pointers building (y>, x>) line (xmin, ymin, xmin, ymax); line (xmin, ymax, xmax, ymax); line (xmin, ymin, xmin+3, ymin+5); line (xmin, ymin, xmin_3, ymin+5); line (xmax, ymax, xmax_5, ymax_3); line (xmax, ymax, xmax_5, ymax+3); setcolor(1); outtextxy (xmin+6, ymin, «w»); outtextxy (xmax, ymax+15, «t»); for (y=ymax_20; y>ymin+10; y-= 20) |