
- •Про проходження навчальної практики після третього року навчання
- •Черкаси 2013
- •Постановка задачі та алгоритм вирішення 34
- •4.1.1. Постановка задачі та алгоритм вирішення. 41
- •Щоденник проходження навчальної практики
- •1.1. Програмування з використанням рядків, файлів
- •Постановка задачі та алгоритм вирішення.
- •Лістинг програми
- •Результати тестування програми
- •Пошук та сортування масивів
- •1.3.1. Постановка задачі та алгоритм вирішення
- •1.4 Об‘єктно-орієнтоване прорамування
- •Постановка задачі та алгоритм вирішення.
- •Лістинг програми
- •Результати тестування програми
- •Умови задач:
- •Лістинги програм
- •Результати тестування програм
- •Стандартна бібліотека шаблонів stl. Алгоритми та діопазони
- •Умови задач:
- •Лістинги програм
- •Результати тестування програм
- •Стандартна бібліотека шаблонів stl. Послідовні контейнери
- •Умови задач:
- •Лістинги програм
- •Стандартна бібліотека шаблонів stl. Адаптер контейнерів
- •Розробка баз даних
- •База даних в 1нф
- •База даних в 2нф
- •Лістинги Лістинги форм проекту ”Міський транспорт”
- •Опис візуальних форм і модуля в роботі
- •4.1. Лінійний обчислювальний процес
- •4.1.1. Постановка задачі та алгоритм вирішення.
- •4.1.2. Лістинг програми
- •4.1.3. Результати виконання програми
- •4.2 Реалізація алгоритмів розгалуження
- •4.2.1. Постановка задачі та алгоритм вирішення.
- •4.2.2. Лістинг програми
- •4.2.3. Результати виконання програми
- •4.3 Реалізація циклічних алгоритмів
- •4.3.1. Постановка задачі та алгоритм вирішення.
- •4.3.2. Лістинг програми
- •4.5.3. Результати виконання програми
- •4.6 Обробка двомірних динамічних масивів
- •4.6.1. Постановка задачі та алгоритм вирішення.
- •4.6.2. Лістинг програми
- •4.7.3. Результати виконання програми
- •4.8 Обробка структур з використанням файлів
- •4.8.1. Постановка задачі та алгоритм вирішення.
- •4.8.2. Лістинг програми
- •4.9.3. Результати виконання програми
- •Висновок
- •Список використаної літератури
4.7.3. Результати виконання програми
Рис.45. Вікно програми в роботі
4.8 Обробка структур з використанням файлів
4.8.1. Постановка задачі та алгоритм вирішення.
Кожен запис має містити наступну інформацію про студентів:
- Прізвище та ініціали;
- Рік народження;
- Номер групи;
- Оцінки за семестр: з фізики, математики, інформатики, хімії;
- Середній бал.
Організувати введення вихідних даних, середній бал розрахувати по введеним оцінками. Вміст всього файлу і результати вирішення індивідуальної завдання записати в текстовий файл.
Обчислити загальний середній бал студентів роздрукувати список студентів, які мають середній бал вище загального.
4.8.2. Лістинг програми
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <stdio.h>
#include <io.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
struct TZap{
char PIB[30],group[10];
double s_b;
int date,fiz,mat,inf,chem;
} Zap;
int size = sizeof(TZap);
FILE *Fz;
AnsiString File_Zap;
void Out(TZap, TMemo*);
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Edit1->Text=""; Edit2->Text="01.01.1990";Edit3->Text="";
Edit4->Text="";Edit5->Text="";Edit6->Text="";
Edit7->Text="";Memo1->Clear();
}
//------------------ Створити-----------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
OpenDialog1->Title="Створити новий файл";
if (OpenDialog1->Execute()){
File_Zap = OpenDialog1->FileName;
if ((Fz=fopen(File_Zap.c_str(),"wb"))==NULL) {
ShowMessage("Помилка створення файлу!");
return;
} }
Memo1->Lines->Add("Створено новий файл: "+AnsiString(File_Zap)); fclose(Fz);
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Fz = fopen(File_Zap.c_str(),"ab");
strcpy(Zap.PIB, Edit1 -> Text.c_str());
Zap.date = StrToDate(Edit2->Text);
strcpy(Zap.group, Edit3 -> Text.c_str());
Zap.fiz = StrToInt(Edit4->Text);
Zap.mat = StrToInt(Edit5->Text);
Zap.inf = StrToInt(Edit6->Text);
Zap.chem = StrToInt(Edit7->Text);
Zap.s_b=(Zap.fiz+Zap.mat+Zap.inf+Zap.chem)/4.0;
Out(Zap, Memo1);
fwrite(&Zap, size, 1, Fz);
Edit1->Text=""; Edit2->Text="01.01.1990"; Edit3->Text="";
Edit4->Text="";Edit5->Text="";Edit6->Text="";Edit7->Text="";
fclose(Fz);
}
//----------------Індивідальне завдання -------------------------------------
void __fastcall TForm1::Button7Click(TObject *Sender)
{
TZap *mas_Z;
float zsb=0;
Fz = fopen(File_Zap.c_str(),"rb");
int D_f = fileno(Fz); // Знаходимо дескриптор файлу
int len = filelength(D_f); // Знаходимо роозмір файла
int i, j, kol;
kol = len/size; //Кількість записів файла
mas_Z = new TZap[kol];
// Прочитуємо записи з файлу в динамічний масив
for (i=0; i < kol; i++)
fread((mas_Z+i), size, 1, Fz);fclose(Fz);
for (i=0;i<kol;i++)
zsb+=mas_Z[i].s_b ;
zsb=zsb/kol;
Memo1->Lines->Add("");
Memo1->Lines->Add("Загальний середній бал= "+FloatToStrF(zsb, ffFixed,6,2));
Memo1->Lines->Add("Студенти, які мають середній бал більший за загальній:");
for (i=0; i < kol; i++)
if (mas_Z[i].s_b>zsb){
Memo1->Lines->Add(AnsiString(mas_Z[i].PIB)+" Група:"+AnsiString(mas_Z[i].group)
+" Середній бал:"+FloatToStrF(mas_Z[i].s_b, ffFixed,6,2));}
delete []mas_Z;;}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)
{
SaveDialog1->Title=" Зберегти файл результатів";
if (SaveDialog1->Execute()) {
AnsiString FileNameRez = SaveDialog1->FileName;
Memo1->Lines->SaveToFile(FileNameRez); }}
//-------------------- Відкрити файл-----------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
OpenDialog1->Title=" Відкрити файл";
if (OpenDialog1->Execute()) {
File_Zap = OpenDialog1->FileName;
if ((Fz=fopen(File_Zap.c_str(),"rb"))==NULL) {
ShowMessage("Помилка відкриття файла!");
return ;} }
Memo1->Lines->Add("------------------ Всі відомості -----------------");
Memo1->Lines->Add("|П.І.Б.| |Дата| |Група| |Фіз Мат Інф Хім| |Сердній|");
while(1){
if(!fread(&Zap,size,1,Fz)) break;
Out(Zap, Memo1); }
fclose(Fz);}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
Memo1->Clear();
}
//---------------------------------------------------------------------------
void Out(TZap z, TMemo *Memo1)
{
Memo1->Lines->Add(AnsiString(z.PIB)+ " "+DateToStr(z.date)+" "
+AnsiString(z.group)+" "+IntToStr(z.fiz)+" "+IntToStr(z.mat)+" "
+IntToStr(z.inf)+" "+IntToStr(z.chem)+" "+FloatToStrF(z.s_b, ffFixed,6,2));
}
void __fastcall TForm1::Button3Click(TObject *Sender)
{
TZap st, *mas_Z;
Fz = fopen(File_Zap.c_str(),"rb");
int D_f = fileno(Fz); // Знаходимо дескриптор файлу
int len = filelength(D_f); // Знаходимо роозмір файла
int i, j, kol;
kol = len/size; //Кількість записів файла
mas_Z = new TZap[kol];
for (i=0; i < kol; i++) // Прочитуємо записи з файлу в динамічний масив
fread((mas_Z+i), size, 1, Fz); fclose(Fz);
Memo1->Lines->Add("");
Memo1->Lines->Add("Сортуванння відомостей за середнім балом");
for (i=0; i < kol-1; i++)
for (j=i+1; j < kol; j++)
if (mas_Z[i].s_b > mas_Z[j].s_b) {
st = mas_Z[i]; mas_Z[i] = mas_Z[j];
mas_Z[j] = st; }
for (i=0; i<kol; i++)
Out(mas_Z[i], Memo1);
delete []mas_Z;
}
//---------------------------------------------------------------------------
4.8.3. Результати виконання програми
Рис.46. Вікно програми в роботі
4.9 ПОБУДОВА ГРАФІКІВ ФУНКЦІЇ
4.9.1. Постановка задачі та алгоритм вирішення.
Написати програму виведення графіків функції (лабораторна робота № 3) Y(x) і її розкладання в ряд S (x) для аргументу x, що змінюється від a до b з кроком h (вводяться з клавіатури) з використанням компоненти сhart і графіка функції Y(x) з використанням компоненти Image.
4.9.2. Лістинг програми
#include <vcl.h>
#pragma hdrstop
#include <math.h>
#include <conio.h>
#include <stdio.h>
#include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{}
int Fact(int x)
{ if (x<0) {
x= abs(x);
}
if (x==0)
return 1;
return x*Fact(x-1);
}
double a,b,h,y_min,y_max;
int n;
typedef double (*Tfun)(double);
Tfun f;
double fun0(double);
double fun1(double);
double fun2(double);
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Chart1->Series[0]->Clear(); // Очищення графіка
for(double x=a; x<=b; x+=h)
Chart1->Series[0]->AddXY(x,f(x));
}
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Chart1->CopyToClipboardMetafile(True);
}
void __fastcall TForm1::Button4Click(TObject *Sender)
{
int xmax, ymax, xt, yt, y0, x0;
double hx,hy,x;
Image1->Canvas->Pen->Color=clBlack;
xmax = Image1->Width; ymax = Image1->Height;
Image1->Canvas->Rectangle(0,0,xmax,ymax);
y0=ymax/2; x0=xmax/2;
Image1->Canvas->MoveTo(0,y0);
Image1->Canvas->LineTo(xmax,y0);
Image1->Canvas->MoveTo(x0,0);
Image1->Canvas->LineTo(x0,ymax);
Image1->Canvas->Pen->Color=clRed; // Установка кольору пера
Image1->Canvas->Pen->Width=2; // Установка ширини пера
hx=(b-a)/xmax; hy=(y_max-y_min)/ymax;
Image1->Canvas->MoveTo(ceil(x0+a/hx),ceil(y0-f(a)/hy));
for(x=a; x<=b; x+=h)
Image1->Canvas->LineTo(ceil(x0+x/hx),ceil(y0-f(x)/hy));
}
double fun0(double r) {
return (((1+pow(r,2.0))/2)*atan(r))-(r/2);
}
double fun1(double r) {
int k=1;
return pow(-1.0,k+1.0)*(pow(r,2.0*k+1.0)/((4.0*pow(k,2.0))-1));
}
double fun2(double r) {
return r*r*r;
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Edit1->Text="-3";
Edit2->Text="0,6";
Edit3->Text="50";
RadioGroup1->ItemIndex = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double x, r;
a=StrToFloat(Edit1->Text);
b=StrToFloat(Edit2->Text);
n=StrToInt(Edit3->Text);
h = (b-a)/n;
switch(RadioGroup1->ItemIndex) {
case 0: f = fun0; break;
case 1: f = fun1; break;
case 2: f = fun2; break;
}
y_min = y_max = f(a);
for (x = a+h; x<=b; x+=h) {
r = f(x);
if(y_min>r) y_min = r;
if(y_max<r) y_max = r;
}
}