Logo GenDocs.ru

Поиск по сайту:  

Загрузка...

Контрольная работа - Отчет по вычислительной практике - файл отчёт о выч практике.docx


Контрольная работа - Отчет по вычислительной практике
скачать (516.7 kb.)

Доступные файлы (6):

отчёт о выч практике.docx30kb.24.11.2009 01:03скачать
Схемы Алгоритмов 2 задание.docx52kb.15.06.2009 18:52скачать
Схемы Алгоритмов 3 задание.docx96kb.15.06.2009 20:25скачать
Схемы Алгоритмов 4 задание.docx51kb.15.06.2009 21:28скачать
схемы алгоритмов.docx61kb.14.06.2009 19:29скачать
Тесты выч практика.docx322kb.14.06.2009 16:23скачать

содержание
Загрузка...

отчёт о выч практике.docx

Реклама MarketGid:
Загрузка...
Министерство образования и науки Российской Федерации

Курский государственный технический университет

Кафедра Программного обеспечения ВТ


Отчёт по

вычислительной практике


Выполнил: ст. гр. ПО-82 Чурилов С.


Проверил: доц. Белова Т.М.


Курск 2009




Задание №1 (Delphi)

Среди простых чисел, не превосходящих N, найти такое, в двоичной записи которого максимальное число единиц.


Код программы

unit UnMain;


interface


uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Math, ActnList;


type

TFMain = class(TForm)

LbYsl: TLabel;

EdInput: TEdit;

BtOk: TButton;

LbOutput: TLabel;

ActionList: TActionList;

Lb2: TLabel;

BtClear: TButton;

acWork: TAction;

procedure acWorkExecute(Sender: TObject);

procedure BtClearClick(Sender: TObject);

private

{ Private declarations }

public

end;


function CheckValue(s:string):boolean;{функция возвращает значение True, если строка S состоит из чисел (0-9)}

function DecToBin(s:string):string;{функция возвращает двоичный вид (строковый) десятичного числа(строковый)}

function kolich1(s:string):integer;{функция возвращает количество единиц в строке S}


const

masProst: array [1..320] of integer = (2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173,

179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281,

283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409,

419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541,

547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659,

661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809,

811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941,

947, 953, 967, 971, 977, 983, 991, 997, 1009, 1013, 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069,

1087, 1091, 1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, 1153, 1163, 1171, 1181, 1187, 1193, 1201, 1213, 1217, 1223,

1229, 1231, 1237, 1249, 1259, 1277, 1279, 1283, 1289, 1291, 1297, 1301, 1303, 1307, 1319, 1321, 1327, 1361, 1367, 1373,

1381, 1399, 1409, 1423, 1427, 1429, 1433, 1439, 1447, 1451, 1453, 1459, 1471, 1481, 1483, 1487, 1489, 1493, 1499, 1511,

1523, 1531, 1543, 1549, 1553, 1559, 1567, 1571, 1579, 1583, 1597, 1601, 1607, 1609, 1613, 1619, 1621, 1627, 1637, 1657,

1663, 1667, 1669, 1693, 1697, 1699, 1709, 1721, 1723, 1733, 1741, 1747, 1753, 1759, 1777, 1783, 1787, 1789, 1801, 1811,

1823, 1831, 1847, 1861, 1867, 1871, 1873, 1877, 1879, 1889, 1901, 1907, 1913, 1931, 1933, 1949, 1951, 1973, 1979, 1987,

1993, 1997, 1999, 2003, 2011, 2017, 2027, 2029, 2039, 2053, 2063, 2069, 2081, 2083, 2087, 2089, 2099, 2111, 2113, 2129



);


var

FMain: TFMain;


implementation


{$R *.dfm}


function CheckValue(s:string):boolean; {функция возвращает значение True, если строка S состоит из чисел (0-9)}

var

i:integer;

begin

try

for i:=1 to Length(s) do

if (Copy(s,i,1)='0') or (Copy(s,i,1)='1') or (Copy(s,i,1)='2') or (Copy(s,i,1)='3') or (Copy(s,i,1)='4') or (Copy(s,i,1)='5') or (Copy(s,i,1)='6') or (Copy(s,i,1)='7') or (Copy(s,i,1)='8') or (Copy(s,i,1)='9') then

result:=true

else

begin

result:=false;

break;

end;

finally

end;

end;


function DecToBin(s:string):string; {функция возвращает двоичный вид (строковый) десятичного числа(строковый)}

var

chis,i:integer;

res:string[12];

begin

chis:=StrToInt(s);

for i:=12 downto 1 do

begin

if (chis mod 2 <> 0) then res[i]:='1'

else res[i]:='0';

chis:=trunc(chis/2);

end;

for i:=1 to 12 do

result:=result+res[i];

end;


function Kolich1(s:string):integer; {функция возвращает количество единиц в строке S}

var

i:integer;

begin

result:=0;

for i:=1 to 12 do

if Copy(s,i,1)='1' then result:=result+1;

end;


procedure TFMain.acWorkExecute(Sender: TObject);

var

chis, i:integer;

begin

if CheckValue(EdInput.Text)=false then

showmessage('!Недопустимое значение!')

else

if not((StrToInt(FMain.EdInput.Text)>2) and (StrToInt(FMain.EdInput.Text)<2130)) then

showmessage('Введите целое число от 2 до 2130')

else

begin

chis:=masProst[1];

for i:=2 to 320 do

begin

if masProst[i]<StrToInt(EdInput.Text) then

begin



if kolich1(DecToBin(IntToStr(chis)))<kolich1(DecToBin(IntToStr(masProst[i]))) then chis:=masProst[i];

end

else

break;

end;

LbOutput.Caption:='Простое максимальное число с максимальным количеством единиц в двоичном коде = '+IntToStr(chis);

^ Lb2.Caption:='Двоичный вид числа = '+DecToBin(IntToStr(chis));

end;

end;


procedure TFMain.BtClearClick(Sender: TObject);

begin

EdInput.Text:='';

LbOutput.Caption:='Простое максимальное число с максимальным количеством единиц в двоичном коде =';

^ Lb2.Caption:='Двоичный вид числа =';

end;


end.




Задание №2 (Delphi)

Для заданной матрицы размером 10*10 найти такие k, что k-я строка матрицы совпадает с k-м столбцом.


^ Код программы

Unit UnMain;


interface


uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Grids;


type

TFMain = class(TForm)

LbYsl: TLabel;

SGMatr: TStringGrid;

BtWork: TButton;

BtVvod: TButton;

BtAuto: TButton;

LbOtvet: TLabel;

BtCancel: TButton;

procedure FormCreate(Sender: TObject);

procedure BtAutoClick(Sender: TObject);

procedure BtCancelClick(Sender: TObject);

procedure BtVvodClick(Sender: TObject);

procedure BtWorkClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;


function CheckValue(s:string):boolean; {функция возвращает значение True, если строка S состоит из чисел (0-9)}

function CheckLength(s:string):boolean; {функция возвращает значение True, если в строке S кол-во символов не больше N}


var

FMain: TFMain;

mas: array [1..10, 1..10] of integer;


implementation


{$R *.dfm}


procedure TFMain.FormCreate(Sender: TObject);

var

i:integer;

begin

for i:=1 to 10 do

begin

SGMatr.Cells[i,0]:=IntToStr(i);

SGMatr.Cells[0,i]:=IntToStr(i);

end;

end;


procedure TFMain.BtAutoClick(Sender: TObject);

var

i,j:integer;

begin

Randomize;

for i:=1 to 10 do

for j:=1 to 10 do

begin

mas[i,j]:=random(9)+1;

SGMatr.Cells[j,i]:=IntToStr(mas[i,j]);

end;

BtAuto.Enabled:=false;

BtVvod.Enabled:=false;

BtCancel.Enabled:=true;

BtWork.Enabled:=true;



SGMatr.Enabled:=false;

end;


procedure TFMain.BtCancelClick(Sender: TObject);

var

i,j:integer;

begin

for i:=1 to 10 do

for j:=1 to 10 do

SGMatr.Cells[j,i]:='';

BtAuto.Enabled:=true;

BtVvod.Enabled:=true;

BtCancel.Enabled:=false;

BtWork.Enabled:=false;

SGMatr.Enabled:=true;

LbOtvet.Caption:='Строка\ Столбец\ Число\; ';

end;


function CheckValue(s:string):boolean; {функция возвращает значение True, если строка S состоит из чисел (0-9)}

var

i:integer;

begin

try

for i:=1 to Length(s) do

if (Copy(s,i,1)='0') or (Copy(s,i,1)='1') or (Copy(s,i,1)='2') or (Copy(s,i,1)='3') or (Copy(s,i,1)='4') or (Copy(s,i,1)='5') or (Copy(s,i,1)='6') or (Copy(s,i,1)='7') or (Copy(s,i,1)='8') or (Copy(s,i,1)='9') then

result:=true

else

begin

result:=false;

break;

end;

finally

end;

end;


function CheckLength(s:string):boolean; {функция возвращает значение True, если в строке S кол-во символов не больше N}

const N=2;

begin

if Length(S)<=N then

result:=true

else

result:=false;

end;


procedure TFMain.BtVvodClick(Sender: TObject);

var

i,j,q:integer;

q1,q2:boolean;

begin

q1:=true;

q2:=true;

q:=0;

for i:=1 to 10 do

begin{}

if q1=false then break;

if q2=false then break;

for j:=1 to 10 do

if CheckLength(SGMatr.Cells[j,i])=false then

begin

ShowMessage('Вводить можно не более 2-х символов');

q1:=false;

break;

end

else

begin

if CheckValue(SGMatr.Cells[j,i])=false then

begin

ShowMessage('!Недопустимое значение!');

q2:=false;

break;



end

else

begin

mas[i,j]:=StrToInt(SGMatr.Cells[j,i]);

q:=q+1;

end;

end;

end;{}

if q=100 then

begin

BtAuto.Enabled:=false;

BtVvod.Enabled:=false;

BtCancel.Enabled:=true;

BtWork.Enabled:=true;

SGMatr.Enabled:=false;

showmessage('Данные успешно введены');

end;

end;


procedure TFMain.BtWorkClick(Sender: TObject);

var

i,j,q:integer;

begin

LbOtvet.Caption:='';

q:=0;

for i:=1 to 10 do

for j:=1 to 10 do

if (i=j) and (i=mas[i,j]) then

begin

q:=q+1;

LbOtvet.Caption:=LbOtvet.Caption+IntToStr(i)+'\ '+IntToStr(j)+'\ '+IntToStr(mas[i,j])+'\; ';

end;

if q=0 then

ShowMessage('Таких чисел К не найдено');

end;


end.




Задание №3 (C++)

Дана последовательность , содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 строчных латинских букв; между соседними словами – запятая, за последним словом точка. Напечатать те слова, перед которыми в последовательности находятся только меньшие (по алфавиту) слова, а за ними – только большие.


^ Код программы

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


#include <vcl.h>

#pragma hdrstop


#include "UnMain.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TFMain *FMain;

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

int **paramw;

int l,j;

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

int fQuantityComma(AnsiString s); //считает кол-во запятых в строке

bool fFindBlank(AnsiString s); //поиск пробела в строке (если находит то true)

bool fCheckLength(AnsiString s); //проверка длины слов true -норм длина

void fCalcParam(AnsiString s); //обсчёт параметров

void fShowMas(); //Вывод массива

AnsiString fChangeStr(AnsiString s, int i); //меняем 2 рядом стоящие

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

__fastcall TFMain::TFMain(TComponent* Owner)

: TForm(Owner)

{

}

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

int fQuantityComma(AnsiString s) //считает кол-во запятых в строке

{

int pos=0,kolz=0;

for (int i=1;i-2<=s.Length();i++)

{

pos=s.Pos(',');

if (pos!=0)

{

kolz=kolz+1;

s.Delete(1,pos);

}

}

return kolz;

}


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

bool fFindBlank(AnsiString s) //поиск пробела в строке (если находит то true)

{

int pos=0;

pos=s.Pos(' ');

if (pos!=0)

return true;

else

return false;

}


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

bool fCheckLength(AnsiString s) //проверка длины слов true -норм длина

{

int pos=0;

bool check;

for (int i=0;i-2<=s.Length();i++)

{

if ( (s.Pos(',')==1) || (s.Length()!=s.Pos('.')) || (s.Pos(',')>6) )

{

check=false;

break;

}



else

check=true;

pos=s.Pos(',');

if (pos!=0)

s.Delete(1,pos);

}

return check;

}


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

void fCalcParam(AnsiString s) //обсчёт параметров

{

int q=0,l=fQuantityComma(s);

for (int i=0;i<l;i++)

{

if (i==0) paramw[0][i]=q+1;

else paramw[0][i]=paramw[0][i-1]+q;

q=0;

q=q+s.Pos(',');

s.Delete(paramw[0][i],q);

paramw[1][i]=q;

}

}


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

void fShowMas() //Вывод массива

{

for (int i=0;i<l;i++)

{

FMain->Label1->Caption=FMain->Label1->Caption+" /"+paramw[0][i]+", "+paramw[1][i]+"/ ";

}

FMain->Label1->Caption=FMain->Label1->Caption+" # ";

}

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

AnsiString fChangeStr(AnsiString s, int i) //меняем 2 рядом стоящие

{

AnsiString s1,s2;

s1=s.SubString(paramw[0][i],paramw[1][i]);

s2=s.SubString(paramw[0][i+1],paramw[1][i+1]);

if (AnsiCompareText(s1,s2)<0)

{//3

s.Delete(paramw[0][i],paramw[1][i]+paramw[1][i+1]);

s.Insert(s2,paramw[0][i]);

s.Insert(s1,paramw[0][i]+paramw[1][i+1]);

j++;

}

return s;

}


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

void __fastcall TFMain::BtWorkClick(TObject *Sender)

{

if (fFindBlank(EdVvod->Text)==true)

ShowMessage("найдены недопустимые пробелы");

else

if (fCheckLength(EdVvod->Text)==false)

ShowMessage("несоответствие требований ввода");

else

{

//ввод слов

AnsiString Vvod=EdVvod->Text;

Vvod[Vvod.Pos('.')]=',';

l=fQuantityComma(Vvod);

paramw=new int *[2];

for (int i=0;i<2;i++)

paramw[i]=new int[l];


bool fl=true;


while (fl)

{//1

fl=false; j=0;

fCalcParam(Vvod);

for (int i=0;i<l-1;i++)



{//2

Vvod=fChangeStr(Vvod,i);

fCalcParam(Vvod);

if (j>0) fl=true;

}//2

}//1

LbOtvet->Caption=Vvod;

}


}

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


void __fastcall TFMain::BtClearClick(TObject *Sender)

{

EdVvod->Text="";

LbOtvet->Caption="";

}

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




Задание №4 (С++)

Даны два множества точек на плоскости. Найти центр и радиус окружности, проходящей через 3 точки первого множества и содержащей строго внутри себя M точек второго множества.


^ Код программы

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


#include <vcl.h>

#include <math.h>

#pragma hdrstop


#include "UnMain.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

struct sCentr

{

float x;

float y;

float r;

};

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

int xn1[2][3], mn2, vm;

int **xn2;

sCentr centr;

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

void fFind_X_Y_R(); //íàõîäèò õ0 ó0 è ðàäèóñ

bool fCheckOccurence(); //âîçâðàùàåò true , åñëè ÷èñëî âõîæäåíèé ðàâíî vm

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

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

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


void __fastcall TForm1::BtVvtClick(TObject *Sender)

{

mn2=StrToInt(EdVn2->Text);

vm=StrToInt(EdVm->Text);

xn2=new int *[2];

for (int i=0;i<2;i++)

xn2[i]=new int[mn2];

SGN2->RowCount=mn2+1;

GBkt->Enabled=false;

GBKoor->Visible=true;

}

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


void __fastcall TForm1::FormCreate(TObject *Sender)

{


SGN1->Cells[0][0]="X";

SGN1->Cells[1][0]="Y";

SGN2->Cells[0][0]="X";

SGN2->Cells[1][0]="Y";


}


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


void fFind_X_Y_R() //íàõîäèò õ0 ó0 è ðàäèóñ

{

float s1=pow(pow(xn1[0][1]-xn1[0][0],2)+pow(xn1[1][1]-xn1[1][0],2),0.5);

float s2=pow(pow(xn1[0][2]-xn1[0][1],2)+pow(xn1[1][2]-xn1[1][1],2),0.5);

float s3=pow(pow(xn1[0][2]-xn1[0][0],2)+pow(xn1[1][2]-xn1[1][0],2),0.5);

float p=(s1+s2+s3)/2;

float s=pow((p*(p-s1)*(p-s2)*(p-s3)),0.5);

centr.r=int(s1*s2*s3)/int(4*s);




centr.y=int(xn1[0][1]*xn1[0][2]*xn1[0][2]-xn1[0][0]*xn1[0][2]*xn1[0][2]-xn1[0][1]*xn1[0][0]*xn1[0][0]+xn1[0][0]*xn1[0][0]*xn1[0][0]+xn1[0][1]*xn1[1][2]*xn1[1][2]-xn1[0][0]*xn1[1][2]*xn1[1][2]-xn1[0][1]*xn1[1][0]*xn1[1][0]-xn1[0][2]*xn1[0][1]*xn1[0][1]+xn1[0][0]*xn1[0][1]*xn1[0][1]+xn1[0][2]*xn1[0][0]*xn1[0][0]-xn1[0][0]*xn1[0][0]*xn1[0][0]-xn1[0][2]*xn1[1][1]*xn1[1][1]+xn1[0][0]*xn1[1][1]*xn1[1][1]+xn1[0][2]*xn1[1][0]*xn1[1][0])/

(2*((xn1[0][2]-xn1[0][0])*(xn1[1][0]-xn1[1][1])+(xn1[0][0]-xn1[0][1])*(xn1[1][0]-xn1[1][2])));


centr.x=int(pow((centr.r*centr.r-pow((centr.y-xn1[1][0]),2)),0.5)+xn1[0][0]);

}


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


bool fCheckOccurence() //âîçâðàùàåò true , åñëè ÷èñëî âõîæäåíèé ðàâíî vm

{

int q=0;

for (int i=0;i<mn2;i++)

if (pow((pow((centr.x-xn2[0][i]),2)+pow((centr.y-xn2[1][i]),2)),0.5)<centr.r)

{

q=q+1;

}

if (q==vm)

return true;

else

return false;

}

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


void __fastcall TForm1::PBMainPaint(TObject *Sender)

{

PBMain->Canvas->Ellipse((centr.x-centr.r),(centr.y-centr.r),

(centr.x+centr.r),(centr.y+centr.r));

for (int i=0;i<3;i++)

{

PBMain->Canvas->Pen->Color=clGreen;

PBMain->Canvas->Ellipse((int)xn1[0][i]-2,(int)xn1[1][i]-2,(int)xn1[0][i]+2,(int)xn1[1][i]+2);

}

for (int i=0;i<mn2;i++)

{

PBMain->Canvas->Pen->Color=clRed;

PBMain->Canvas->Ellipse((int)xn2[0][i]-2,(int)xn2[1][i]-2,(int)xn2[0][i]+2,(int)xn2[1][i]+2);

};

}

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


void __fastcall TForm1::BtWorkClick(TObject *Sender)

{

fFind_X_Y_R();

Label1->Caption="ðàäèóñ= "+FloatToStr(centr.r)+" x0= "+FloatToStr(centr.x)+" y0= "+FloatToStr(centr.y);

Label3->Color=clMaroon;

Label3->Font->Name="Book Antiqua";

if (fCheckOccurence()==true)

{Label3->Caption="Task complete";}

else {Label3->Caption="Task don't complete";}

PBMain->Visible=true;

Label1->Visible=true;

Label3->Visible=true;

Label2->Visible=true;

Button1->Visible=true;

PBMain->Repaint();

}

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


void __fastcall TForm1::PBMainMouseDown(TObject *Sender,

TMouseButton Button, TShiftState Shift, int X, int Y)

{

Label2->Caption="x= "+IntToStr(X)+"y= "+IntToStr(Y);

}



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


void __fastcall TForm1::BtAutoVClick(TObject *Sender)

{

randomize;

xn1[0][0]=random(140)+181;

xn1[1][0]=random(82)+80;

xn1[0][1]=random(148)+500;

xn1[1][1]=random(109)+95;

xn1[0][2]=random(134)+291;

xn1[1][2]=random(61)+260;

for (int i=0;i<mn2;i++)

{

xn2[0][i]=random(500)+100;

xn2[1][i]=random(300)+100;

}


for (int i=0;i<3;i++)

{

SGN1->Cells[0][i+1]=IntToStr(xn1[0][i]);

SGN1->Cells[1][i+1]=IntToStr(xn1[1][i]);

}

for (int i=0;i<mn2;i++)

{

SGN2->Cells[0][i+1]=IntToStr(xn2[0][i]);

SGN2->Cells[1][i+1]=IntToStr(xn2[1][i]);

}

BtWork->Visible=true;

}

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


void __fastcall TForm1::Button1Click(TObject *Sender)

{

BtWork->Visible=false;

PBMain->Visible=false;

Label1->Visible=false;

Label3->Visible=false;

Label2->Visible=false;

GBkt->Enabled=true;

GBKoor->Visible=false;

Button1->Visible=false;

}

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


Скачать файл (516.7 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации