Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Контрольная работа №1.Основы алгоритмизации и программирования.Вариант №3..doc
Скачиваний:
78
Добавлен:
01.04.2014
Размер:
158.72 Кб
Скачать

Void __fastcall tForm1::Button1Click(tObject *Sender)

{

exit(0);

}

//---------------------------------------------------------------------------

Результат работы программы:

Ответ: Работу программы проверили для a = 0,1; b = 1,0; h = 0,1; значение параметра n выбрали произвольно (n=10). Значения S и Y для заданного аргумента x практически совпадают, т.к. значение S(x) является рядом разложения функции Y(x).

Z=|Y(x) – S(x)|.

ЗАДАНИЕ 4

По заданию лабораторной работы №3 написать программу расчета выбранной функции Y(x) или S(x) (желательно и |Y(x)–S(x)|), вид которой в свою очередь передается в качестве параметра в функцию вывода (Out_Tabl).

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

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include <math.h>

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

TMemo *Memo1;

double a,b,h,s,y=1,x,r,z;

int k,t,n;

void Out_Tabl(double x)

{

r=1;t=0;s=0;

for (k=0;k<n;k++)

{

if (k==0) t=1;

else t=t*k;

r=(cos((k*M_PI)/4)/t)*pow(x,k);

s=s+r;

}

y=exp(x*cos(M_PI/4))*cos(x*sin(M_PI/4));

z=fabs(y-s);

Form1->Memo1->Lines->Add(FloatToStrF(s,ffFixed,6,6)+" "+FloatToStrF(y,ffFixed,6,6)+" "+FloatToStrF(z,ffFixed,6,15));

}

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

a=StrToFloat(Edit1->Text);

b=StrToFloat(Edit2->Text);

h=StrToFloat(Edit3->Text);

n=StrToInt(Edit4->Text);

Memo1->Lines->Add(" S Y Z ");

for(x=a;x<b;x+=h)

Out_Tabl(x);

}

//---------------------------------------------------------------------------

Void __fastcall tForm1::Button1Click(tObject *Sender)

{

exit(0);

}

//---------------------------------------------------------------------------

Результат работы программы:

Ответ: Для вывода результата использовали функцию пользователя Out_Tabl.

ЗАДАНИЕ 5

Написать программу по обработке одномерных массивов. Размеры массивов вводить с клавиатуры. Предусмотреть возможность ввода данных как с клавиатуры, так и с использованием функции random().

При создании оконного приложения скалярный (простой) результат выводить в виде компоненты Label, а массивы вводить и выводить с помощью компонент StringGrid.

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

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

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include <math.h>

#include <stdlib.h>

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

int i,n,ch,s=0;a[10];

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

randomize();

n=StrToInt(Edit1->Text);

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

s=0;ch=0;

for(i=0;i<n;i++)

a[i]=StrToInt(StringGrid1->Cells[i][0]);

for(i=n;i>0;i--)

if (a[i]>0) {ch=i;

break;}

for(i=0;i<ch;i++)

s=s+a[i];Form1->Label3->Caption=" "+IntToStr(s);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)

{

n=StrToInt(Edit1->Text);

StringGrid1->ColCount=n;

ch=0;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)

{

for (i=0;i<n;i++)

StringGrid1->Cells[i][0]=IntToStr(random(100)-50);

}

//---------------------------------------------------------------------------

Результат работы программы:

Ответ: Предусмотрели возможность ввода массива как с клавиатуры, так и с использованием функции random(). Вычислили сумму элементов массива, расположенных до последнего положительного элемента.

ЗАДАНИЕ 6

Написать программу по обработке динамических массивов. Размеры массивов вводить с клавиатуры. При создании оконного приложения скалярный (простой) результат выводить в виде компоненты Label, а массивы вводить и выводить с помощью компонент StringGrid, в которых 0-й столбец и 0-ю строку использовать для отображе-ния индексов массивов. Из матрицы размером N☓M получить вектор B, присвоив его k-му элементу значение 1, если k-я строка матрицы симметрична, иначе значение 0.

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

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include <math.h>

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

int n,m,**a,*b,i,j,pr,tp1,tp2;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

Edit1->Text="0";

Edit2->Text="0";

StringGrid1->ColCount=n+1;

StringGrid1->RowCount=m+1;

StringGrid1->Cells[0][0]="Матрица N*M";

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

{

StringGrid1->Cells[0][i]="i="+IntToStr(i);

StringGrid1->Cells[i][0]="j="+IntToStr(i);

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Edit1Change(TObject *Sender)

{

if(Edit1->Text=="")

{

ShowMessage("Ошибка!Требуется ввести числовое значение!");

Edit1->Text="0";}

n=StrToInt(Edit1->Text);

m=StrToInt(Edit2->Text);

StringGrid1->ColCount=n+1;

StringGrid1->RowCount=m+1;

StringGrid2->RowCount=m;

StringGrid1->Cells[0][0]="Матрица N*M";

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

StringGrid1->Cells[0][i]="i="+IntToStr(i);

for(i=1;i<=m+1;i++)

StringGrid1->Cells[i][0]="j="+IntToStr(i);

}

//---------------------------------------------------------------------------