Автор работы: Пользователь скрыл имя, 30 Января 2013 в 21:22, контрольная работа
Задание 1.
Pascal
Разработать программу вывода на экран меню следующего вида:
Выбор конкретного режима из этого меню должен осуществляться с помощью клавиш Курсор вверх и Курсор вниз. При нажатии этих клавиш должен генерироваться звук продолжительностью 0,5 с. При этом строка, на которую падает выбор, должна выделяться цветом и фоном. Выбор фиксируется нажатием клавиши Enter. После этого должно быть выдано сообщение о выбранном режиме.
Задание 1.
Pascal
Разработать программу вывода на экран меню следующего вида:
Выбор конкретного режима из этого меню должен осуществляться с помощью клавиш Курсор вверх и Курсор вниз. При нажатии этих клавиш должен генерироваться звук продолжительностью 0,5 с. При этом строка, на которую падает выбор, должна выделяться цветом и фоном. Выбор фиксируется нажатием клавиши Enter. После этого должно быть выдано сообщение о выбранном режиме.
Решение.
uses crt;
const kol=3;{количество пунктов меню}
{массив названий пунктов меню}
vybor:array[1..kol] of string=('Rejim 1','Rejim 2','Rejim 3');
var i,k:byte;
c:char;
begin
textbackground(0);
textcolor(15);
clrscr;
writeln('Viberite rejim:');
for i:=1 to kol do
writeln(vybor[i]);
k:=5;
repeat
repeat
c:=readkey;
until c in [#13, #72, #80];
if c in [#72,#80] then
begin
sound(600);
delay(500);
nosound;
end;
case c of
#72: begin{стрелка вверх}
k:=k-1;
if k=1 then k:=4;{если выше верха, вниз}
for i:=1 to kol do
begin
if i=k-1 then{выделенный пункт}
begin
textbackground(3);
textcolor(9);
end
else{остальные}
begin
textbackground(0);
textcolor(15);
end;
gotoXY(1,i+1);
write(vybor[i]);
end;
end;
#80: begin {стрелка вниз}
k:=k+1;
if k=5 then k:=2;{если ниже низа, вверх}
for i:=1 to kol do
begin
if i=k-1 then{выделенный пункт}
begin
textbackground(3);
textcolor(9);
end
else{остальные}
begin
textbackground(0);
textcolor(15);
end;
gotoXY(1,i+1);
write(vybor[i]);
end;
end;
#13:begin
gotoXY(35,13);
textbackground(6);
textcolor(1);
write('vibran rejim ',k-1);
readln;
exit;
end;
end;
until c=#13;
readln
end.
Построить график функции в графическом режиме.
Ответ:
Решение
Program GraficFun;
uses
Crt,Graph; {подключаем стандартные библиотеки}
type
TFunction=function(x:real):
var
f:TFunction; {объявляем переменную-функцию}
grDriver, {переменная: тип видеоадаптера}
grMode, {переменная: номер видеорежима}
grError:integer; {переменная: результат инициализации}
procedure DrawGrid(a,b:real); {процедура прорисовки осей графика}
var
s:string[4];
max:real;
begin
Line(0,GetMaxY div 2,GetMaxX,GetMaxY div 2);
Line(GetMaxX div 2,0,GetMaxX div 2,GetMaxY);
if a>b then
max:=a
else
max:=b;
Str(-max-0.5:4:1,s);
OutTextXY(0,(GetMaxY div 2)+10,s);
Str(max+0.5:4:1,s);
OutTextXY(600,(GetMaxY div 2)+10,s);
end;
procedure InitMyGraph; {процедура инициализации графического видеорежима}
begin
{автоматическое определение типа драйвера}
grDriver:=Detect;
InitGraph(grDriver,grMode,'');
grError:=GraphResult;
if grError<>grOk then {если возникла ошибка}
begin
writeln('Ошибка инициализации графики');
{вывод текста конкретной ошибки}
writeln(GraphErrorMsg(grError)
Halt(1); {завершение программы, код возврата 1}
end;
end;
{выход из графического режима}
procedure CloseMyGraph;
begin
CloseGraph; {выход из графического режима в текстовый}
end;
{процедура построения графика функции }
procedure DrawFunction(var f:TFunction;a,b,dx:real);
var
i:integer;
x,y:real;
sDx,sDy:real;
y0,x0:integer;
yi,xi:integer;
fmin,fmax:real;
maxy,maxx:real;
n:integer;
s:string;
begin
SetColor(Cyan);
DrawGrid(a,b);
SetColor(Yellow);
n:=round((b-a)/dx);
x:=a;
fmin:=f(x);
fmax:=f(x);
for i:=1 to n do
begin
x:=x+dx;
if f(x)>fmax then
fmax:=f(x);
if f(x)<fmin then
fmin:=f(x);
end;
if abs(fmax)>abs(fmin) then
maxy:=abs(fmax)
else
maxy:=abs(fmin);
if abs(a)>abs(b) then
maxx:=abs(a)
else
maxx:=abs(b);
x:=a;
y:=f(a);
sDy:=2*(maxy+0.5)/(GetMaxY);
sDx:=2*(maxx+0.5)/(GetMaxX);
x0:=(GetMaxX div 2)+Trunc(a/sDx);
y0:=(GetMaxY div 2)-Trunc(y/sDy);
Str(x:4:0,s);
SetColor(Cyan);
OutTextXY(x0-25,250,s);
line(x0,235,x0,245);
for i:=1 to n do
begin
x:=x+dx;
y:=f(x);
xi:=(GetMaxX div 2)+Trunc(x/sDx);
yi:=(GetMaxY div 2)-Trunc(y/sDy);
SetColor(Yellow);
Line(x0,y0,xi,yi);
SetColor(Cyan);
Str(x:4:1,s);
line(xi,235,xi,245);
Str(y:4:1,s);
OutTextXY(320,yi,s);
x0:=xi;
y0:=yi;
end;
Str(x:4:1,s);
OutTextXY(x0-15,250,s);
end;
{$F+}
function tan(t:real):real;
begin
tan:=sin(t)/Cos(t);
end;
function MyFunc(t:real):real;
begin
MyFunc:=tan(t)-1/3*sqr(tan(t))
end;
begin
f:=MyFunc;
InitMyGraph; {инициализация графики}
DrawFunction(f,0,0.8,0.1);
Repeat
until KeyPressed;
ReadKey;
CloseMyGraph;
end.
Разработать форму для ввода исходных данных и вывода результатов, используя компоненты страницы Standard.
Вариант 9
Проверить, можно ли построить параллелограмм из отрезков с длинами x, y, v, w.
Решение
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls;
type
TForm1 = class(TForm)
Edit1: TLabeledEdit;
Edit2: TLabeledEdit;
Edit3: TLabeledEdit;
Edit4: TLabeledEdit;
BitBtn1: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
var x,y,v,w:real;
begin
if (Edit1.Text='') or (Edit2.Text='') or (Edit3.Text='') or (Edit4.Text='') then begin
ShowMEssage('Заполните все поля!');
exit;
end;
x:=StrToFloat(Edit1.Text);
y:=StrToFloat(Edit2.Text);
v:=StrToFloat(Edit3.Text);
w:=StrToFloat(Edit4.Text);
if ((x=y) and (v=w)) or ((x=v) and (y=w)) or ((x=w)
and (y=v)) then ShowMEssage('Построить
else ShowMEssage('Построить Паралеллограмм из задданных отрезков НЕВОЗМОЖНО');
end;
end.
Рисунок 2. Результат выполнения программы
Построить график функции, используя компонент TСhart.
Вариант 9.
Решение
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Series, math;
type
TForm1 = class(TForm)
Chart1: TChart;
Button1: TButton;
Series1: TFastLineSeries;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var x:real;
begin
x:=-9;
while x<=10 do begin
form1.series1.AddXY(x,x-sqrt(
x:=x+0.2;
end;
end;
end.
Рисунок 3. Результат выполнения программы
Разработать приложение в соответствии с заданием. Организовать ввод массивов как из текстовых файлов, так и с клавиатуры. Для представления массивов на экране использовать компоненты StringGrid, ListBox, ComboBox и т. п.
Вариант 9
Для заданной матрицы А(N, N) найти:
- сумму всех элементов;
- сумму элементов главной
- значения наибольшего и
Решение
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Grids, Spin;
type
TForm1 = class(TForm)
SpinEdit1: TSpinEdit;
Label1: TLabel;
StringGrid1: TStringGrid;
Label3: TLabel;
BitBtn1: TBitBtn;
Label4: TLabel;
Button1: TButton;
OpenDialog1: TOpenDialog;
Label2: TLabel;
Label5: TLabel;
procedure BitBtn1Click(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
var i,j:integer;
a:array of array of real;
s,s1,max,min:real;
begin
setlength(a,spinedit1.Value);
for i:=0 to spinedit1.Value-1 do
setlength(a[i],spinedit1.
for i:=0 to Spinedit1.Value-1 do
for j:=0 to Spinedit1.Value-1 do
if StringGrid1.Cells[j,i]<>'' then
a[i,j]:=StrToFloat(
else begin
ShowMessage('Заполните все ячейки!');
exit;
end;
s:=0;
s1:=0;
max:=a[0,0];
min:=a[0,0];
for i:=1 to Spinedit1.Value do
for j:=1 to Spinedit1.Value do begin
s := s + a[i-1][j-1];
if (i=j) then begin s1:=s1+a[i-1][j-1];
if (max<a[i-1][j-1]) then max:=a[i-1][j-1];
if (min>a[i-1][j-1]) then min:=a[i-1][j-1];
end;
end;
Label3.Caption:='Сумма '+
Label4.Caption:='Сумма эл-ов
label2.Caption:='Максимальный
label5.Caption:='Минимальный
end;
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
StringGrid1.RowCount:=
StringGrid1.ColCount:=
end;
procedure TForm1.Button1Click(Sender: TObject);
var F: TextFile;
A: array of array of integer;
i, j: SmallInt;
begin
if not OpenDialog1.Execute then
exit;
AssignFile(F, OpenDialog1.FileName);
Reset(F);
setlength(a,spinedit1.Value);
for i:=0 to spinedit1.Value-1 do
setlength(a[i],spinedit1.
for i:=0 to Spinedit1.Value-1 do
for j:=0 to Spinedit1.Value-1 do
begin
read(F, A[i, j]);
StringGrid1.Cells[j, i]:= IntToStr(A[i, j]);
end;
end;
end.
Рисунок 4. Результат выполнения программы
01.10.2012
Информация о работе Основы алгоритмизации и программирования