bsuir.info
БГУИР: Дистанционное и заочное обучение
(файловый архив)
Вход (быстрый)
Регистрация
Категории каталога
Другое [58]
Форма входа
Логин:
Пароль:
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Файловый архив
Файлы » ТОБ / ЭСБ » Другое

Заочка кр №1 ОАиП 1курс ЭСБ O-PASCAL в среде Delphi Лаб(1-5) Вариант 10
Подробности о скачивании 10.05.2013, 19:59
Задание№1
(Тема: Программирование линейных алгоритмов) <br /><br /> Условие:
Написать программу вычисления значения выражения при заданных исходных данных. Сравнить полученное значение с указанным правильным результатом.
формула !ZZZZZZZZZZZZ!
при: x = 3,981*10-2; y = –1,625*103; z = 0,512. Ответ: s = 1,26185. <br /><br /> Решение:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit3: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var x,y,z,a:extended;
begin
Memo1.Clear;
Memo1.Lines.Add('Исходные данные:');
x:=StrToFloat(Edit1.Text);
Memo1.Lines.Add('X= '+FloatToStrF(x,fffixed,8,5));
y:=StrToFloat(Edit2.Text);
Memo1.Lines.Add('Y= '+FloatToStrF(y,fffixed,8,0));
z:=StrToFloat(Edit3.Text);
Memo1.Lines.Add('Z= '+FloatToStrF(z,fffixed,8,3));
a:=1/exp(ln(2)*x)*Sqrt(x+Sqrt(Sqrt(abs(y))))*exp(ln(Exp(x-1/sin(z)))*1/3);
Memo1.Lines.Add('Результат A= '+FloatToStrF(a,fffixed,8,5));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:='3,981E-2';
Edit2.Text:='-1,625E3';
Edit3.Text:='0,512';
Memo1.Clear;
end;
end. <br /><br /> <br /><br /> Задание№2
(Тема: Программирование разветвляющихся алгоритмов) <br /><br /> Условие:
Составить программу вычисления. Предусмотреть вывод информации о выбранной ветви вычислений. В качестве f(x) использовать по выбору: Sin(x), Cos(x) или Tg(x).
формула !!!ЯЯЯЯЯЯЯ!!!
Решение:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
CheckBox1: TCheckBox;
RadioGroup1: TRadioGroup;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Memo1: TMemo;
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var x,q,u,k:extended;
begin
Memo1.Clear;
Memo1.Lines.Add('Лаб. раб. №2 ФЗО ЭСБ 203201 Федосенко А.В.');
x:=StrToFloat(Edit1.Text);
q:=StrToFloat(Edit2.Text);
Memo1.Lines.Add('x='+FloatToStrF(x,ffFixed,8,2));
Memo1.Lines.Add('q='+FloatToStrF(q,ffFixed,8,2));
case RadioGroup1.ItemIndex of
0: u:=sin(x);
1: u:=cos(x);
2: u:=sin(x)/cos(x);
end;
if u>10 then k:=ln(x+abs(q)) else
if u<10 then k:=exp(x+q)+sin(x) else k:=x+3*cos(q);
if CheckBox1.Checked then
Memo1.Lines.Add('Результат равен '+IntToStr(Round(k)))
else
Memo1.Lines.Add('Результат равен '+FloatToStrF(k,ffGeneral,8,2));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.text:='1';
Edit2.text:='1';
Memo1.Clear;
Memo1.Lines.Add('Лаб. раб. №2 ФЗО ЭСБ 203201 Федосенко А.В.');
RadioGroup1.ItemIndex:=0;
end;
end. <br /><br /> Задание№3
(Тема: Программирование циклических алгоритмов) <br /><br /> Условие: <br /><br /> Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) для x изменяющихся от xn до xk с заданным количеством шагов n ( !!!ЯЯЯЯЯ!!). Близость значений S(x) и Y(x) во всем диапазоне значений x указывает на правильность вычисления S(x) и Y(x).
=0.1, =0.5, S(x)= !!!ЯЯЯ!!! , n=60, Y(x)= !!!ЯЯЯЯ!!! <br /><br /> Решение:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, math;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Button1: TButton;
Memo1: TMemo;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label5: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:='0,1';
Edit2.Text:='0,5';
Edit3.Text:='0,25';
Edit4.Text:='0,0001';
Memo1.Clear;
end;
procedure TForm1.Button1Click(Sender: TObject);
var xn,xk,x,h,e,a,s,y :extended;
n:integer;
begin
Memo1.Clear;
Memo1.Lines.Add('Результаты №3 ФЗО ЭСБ 203201 Федосенко А.В.');
xn:=StrToFloat(Edit1.Text);
Memo1.Lines.Add(' xn='+FloatToStrF(xn,ffFixed,6,1));
xk:=StrToFloat(Edit2.Text);
Memo1.Lines.Add(' xk='+FloatToStrF(xk,ffFixed,6,1));
h:=StrToFloat(Edit3.Text);
Memo1.Lines.Add(' h='+FloatToStrF(h,ffFixed,8,2));
e:=StrToFloat(Edit4.Text);
Memo1.Lines.Add(' e='+FloatToStrF(e,ffFixed,8,4));
x:=xn;
repeat
a:=x; S:=a; n:=0;
while (abs(a)>e) do begin
n:=n+1;
a:=-a*Sqr(x);
s:=s+a/(2*n+1);
end;
y:=ArcTan(x);
Memo1.Lines.Add('при x='+FloatToStrF(x,ffFixed,6,2)+' сумма ='
+ FloatToStrF(s,ffFixed,8,4)+' y ='
+ FloatToStrF(y,ffFixed,8,4)+' N ='+IntToStr(n));
x:=x+h;
until x>(xk+h/4)
end;
end. <br /><br /> Задание№4
(Тема: Программирование с использованием одномерных массивов) <br /><br /> Условие:
Задан двухмерный массив целых чисел A размером M на N. Найти минимальный элемент, расположенный ниже побочной диагонали.
Решение: <br /><br /> unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Math, Mxarrays, Grids, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
StringGrid1: TStringGrid;
Button2: TButton;
StringGrid2: TStringGrid;
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
Nmax=10;
Type
mas2 = array[1..Nmax,1..Nmax] of extended;
mas1 = array[1..Nmax,1..Nmax] of extended;
var
Form1: TForm1;
A:mas2;
B:mas1;
N,M,i,k:integer;
max:extended;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
N:=3;
M:=3;
edit1.Text:=floattostr(N);
edit2.Text:=floattostr(M);
stringgrid1.RowCount:=N+1;
stringgrid1.ColCount:=M+1;
stringgrid2.colcount:=M+1;
stringgrid1.Cells[0,0]:='Массив À:';
stringgrid2.Cells[0,0]:='Массив B:';
randomize();
for i:=1 to N do
begin
for k:=1 to M do
begin
stringgrid1.Cells[k,i]:=inttostr(random(40)-20);
end;
end;
for i:=1 to N do
stringgrid1.Cells[0,i]:='i='+inttostr(i);
for k:=1 to M do
begin
stringgrid2.Cells[k,0]:='max'+inttostr(k);
stringgrid1.Cells[k,0]:='k='+inttostr(k);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
N:=strtoint(edit1.Text);
M:=strtoint(edit2.Text);
stringgrid1.RowCount:=N+1;
stringgrid1.ColCount:=M+1;
stringgrid2.colcount:=M+1;
for i:=1 to N do stringgrid1.Cells[0,i]:='i='+inttostr(i);
for k:=1 to M do stringgrid1.Cells[k,0]:='k='+inttostr(k);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
try
for i:=1 to N do
for k:=1 to M do
A[k,i]:=strtofloat(stringgrid1.Cells[k,i]);
except
on ERangeError do
begin
ShowMessage(‘Выход за пределы массива. Уменьшите размер массива’); Exit;
end;
on EConvertError do
begin
ShowMessage('В ячейке отсутствует значение либо число введено неправильно'); Exit;
end;
else
begin
ShowMessage('Возникла неизвестная исключительная ситуация!'); Exit;
end;
end;
try
for k:=1 to M do
begin
max:=A[k,1];
for i:=1 to N do
begin
if A[k,i]>max then max:=A[k,i]
end;
stringgrid2.Cells[k,1]:=floattostr(max);
end;
except
on EOverFlow do
begin
MessageDlg(‘Перевыполнение при выполнении операции с плавающей точкой’,mtError,[mbCancel],0); Exit;
end;
else
begin
MessageDlg('Возникла неизвестная исключительная ситуация!',mtError,[mbCancel],0); Exit;
end;
end;
end;
end. <br /><br /> Задание№5
(Тема: Указатели. Программирование с использованием
динамических двумерных массивов)
Условие: <br /><br /> Составьте программу, оформив вычисления в виде подпрограммы (процедуры или функции). В головной программе произвести ввод исходных данных, вызов подпрограммы и вывод результатов.
Дана квадратная целочисленная матрица N-го порядка. Упорядочить элементы в столбцах по убыванию.
Решение: <br /><br /> #include <iostream.h>
#include <iomanip.h>
#include <math.h>
int main()
{
double **a;
int i, j, n, m, imin, jmin;
cout << "Vvedite razmer: n, m" << endl;
cin >> n >> m;
a = new double*[n]; // Выделение памяти под массив указателей
for(i=0; i<n; i++) // Выделение памяти под соответствующие
a[i] = new double[m]; // этим указателям строки матрицы
for (i=0; i<n; i++)
for (j=0; j<m; j++) // Ввод двумерного массива
{
cout << "Vvedite a[" << i << "][" << j << "]: " ;
cin >> a[i][j];
}
cout << "Massiv A:" << endl; // Вывод двумерного массива
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
cout << setw (9) << a[i][j] << " ";
cout << endl;
}
imin=1; // Присваиваем min первому элементу под главной диагональю
jmin=0;
for(i=2;i<n;i++) // условия сравнения элементов
for(j=0;j<i;j++)
{
if( a[i][j]< a[imin][jmin]) // Поиск минимального значения
{ imin=i;
jmin=j; }
}
cout << "Min = " << a[imin][jmin]<< endl;
for(i=0; i<n; i++)
delete[]a[i];
delete[]a;
return 0;
}
Категория: Другое | Добавил: Kotavr
Просмотров: 1247 | Загрузок: 13
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]