
- •Про проходження навчальної практики після третього року навчання
- •Черкаси 2013
- •Постановка задачі та алгоритм вирішення 34
- •4.1.1. Постановка задачі та алгоритм вирішення. 41
- •Щоденник проходження навчальної практики
- •1.1. Програмування з використанням рядків, файлів
- •Постановка задачі та алгоритм вирішення.
- •Лістинг програми
- •Результати тестування програми
- •Пошук та сортування масивів
- •1.3.1. Постановка задачі та алгоритм вирішення
- •1.4 Об‘єктно-орієнтоване прорамування
- •Постановка задачі та алгоритм вирішення.
- •Лістинг програми
- •Результати тестування програми
- •Умови задач:
- •Лістинги програм
- •Результати тестування програм
- •Стандартна бібліотека шаблонів stl. Алгоритми та діопазони
- •Умови задач:
- •Лістинги програм
- •Результати тестування програм
- •Стандартна бібліотека шаблонів stl. Послідовні контейнери
- •Умови задач:
- •Лістинги програм
- •Стандартна бібліотека шаблонів stl. Адаптер контейнерів
- •Розробка баз даних
- •База даних в 1нф
- •База даних в 2нф
- •Лістинги Лістинги форм проекту ”Міський транспорт”
- •Опис візуальних форм і модуля в роботі
- •4.1. Лінійний обчислювальний процес
- •4.1.1. Постановка задачі та алгоритм вирішення.
- •4.1.2. Лістинг програми
- •4.1.3. Результати виконання програми
- •4.2 Реалізація алгоритмів розгалуження
- •4.2.1. Постановка задачі та алгоритм вирішення.
- •4.2.2. Лістинг програми
- •4.2.3. Результати виконання програми
- •4.3 Реалізація циклічних алгоритмів
- •4.3.1. Постановка задачі та алгоритм вирішення.
- •4.3.2. Лістинг програми
- •4.5.3. Результати виконання програми
- •4.6 Обробка двомірних динамічних масивів
- •4.6.1. Постановка задачі та алгоритм вирішення.
- •4.6.2. Лістинг програми
- •4.7.3. Результати виконання програми
- •4.8 Обробка структур з використанням файлів
- •4.8.1. Постановка задачі та алгоритм вирішення.
- •4.8.2. Лістинг програми
- •4.9.3. Результати виконання програми
- •Висновок
- •Список використаної літератури
4.5.3. Результати виконання програми
Рис.43. Вікно програми в роботі
4.6 Обробка двомірних динамічних масивів
4.6.1. Постановка задачі та алгоритм вирішення.
Написати програму по обробці динамічних масивів. Розміри масивів вводити з клавіатури. При створенні віконного додатку скалярний (простий) результат виводити у вигляді компоненти Label, а масиви вводити і виводити за допомогою компонент StringGrid, в яких 0-й стовпець і 0-й рядок використовувати для відображення індексів масивів.
В матриці розміром N×M впорядкувати рядки за зростанням суми їх елементів.
4.6.2. Лістинг програми
#include <vcl.h>
#pragma hdrstop
#include "Unit6.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int n, m,i,j; //n, m - розміри масиву
double ** a,*b; // Декларації вказівників
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
n=StrToInt(Edit1->Text);
m=StrToInt(Edit2->Text);
StringGrid1->ColCount = n+1; StringGrid1->RowCount = m+1;
StringGrid2->ColCount = n+1; StringGrid2->RowCount = m+1;
StringGrid3->RowCount = m+1;
StringGrid1->Cells[0][0] = "Початкова ";
StringGrid2->Cells[0][0] = "Отримана";
StringGrid3->Cells[0][0] = "Масив суми елементів рядків";
for(i=1; i<=n;i++){
StringGrid1->Cells[i][0]="j="+IntToStr(i);
StringGrid2->Cells[i][0]="j="+IntToStr(i);
}
for(j=1; j<=m;j++){
StringGrid1->Cells[0][j]="i="+IntToStr(j);
StringGrid2->Cells[0][j]="i="+IntToStr(j);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
n=StrToInt(Edit1->Text);
m=StrToInt(Edit2->Text);
StringGrid1->ColCount = n+1; StringGrid1->RowCount = m+1;
StringGrid2->ColCount = n+1; StringGrid2->RowCount = m+1;
StringGrid3->RowCount = m+1;
for(i=1; i<=n;i++){
StringGrid1->Cells[i][0]="j="+IntToStr(i);
StringGrid2->Cells[i][0]="j="+IntToStr(i);
for(j=1; j<=m;j++){
StringGrid1->Cells[0][j]="i="+IntToStr(j);
StringGrid2->Cells[0][j]="i="+IntToStr(j);
StringGrid1->Cells[i][j]="";
StringGrid3->Cells[i][j]="";
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double sum=0,p=0;
a = new double *[n];
for(i=0;i<n;i++)
a [i] = new double [m];
b = new double[m];
for(i=0; i<n;i++)
for(j=0; j<m;j++){
a[i][j]=StrToFloat(StringGrid1->Cells[i+1][j+1]);
}
for(j=0; j<m; j++){
for(i=0; i<n; i++){
sum=sum+a[i][j];
}
b[j]=sum;
sum=0;
}
for(i=0;i<m;i++)
StringGrid3->Cells[0][i+1] = FloatToStr(b[i]);
for (int k=0;k<m;k++)
for (j=0;j<m-1;j++)
if(b[j]>b[j+1]){
p=b[j];
b[j]=b[j+1];
b[j+1]=p;
for(i=0; i<n; i++){
p=a[i][j];
a[i][j]=a[i][j+1];
a[i][j+1]=p;
}
}
for(i=0; i<n;i++)
for(j=0; j<m;j++)
{
StringGrid2->Cells[i+1][j+1] = FloatToStr(a[i][j]);
}
for(i=0;i<n;i++)
delete [] a[i];
delete [] a;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
delete []a;
ShowMessage("Память освобождена!");
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
a = new double * [n];
for(i=0;i<n;i++)
a [i] = new double [m];
randomize();
for(i=0; i<n;i++){
for(j=0; j<m;j++){
a[i][j]=random(20)-10;
}
}
for(i=0; i<n;i++){
for(j=0; j<m;j++){
StringGrid1->Cells[i+1][j+1] = FloatToStr(a[i][j]);
}
}
for(i=0;i<n;i++)
delete [] a[i];
delete [] a;
}
//---------------------------------------------------------------------------
4.6.3. Результати виконання програми
Рис.44. Вікно програми в роботі
4.7 ВИКОРИСТАННЯ РЯДКІВ
4.7.1. Постановка задачі та алгоритм вирішення.
Дано рядок, що складається зі слів, розділених пробілами. Розбити вихідний рядок на дві підрядка, причому перший довжиною k символів, якщо на k-у позицію потрапляє слово, то його слід віднести до другої рядку. Значення k вводиться з клавіатури.
4.7.2. Лістинг програми
//----------------------------------
#include <vcl.h>
#pragma hdrstop
#pragma argsused
#include <string>
#include <tchar.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <iostream>
using namespace std;
//----------------------------------
void main()
{
int n, i, nst, len=0,k,j,g, len1=0;
char st[81],st1[81],st2[81],st3[81];
puts(" Vvedite stroku ");
gets(st);
len = strlen(st);
puts("k: ");
scanf("%d", &k);
strncpy(st1, st, k);
for (k; st[k]!=' '; k--)
len1=k-1;
strncpy(st2, st, len1);
printf("Dlinna=%d", len1);
cout <<"\n" <<st2;
cout <<"\n";
int d = len1;
for (len1; len1 < len; len1++) {
if (st[d] != ' ') {
cout<<st[len1];
}
else cout<<st[len1+1];
}
puts("\nPress any key ... ");
getch();
}