bsuir.info
БГУИР: Дистанционное и заочное обучение
(файловый архив)
Вход (быстрый)
Регистрация
Категории каталога
Другое [37]
Белорусский язык [247]
ВОВ [92]
Высшая математика [468]
Идеология [114]
Иностранный язык [633]
История Беларуси [247]
Культурология [42]
Логика [258]
НГиИГ [116]
Основы права [8]
Основы психологии и педагогики [7]
Охрана труда [7]
Политология [179]
Социология [120]
Статистика [31]
ТВиМС [83]
Техническая механика [43]
ТЭЦ [82]
Физика [146]
Философия [169]
Химия [76]
Экология [35]
Экономика предприятия [35]
Экономическая теория [169]
Электротехника [35]
ЭПиУ [44]
Этика [5]
Форма входа
Логин:
Пароль:
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Файловый архив
Файлы » Общевузовские предметы » Другое

«ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ»
Подробности о скачивании 30.12.2013, 23:12
ЗАДАНИЕ №1.
Создать программу вычисления указанной величины. Результат проверить при заданных исходных значениях: x = 17.421, y = 10.36510-3, z = 0.828105
.
Создание оконного приложения
Текст программы: <br /><br /> #include <vcl.h>
#pragma hdrstop <br /><br /> #include "lab1.h"
#include "math.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
} <br /><br /> //---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float x, y, z, a, b, c;
float result;
//преобразование строки к вещественному типу
x = StrToFloat(Edit1->Text);
y = StrToFloat(Edit2->Text);
z = StrToFloat(Edit3->Text);
a = pow((x - 1), 1.0 / 3) + y;
a = pow(a, 1.0 / 4); //первая часть формулы
b = ((sin(z) * sin(z)) + tan(z)) * fabs(x - y);
//b = (pow(sin(z), 2) + tan(z)) * (fabs(x - y)); //вторая часть формулы
result = a / b;
//запись в текстовое поле
Memo1->Lines->Add("При x = " + FloatToStrF(x,ffFixed,7,3) +
", при y = " + FloatToStrF(y,ffFixed,7,3) + ", при z = " +
FloatToStrF(z,ffFixed,7,3));
Memo1->Lines->Add("Результат равен:" + FloatToStrF(result,ffFixed,7,4));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Edit1->Text = "17,421";
Edit2->Text = "10,365e-3";
Edit3->Text = "0,828e5";
Memo1->Clear();
Memo1->Lines->Add("Лабораторная работа № 1");
} <br /><br />

ЗАДАНИЕ №2.
Вычислить значение y в зависимости от выбранной функции (x), аргумент которой определяется из поставленного условия. Возможные значения функции (x): 2x, x2, х/3 (в оконном приложениии выбор выполнить с помощью компоненты RadioGroup). Предусмотреть вывод сообщений, показывающих, при каком условии и с какой функцией производились вычисления у.
, где
Создание оконного приложения
Текст программы: <br /><br /> #include <vcl.h>
#pragma hdrstop <br /><br /> #include "lab2.h"
#include <math.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//--------------------------------------------------------------------------- <br /><br /> void __fastcall TForm1::FormCreate(TObject *Sender)
{
Edit1->Text="4";
Edit2->Text="2";
Edit3->Text="3";
Edit4->Text="2";
<br /> Memo1->Clear();
Memo1->Lines->Add("Лабораторная работа 2");
RadioGroup1->ItemIndex = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float z, x, y, n, k, m;
z=StrToFloat(Edit1->Text);
n=StrToFloat(Edit2->Text);
k=StrToFloat(Edit3->Text);
m=StrToFloat(Edit4->Text); <br /><br /> if (z <= 1) {
x = (z*z) + 1;
}
if (z > 1) {
x = z;
} <br /><br /> switch(RadioGroup1->ItemIndex){
case 0:
y = (sin(n * (2 * x))) + cos(k * x) + log(m * x);
Memo1->Lines->Add("y(2x)= " + FloatToStrF(y,ffFixed,7,4));
break;
case 1:
y = (sin(n * (x * x))) + cos(k * x) + log(m * x);
Memo1->Lines->Add("y(x^2)= " + FloatToStrF(y,ffFixed,7,4));
break;
case 2:
y = (sin(n * (x / 3))) + cos(k * x) + log(m * x);
Memo1->Lines->Add("y(x / 3)= " + FloatToStrF(y,ffFixed,7,4));
break;
}
}
<br />  
ЗАДАНИЕ №3.
Для каждого x, изменяющегося от a до b с шагом h, найти значения функции Y(x), суммы S(x) и |Y(x)–S(x)| и вывести в виде таблицы. Значения a, b, h и n вводятся с клавиатуры.
Так как значение S(x) является рядом разложения функции Y(x), при правильном решении значения S и Y для заданного аргумента x (для тестовых значений исходных данных) должны совпадать в целой части и в первых двух-четырех позициях после десятичной точки. Работу программы проверить для a = 0,1; b = 1,0; h = 0,1; значение параметра n выбрать в зависимости от задания (10, 20, 50, 100).
, .
Создание оконного приложения
Текст программы: <br /><br /> #include <vcl.h>
#pragma hdrstop <br /><br /> #include "lab3.h"
#include <math.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1; <br /><br /> int factorial(int n) {
return !n ? 1 : n * factorial(n - 1);
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//--------------------------------------------------------------------------- <br /><br /> void __fastcall TForm1::FormCreate(TObject *Sender)
{
Edit1->Text="0,1";
Edit2->Text="1,0";
Edit3->Text="0,1";
Edit4->Text="10"; <br /><br /> Memo1->Clear();
Memo1->Lines->Add("Лабораторная работа 3");
}
//--------------------------------------------------------------------------- <br /><br /> void __fastcall TForm1::Button1Click(TObject *Sender)
{
float a, b, h, n;
float s=0, y=0;
float tmpS = 0, tmpY = 0; <br /><br /> a=StrToFloat(Edit1->Text);
b=StrToFloat(Edit2->Text);
h=StrToFloat(Edit3->Text);
n=StrToFloat(Edit4->Text); <br /><br /> Memo1->Lines->Add("Промежуточный результат:");
//вычисляем S, Y
for (float x = a; x<=b; x+=h){
//S
tmpS = 0;
for (int k=1; k<=n; k++){
tmpS += pow(-1, k) * (pow(2 * x, 2 * k) / factorial(2 * k));
}
Memo1->Lines->Add("S("+ FloatToStrF(x,ffFixed,7,4) +")= " + FloatToStrF(tmpS,ffFixed,7,4));
s+=tmpS;
//Y
tmpY = 2 * (cos(x) * cos(x) - 1);
Memo1->Lines->Add("Y("+ FloatToStrF(x,ffFixed,7,4) +")= " + FloatToStrF(tmpY,ffFixed,7,4));
y += tmpY;
Memo1->Lines->Add("|Y(x) - S(x)| = " + FloatToStrF(fabs(tmpY-tmpS),ffFixed,7,4));
}
Memo1->Lines->Add("Общий результат:");
Memo1->Lines->Add("S= " + FloatToStrF(s,ffFixed,7,4));
Memo1->Lines->Add("Y= " + FloatToStrF(y,ffFixed,7,4));
}
<br />  
ЗАДАНИЕ №4.
По заданию лабораторной работы №3 написать программу расчета выбранной функции Y(x), или S(x) (желательно и |Y(x)–S(x)|), вид которой определяется в функции вывода (Out_Rez) в зависимости от переданного ей параметра kod. <br /><br /> Создание оконного приложения
Текст программы: <br /><br /> #include <vcl.h>
#pragma hdrstop <br /><br /> #include "lab3.h"
#include <math.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm" <br /><br /> void Out_Res(int code, float a, float b, float h, float n); <br /><br /> int factorial(int n) {
return !n ? 1 : n * factorial(n - 1);
} <br /><br /> TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Edit1->Text="0,1";
Edit2->Text="1,0";
Edit3->Text="0,1";
Edit4->Text="10"; <br /><br /> Memo1->Clear();
Memo1->Lines->Add("Лабораторная работа 4");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float a, b, h, n;
float s=0, y=0;
float tmpS = 0, tmpY = 0; <br /><br /> a=StrToFloat(Edit1->Text);
b=StrToFloat(Edit2->Text);
h=StrToFloat(Edit3->Text);
n=StrToFloat(Edit4->Text); <br /><br /> Out_Res(RadioGroup1->ItemIndex, a, b, h, n); <br /><br /> //Memo1->Lines->Add("Общий результат:");
//Memo1->Lines->Add("S= " + FloatToStrF(s,ffFixed,7,4));
//Memo1->Lines->Add("Y= " + FloatToStrF(y,ffFixed,7,4));
}
//---------------------------------------------------------------------------
void Out_Res(int code, float a, float b, float h, float n){ <br /><br /> TMemo *mem;
mem = Form1->Memo1;
float tmpS, tmpY, s, y;
mem->Lines->Add("Результат:");
switch(code){
case 0:
//вычисляем S
for (float x = a; x <= b; x+=h){
tmpS = 0;
for (int k=1; k<=n; k++){
tmpS += pow(-1, k) * (pow(2 * x, 2 * k) / factorial(2 * k));
}
mem->Lines->Add("S("+ FloatToStrF(x,ffFixed,7,4) +")= " + FloatToStrF(tmpS,ffFixed,7,4));
}
break;
case 1:
for (float x = a; x <= b; x+=h){
tmpY = 2 * (cos(x) * cos(x) - 1);
mem->Lines->Add("Y("+ FloatToStrF(x,ffFixed,7,4) +")= " + FloatToStrF(tmpY,ffFixed,7,4));
}
break;
case 2:
for (float x = a; x <= b; x+=h){
//s
tmpS = 0;
for (int k=1; k<=n; k++){
tmpS += pow(-1, k) * (pow(2 * x, 2 * k) / factorial(2 * k));
}
//Y
tmpY = 2 * (cos(x) * cos(x) - 1);
mem->Lines->Add("|Y(x) - S(x)| = " + FloatToStrF(fabs(tmpY-tmpS),ffFixed,7,4));
}
break;
}
} <br /><br /> <br /><br />
<br />
ЗАДАНИЕ №5.
Написать программу по обработке одномерных массивов. Размеры массивов вводить с клавиатуры. В консольном приложении предусмотреть возможность ввода данных как с клавиатуры, так и с использованием функции random().
При создании оконного приложения скалярный (простой) результат выводить в виде компоненты Label, а массивы вводить и выводить с помощью компонент StringGrid.
В одномерном массиве, состоящем из n вводимых с клавиатуры целых элементов, вычислить:
Сумму модулей элементов массива, расположенных после первого отрицательного элемента. <br /><br /> Создание оконного приложения
Текст программы: <br /><br /> #include <vcl.h>
#pragma hdrstop <br /><br /> #include "lab5.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1; <br /><br /> int n = 10;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
randomize();
Edit1->Text=IntToStr(n);
StringGrid1->ColCount=n;
for(int i=0; i<n;i++) // Заполнение массива А случайными числами
StringGrid1->Cells[i][0] = IntToStr(random(21)-10);
Label2->Hide(); // Скрыть результат
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
n=StrToInt(Edit1->Text);
if(n>10){
ShowMessage("Максимальное количество 10!");
n=10;
Edit1->Text = "10";
}
StringGrid1->ColCount=n;
for(int i=0; i<n;i++)
StringGrid1->Cells[i][0]=IntToStr(random(21)-10);
Label2->Hide();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int s = 0, index = -1;
for (int i=0; i<n; i++){
//запоминаем индекс первого отрицательного элемента, равного нулю
if ((StrToInt(StringGrid1->Cells[i][0])) < 0) {
index = i;
break;
}
}
//существуют ли нулевые элементы
if (index != -1){
for (int i=index+1; i<n; i++){
s += abs(StrToInt(StringGrid1->Cells[i][0]));
}
Label2->Caption = "Сумма: " + IntToStr(s); //выводим их сумму
} else {
Label2->Caption = "Нулевых элементов не найдено";
}
Label2->Show(); //показываем лэйбл
}
<br />
ЗАДАНИЕ №5.
Написать программу по обработке динамических массивов. Размеры массивов вводить с клавиатуры. При создании оконного приложения скалярный (простой) результат выводить в виде компоненты Label, а массивы вводить и выводить с помощью компонент StringGrid, в которых 0-й столбец и 0-ю строку использовать для отображения индексов массивов.
В матрице размером n найти сумму элементов, лежащих ниже главной диагонали, и произведение элементов, лежащих выше главной диагонали. <br /><br /> Создание оконного приложения
Текст программы: <br /><br /> #include <vcl.h>
#pragma hdrstop <br /><br /> #include "lab6.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int n = 3;
int m = 3; <br /><br /> void swap( int & a, int & b ) {
int temp = a;
a = b;
b = temp;
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//--------------------------------------------------------------------------- <br /><br /> void __fastcall TForm1::FormCreate(TObject *Sender)
{
randomize();
Edit1->Text=IntToStr(n);
Edit2->Text=IntToStr(m);
StringGrid1->ColCount = m + 1;
StringGrid1->RowCount = n + 1;
n++;
m++;
for (int i=0; i<m; i++){
StringGrid1->Cells[i][0] = IntToStr(i);
}
for (int i=0; i<n; i++){
StringGrid1->Cells[0][i] = IntToStr(i);
}
StringGrid1->Cells[0][0] = "Матрица";
for(int i=1; i<m;i++){
for (int j=1; j<n; j++){
StringGrid1->Cells[i][j] = IntToStr(random(21));
}
}
Label3->Hide();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
randomize();
n = StrToInt(Edit1->Text);
m = StrToInt(Edit2->Text);
if ((n <= 1) || (m<=1)){
ShowMessage("Некорректный ввод");
} else {
StringGrid1->ColCount = m + 1;
StringGrid1->RowCount = n + 1;
n++;
m++;
for (int i=0; i<m; i++){
StringGrid1->Cells[i][0] = IntToStr(i);
}
for (int i=0; i<n; i++){
StringGrid1->Cells[0][i] = IntToStr(i);
}
StringGrid1->Cells[0][0] = "Матрица";
for(int i=1; i<m;i++){
for (int j=1; j<n; j++){
StringGrid1->Cells[i][j] = IntToStr(random(21));
}
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int **matrix; //массив чисел (двухмерный)
int *max_cols_idx; //массив номеров строк с максимальным элементом <br /><br /> int ROW_COUNT = n-1;
int COL_COUNT = m-1; <br /><br /> //выделение памяти под массив
max_cols_idx = new int[ ROW_COUNT ];
matrix = new int*[ ROW_COUNT ];
for ( int i = 0; i < ROW_COUNT; i++ ) {
matrix[ i ] = new int[ COL_COUNT ];
max_cols_idx[ i ] = 0;
}
//заполняем массив matrix исходными данными
//(сделано так, потому что в копмпоненте идет адресация [столбец][строка])
int c = 1, r = 1;
int i = 0, j = 0;
int count = 0;
while (count < (COL_COUNT*ROW_COUNT)){
if (j == COL_COUNT){
j = 0;
i++;
}
if (c == m) {
c = 1;
r++;
}
matrix[i][j] = StrToInt(StringGrid1->Cells[c][r]);
c++; j++;
count++;
}
int max = 0;
//находим максимальный элемент в строке и сохраняем его индекс
for ( int i = 0; i < ROW_COUNT; i++ ) {
for ( int j = 0; j < COL_COUNT; j++ )
// ShowMessage(IntToStr(matrix[i][j])); <br /><br /> if ( (i + j > ROW_COUNT-1) ) {
if (matrix[i][j] > max){
max = matrix[i][j];
}
}
}
Label3->Caption = "Max: " + IntToStr(max);
Label3->Show();
}
Категория: Другое | Добавил: xenitron
Просмотров: 2309 | Загрузок: 19
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]