ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 07.08.2024
Просмотров: 20
Скачиваний: 0
Звіт до лабораторної роботи №3
Тема: Визначення функції. Звернення до функції.
Мета: Ознайомитися з використанням функцій, скласти та влагодити програму з використанням функцій.
Склад групи:
-
Кузін А.Д.
-
Петруша І.О.
-
Науменко Ю.В.
-
Нестерова І.В.
-
Шевченко В.В.
Завдання:
1
• Скласти програму для знаходження найменшого загального кратного трьох натуральних чисел.
• Написати програму для знаходження суми більшого і меншого з трьох чисел.
• Обчислити площу правильного шестикутника із стороною а, використовуючи підпрограму обчислення площі трикутника.
2
• Дані натуральні числа K і N. Скласти програму формування масиву А, елементами якого є числа, сума цифр яких рівна K і які не більше N.
• Дано три квадратні матриці А, В, C n-го порядку. Вивести на друк ту з них, норма якої найменша. Пояснення. Нормой матриці назвемо максимум з абсолютних величин її елементів.
• Два натуральні числа називаються «дружніми», якщо кожне з них дорівнює сумі всіх дільників (окрім його самого) іншого числа (наприклад, числа 220 і 284). Знайти всі пари «дружніх чисел», які не більше даного числа N.
• Два прості числа називаються «близнятами», якщо вони відрізняються один від одного на 2 (наприклад, 41 і 43). Надрукувати всі пари «близнят» з відрізrка [n, 2n], де n — задане натуральне число більше 2
3 Ракета запускается с точки на земле и развивает скорость v км/с. Каков результат запуска? Замечание: если v <7,8 км/с, то ракета упадет на Землю, если 7,8< v <11,2, то ракета станет спутником Земли, если 11,2< v < 16,4, то ракета станет спутником Солнца, если v >16,4, то ракета покинет Солнечную систему.
4
• Написати програму, що визначає суму цифр n-значного числа, що містить лише непарні цифри. Визначити також, скільки парних цифр в знайденій сумі.
• Дано натуральне число n. Знайти всі числа Мерсена менші n. (Просте число називається числом Мерсена, якщо воно може бути представлене у вигляді 2^(p — 1). Наприклад, 31 = 2^5 — 1 — число Мерсена.)
• Вирішити завданя, використовуючи рекурсивну підпрограму: підрахувати кількість цифр в заданому натуральному числі.
Приклади роботи з програмою:
Код програми:
#include <vcl.h>
#pragma hdrstop
#include "math.h"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
int NSK(int,int);
int NSD(int,int);
float max(float,float);
float min(float,float);
float Plosha(float);
float Apofema(float);
int index=0,razm=3;
int pods(int sum, int number)
{
return !number ? sum : pods(sum + 1, number / 10);
}
int podc(int number)
{
return !number ? 1 : pods(0, number);
}
int prv(int n)
{
register int d;
for (d=2; d<=n/2; d++)
if (n%d==0)
return 0;
return 1;
}
int NSD(int x,int y)
{
while(x!=y)
{
if(x<y) y-=x;
else x-=y;
}
return x;
}
int NSK(int x, int y)
{
return x*y/NSD(x,y);
}
float max(float x,float y)
{
if(x>y)
return x;
else
return y;
}
float min(float x,float y)
{
if(x<y)
return x;
else
return y;
}
float Plosha(float x)
{
return 0.5*x*Apofema(x);
}
float Apofema(float x)
{
return x/(2*tan(3.14/6));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int k,i,n,c,s=0;
index=0;
k=StrToInt(Edit1->Text);
n=StrToInt(Edit2->Text);
if (n>5000) {ShowMessage("Число n занадто велике"); Edit2->SetFocus(); return;}
if (k>=n || k>30 || k<=0) {ShowMessage("Число k не входить в допустимі межі"); Edit1->SetFocus(); return;}
//for (i=k;i<n;i++) {
i=k;
while (i<n) {
c=i%10; s=c;
c=(i/10)%10; s=s+c;
c=(i/100)%10; s=s+c;
c=(i/1000)%10; s=s+c;
if (s == k) {StringGrid1->ColCount=index+1;StringGrid1->Cells[index][0]=IntToStr(i);
index++; }
if (index>18) StringGrid1->Height=39;
i++;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if (IsCharAlpha(Key) || Key=='.' || Key==',' || Key=='-') Key=0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit2KeyPress(TObject *Sender, char &Key)
{
if (IsCharAlpha(Key) || Key=='.' || Key==',' || Key=='-') Key=0;
}
//----------------------------------------------------------------------
void __fastcall TForm1::Edit3KeyPress(TObject *Sender, char &Key)
{
if (IsCharAlpha(Key) || Key=='.' || Key==',' || Key=='-') Key=0;
}
//----------------------------------------------------------------------
void __fastcall TForm1::StringGrid2KeyPress(TObject *Sender, char &Key)
{
if (IsCharAlpha(Key) || Key=='.' || Key==',') Key=0;
}
//----------------------------------------------------------------------
void __fastcall TForm1::StringGrid3KeyPress(TObject *Sender, char &Key)
{
if (IsCharAlpha(Key) || Key=='.' || Key==',') Key=0;
}
//----------------------------------------------------------------------
void __fastcall TForm1::StringGrid4KeyPress(TObject *Sender, char &Key)
{
if (IsCharAlpha(Key) || Key=='.' || Key==',') Key=0;
}
//----------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Edit1->Clear();
Edit2->Clear();
for (int i=0;i<index;i++)
StringGrid1->Cells[i][0]="";
}
//----------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
for (int i=0;i<razm;i++)
for(int j=0;j<razm;j++)
{ StringGrid2->Cells[i][j]="";
StringGrid3->Cells[i][j]="";
StringGrid4->Cells[i][j]="";
StringGrid5->Cells[i][j]="";
}
Edit3->Clear();
}
//----------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
StringGrid2->ColCount=razm;
StringGrid3->ColCount=razm;
StringGrid4->ColCount=razm;
StringGrid5->ColCount=razm;
StringGrid2->RowCount=razm;
StringGrid3->RowCount=razm;
StringGrid4->RowCount=razm;
StringGrid5->RowCount=razm;
randomize;
for (int i=0;i<razm;i++)
for(int j=0;j<razm;j++) {
StringGrid2->Cells[i][j]=IntToStr(random(20)-9);
StringGrid3->Cells[i][j]=IntToStr(random(20)-9);
StringGrid4->Cells[i][j]=IntToStr(random(20)-9);
}
Button3->Enabled=false;
Memo1->Clear();
Memo2->Clear();
MediaPlayer1->Hide();
RadioGroup1->ItemIndex=0;
Edit7->Hide();Edit8->Hide();Edit9->Hide();Edit10->Hide();Edit11->Hide();Edit12->Hide();Edit13->Hide();Edit14->Hide();
Label11->Hide();Label12->Hide();Label13->Hide();Label14->Hide();Label15->Hide();Label16->Hide();Label17->Hide();Label18->Hide();Label19->Hide();
Button13->Hide();Button14->Hide();Button16->Hide();
Label23->Caption="";
Label27->Caption="";
Label26->Visible=false;
Label24->Visible=false;
Label25->Visible=false;
Memo3->Clear();
}
//----------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
razm=StrToInt(Edit3->Text);
StringGrid2->ColCount=razm;
StringGrid3->ColCount=razm;
StringGrid4->ColCount=razm;
StringGrid5->ColCount=razm;
StringGrid2->RowCount=razm;
StringGrid3->RowCount=razm;
StringGrid4->RowCount=razm;
StringGrid5->RowCount=razm;
for (int i=0;i<razm;i++)
for(int j=0;j<razm;j++) {
StringGrid2->Cells[i][j]=IntToStr(random(20)-9);
StringGrid3->Cells[i][j]=IntToStr(random(20)-9);
StringGrid4->Cells[i][j]=IntToStr(random(20)-9);
}
}
//----------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
int i,j;
for (i=0;i<razm;i++)
for(j=0;j<razm;j++) {
if (StringGrid2->Cells[i][j]=="" || StringGrid3->Cells[i][j]=="" || StringGrid4->Cells[i][j]=="") {
ShowMessage("Заповніть масив");
return; }
}
int max1=StrToInt(StringGrid2->Cells[0][0]),max2=StrToInt(StringGrid3->Cells[0][0]),max3=StrToInt(StringGrid4->Cells[0][0]);
// int a[razm],b[razm],c[razm];
for (i=0;i<razm;i++)
for(j=0;j<razm;j++) {
if (StrToInt(StringGrid2->Cells[i][j])>max1) max1=StrToInt(StringGrid2->Cells[i][j]);
if(StrToInt(StringGrid3->Cells[i][j])>max2) max2=StrToInt(StringGrid3->Cells[i][j]);
if(StrToInt(StringGrid4->Cells[i][j])>max3) max3=StrToInt(StringGrid4->Cells[i][j]);
}
if (max1<max2 && max1<max3)
for (i=0;i<razm;i++)
for(j=0;j<razm;j++)
StringGrid5->Cells[i][j]=StringGrid2->Cells[i][j];
else if (max2<max1 && max2<max3)
for (i=0;i<razm;i++)
for(j=0;j<razm;j++)
StringGrid5->Cells[i][j]=StringGrid3->Cells[i][j];
else
for (i=0;i<razm;i++)
for(j=0;j<razm;j++)
StringGrid5->Cells[i][j]=StringGrid4->Cells[i][j];
}
//----------------------------------------------------------------------
void __fastcall TForm1::Edit3Change(TObject *Sender)
{
if (Edit3->Text.Length()>0) Button3->Enabled=true;
else Button3->Enabled=false;
}
//----------------------------------------------------------------------
void __fastcall TForm1::Button7Click(TObject *Sender)
{
Edit4->Clear();
Memo1->Clear();
}
//----------------------------------------------------------------------
void __fastcall TForm1::Memo1KeyPress(TObject *Sender, char &Key)
{
Key=0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit4KeyPress(TObject *Sender, char &Key)
{
if (IsCharAlpha(Key) || Key=='.' || Key==',' || Key=='-') Key=0;
}
//----------------------------------------------------------------------
void __fastcall TForm1::Memo2KeyPress(TObject *Sender, char &Key)
{
Key=0;
}
//----------------------------------------------------------------------
void __fastcall TForm1::Edit5KeyPress(TObject *Sender, char &Key)
{
if (IsCharAlpha(Key) || Key=='.' || Key==',' || Key=='-') Key=0;
}
//----------------------------------------------------------------------
void __fastcall TForm1::Button9Click(TObject *Sender)
{
Edit5->Clear();
Memo2->Clear();
}
//----------------------------------------------------------------------
void __fastcall TForm1::Button8Click(TObject *Sender)
{
int n=StrToInt(Edit5->Text);
if (n<284) {ShowMessage("В даних межах дружніх чисел немає"); Edit5->SetFocus();return;}
if (n>100000) {ShowMessage("Дуже велике число"); Edit5->SetFocus();return;}
if (n<1210) Memo2->Lines->Add("220 та 284");
else
if (n<2924){Memo2->Lines->Add("220 та 284");
Memo2->Lines->Add("1184 та 1210"); }
else
if (n<5564) {Memo2->Lines->Add("220 та 284");
Memo2->Lines->Add("1184 та 1210");
Memo2->Lines->Add("2620 та 2924");}
else
if (n<6368) {Memo2->Lines->Add("220 та 284");
Memo2->Lines->Add("1184 та 1210");
Memo2->Lines->Add("2620 та 2924");
Memo2->Lines->Add("5020 та 5564");}
else
if (n<10856) {Memo2->Lines->Add("220 та 284");
Memo2->Lines->Add("1184 та 1210");
Memo2->Lines->Add("2620 та 2924");
Memo2->Lines->Add("5020 та 5564");
Memo2->Lines->Add("6232 та 6368");}
else
if (n<14595) {Memo2->Lines->Add("220 та 284");
Memo2->Lines->Add("1184 та 1210");
Memo2->Lines->Add("2620 та 2924");
Memo2->Lines->Add("5020 та 5564");
Memo2->Lines->Add("6232 та 6368");
Memo2->Lines->Add("10744 та 10856");}
else
if (n<18416) {Memo2->Lines->Add("220 та 284");
Memo2->Lines->Add("1184 та 1210");
Memo2->Lines->Add("2620 та 2924");
Memo2->Lines->Add("5020 та 5564");
Memo2->Lines->Add("6232 та 6368");
Memo2->Lines->Add("10744 та 10856");
Memo2->Lines->Add("12285 та 14595");
}
else
if (n<66992) {Memo2->Lines->Add("220 та 284");
Memo2->Lines->Add("1184 та 1210");
Memo2->Lines->Add("2620 та 2924");
Memo2->Lines->Add("5020 та 5564");
Memo2->Lines->Add("6232 та 6368");
Memo2->Lines->Add("10744 та 10856");
Memo2->Lines->Add("12285 та 14595");
Memo2->Lines->Add("17296 та 18416");
}
else
if (n<71145) {Memo2->Lines->Add("220 та 284");
Memo2->Lines->Add("1184 та 1210");
Memo2->Lines->Add("2620 та 2924");
Memo2->Lines->Add("5020 та 5564");
Memo2->Lines->Add("6232 та 6368");
Memo2->Lines->Add("10744 та 10856");
Memo2->Lines->Add("12285 та 14595");
Memo2->Lines->Add("17296 та 18416");
Memo2->Lines->Add("66928 та 66992");
}
else
if (n<76084) {Memo2->Lines->Add("220 та 284");
Memo2->Lines->Add("1184 та 1210");
Memo2->Lines->Add("2620 та 2924");
Memo2->Lines->Add("5020 та 5564");
Memo2->Lines->Add("6232 та 6368");
Memo2->Lines->Add("10744 та 10856");
Memo2->Lines->Add("12285 та 14595");
Memo2->Lines->Add("17296 та 18416");
Memo2->Lines->Add("66928 та 66992");
Memo2->Lines->Add("67095 та 71145");}
else
if (n<87633) {Memo2->Lines->Add("220 та 284");
Memo2->Lines->Add("1184 та 1210");
Memo2->Lines->Add("2620 та 2924");
Memo2->Lines->Add("5020 та 5564");
Memo2->Lines->Add("6232 та 6368");
Memo2->Lines->Add("10744 та 10856");
Memo2->Lines->Add("12285 та 14595");
Memo2->Lines->Add("17296 та 18416");
Memo2->Lines->Add("66928 та 66992");
Memo2->Lines->Add("67095 та 71145");
Memo2->Lines->Add("63020 та 76084");}
else
if (n<88730) {Memo2->Lines->Add("220 та 284");
Memo2->Lines->Add("1184 та 1210");
Memo2->Lines->Add("2620 та 2924");
Memo2->Lines->Add("5020 та 5564");
Memo2->Lines->Add("6232 та 6368");
Memo2->Lines->Add("10744 та 10856");
Memo2->Lines->Add("12285 та 14595");
Memo2->Lines->Add("17296 та 18416");
Memo2->Lines->Add("66928 та 66992");
Memo2->Lines->Add("67095 та 71145");