Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

На тему- Создание библиотек подпрограмм для обработки массивов Выполнила- Студентка 1го курса Г

Работа добавлена на сайт samzan.net:


Министерство транспорта и связи Украины

ОДЕССКАЯ НАЦИОНАЛЬНАЯ АКАДЕМИЯ СВЯЗИ им. А.С. ПОПОВА

Кафедра информационных технологий

Курсовая работа

По дисциплине: Информатика

На тему: «Создание библиотек подпрограмм для обработки массивов»

Выполнила: Студентка 1-го курса

Группы ПЗ 1.20

Соловова Татьяна Вячеславовна

Проверила: доцент кафедры

Информационных технологий

Буката Людмила Николаевна

________

2013 год

Содержание:

  1.  Краткие теоретические сведения……………………………………………………3
  2.  Индивидуальное задание…………………………………………………………….7
  3.  Схемы алгоритмов…………………………………………………………………….8
  4.  Окна форм……………………………………………………………………………..14
  5.  Тексты программ……………………………………………………………………...17
  6.  Результаты вычислений

Анализ полученных результатов…………………………………………………..23

  1.  Список  литературы………………………………………………………………….24


  1.  Краткие теоретические сведения

Массив в программировании - это упорядоченная совокупность однотипных элементов. Массивы широко применяются для хранения и обработки однородной информации, например таблиц, векторов, матриц и т.д.

Каждый элемент массива однозначно можно определить по имени массива и индексами. Имя массива подбирают по тем правилам что и для переменных. Индексы определяют местонахождение элемента в массиве. Например, элементы вектора имеют один индекс - номер по порядку; элементы матриц и таблиц имеют по два индекса: первый означает номер строки, второй - номер столбца. Количество индексов определяет размерность массива. Например, векторы в программах - это одномерные массивы, а матрицы - двумерные.

• Одномерный массив – это последовательность элементов одного и того же типа. Массив должен быть объявлен в программе следующим образом:

<Тип>    <имя> [размер];

Выводить значения одномерного массива можно в файл или на форму используя различные компоненты С + +,  в Memo,Edit:

Memo1->Lines->Add(FormatFloat(«0.00»,A[i]));

Edit1->Text=Edit1->Text+FormatFloat(«0.00»,A[i])+ « »;

А так  же с помощью компонента  Memo можно вводить массивы:

A[i]=StrToFloat(Memo1->Lines->Strings[i]);

•Двумерные массивы как и одномерные массивы должны быть объявлены в программе. Сначало указать тип элементов массива, затем указать имя массива и указать его размерность:

<Тип>    <имя> [размер][размер2];

Для ввода и вывода элементов матрицы в С++ существует компонент StringGrid , который находится на странице Additional

Фиксированная строка

Компонент представит собой таблицу размерностью 5х5. Каждая ячейка имеет свой адрес.

Фиксированные столбцы

Свойства компонента  StringGrid, которые создаются по умолчанию в окне ObjectInspector:

  1.  ColCount → 5 (количество столбцов)
  2.  PowCount→5(количество строк)
  3.  FixedCol→1(фиксированный столбец)
  4.  FixedRow→1(фиксированная строка)

Эти свойства можно изменить, если размер матрицы будет другой.

Для ввода элементов и редактирования матрицы необходимо установить дополнительные свойства:

Вывод элементов двумерных массивов.
Осуществлять вывод значений элементов массива можно только поэлементно, для чего следует организовывать циклы, в которых последовательно меняються значения индексов элементов.
Выводиться матрица будет через компоненты
Memo,StringGrid:

Memo1->Lines->Add->IntToStrA[i][j]»);

StringGrid1->Cells[j][i]=IntToStr(A[i][j]);

А так же с помощью компонента StringGrid можно вводить массивы:

A[i][j]=StrToInt(StringGrid1->Cells[j][i]);

Библиотеки функций – файл, который содержит несколько функций и организован так, чтобы каждый из этих функций можно было удалить из библиотеки и присоединить к любой внешней программе. Библиотеки могут содержать объявления констант переменных и типов, которые могут пользоваться любые внешние программы.

Для того чтобы создать библиотеку необходимо:

FileNewUnit

Для подключения библиотеки Unit2 к основному модулю Unit1 необходимо выполнить команду Include Unit Hdr: и нажать ОК

Unit2.cpp называется файл реализации.

Unit2.h – это заголовочный файл.

Разумеется Unit1 – основной модуль.

  1.  Индивидуальное задание

Вариант 20

Условие:

  1.  Сформировать двумерный массив А, элементы которого вычисляются по заданной формуле:

где i=0,...,5; j=0,…,5;

  1.  Сформировать одномерный массив Х, элементы которого вычисляются по заданному алгоритму:

x – столбец из квадратов наименьших элементов строк матрицы а.

  1.  Вычислить значение функции G, которая зависит от элементов вектора Х.


  1.  Схемы алгоритмов

Для Unit1.cpp

Вход

Рис.1

Схема вычисления программы для матрицы(mat_ric)

a[i][j]

j=0,5

Выход

i=0,5

elem_matr(a)


Вход

Выход

b[i]

j=0,5

i=0,5

elem_vectora(a,b)

Рис.2

Схема вычисления программы для вектора(vec_tor)


Вход

G=fun_G1(b)

Рис.3

Схема вычисления программы для функции(fun_G)

Выход

G


Для Unit2.cpp

Вход

Выход

a[i][j]=(pow(3,i)+i*j+0.5)/(4+j+i)*sin(j+i)

j=0,5

i=0,5

Рис.4

Схема подпрограммы для вычисления элементов матрицы(elem_matr)

Рис.5

Схема подпрограммы для вычисления элементов вектора(elem_vectora)

Выход

b[i]=S*S

a[i][j]<S

S=a[i][j]

j=0,5

S=a[i][0]

i=0,5

Вход


Вход

S=1

Рис.6

Схема подпрограммы для вычисления функции (fun_G1)

Выход

G=log(S)-log(S1)

S1+=(b[i])

S*=1+|b[i]|

j=0,5

i=0,5

S1=0


  1.  Окна форм

Рис. 7

Form1

Рис. 8

Form 3 (AboutBox)

Рис. 9

Form 4

Рис. 10

Form 5

Рис. 11

Form 6 (Заставка)


  1.  Тексты программ

Для Unit1.cpp //основной модуль

#include «Unit2.h» // подслючаем библиотеку

TForm*Form1;

matr a; vect b;// объявляем глобальные переменные

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

void __fastcall TForm1::mat_ricClick(TObject *Sender) //текст программы для пункта SG1(вычисления матрицы)

{elem_matr(a);//вызов подпрограммы для вычисления матрицы

for(i=0;i<5;i++)//цикл по строкам

for(j=0;j<5;j++)//цикл по столбцам

StringGrid1->Cells[j][i]=FormatFloat("0.00",a[i][j]);//вывод результатов в SG1

StringGrid1->Visible=true;

Label1->Visible=true;

}

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

void __fastcall TForm1::vec_torClick(TObject *Sender) //текст программы для пункта SG2(вычисления вектора)

{elem_vectora(a,b);//вызов подпрограммы для вычисления вектора

for(i=0;i<5;i++)//цикл по строкам

for(j=0;j<5;j++)//цикл по столбцам

StringGrid2->Cells[i][0]=FormatFloat("0.00",b[i]);//вывод результатов в SG2

StringGrid2->Visible=true;

Label2->Visible=true;

}

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

void __fastcall TForm1::fun_GClick(TObject *Sender)//текст программы для пункта Edit1(значение функции)

{float G=fun_G1(b);//вызов подпрограммы для вычисления функции

Edit1->Text=FormatFloat("0.000",G);// вывод результатов в Edit1

Edit1->Visible=true;

Label3->Visible=true;

}

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

void __fastcall TForm1::av_torClick(TObject *Sender)

{

AboutBox->ShowModal();

}

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

void __fastcall TForm1::ex_itClick(TObject *Sender)

{int r;

r=MessageDlg("Вы уверены что хотите выйти?",

mtConfirmation,TMsgDlgButtons()<<mbYes<<mbNo,0);

if(r==mrYes)Close();

}

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

Для Unit2.cpp // файл реализации
#include <math.h> // подключаем математическую библиотеку
void elem_matr(matr a) //подпрограмма вычисления элементов матрицы
{int i,j;/
/объявление целых переменных,номер строки,номер столбца
for(i=0;i<5;i++)
//цикл по строкам
for(j=0;j<5;j++)//
цикл по столбцам
a[i][j]=(pow(3,i)+1*j+0.5)/(4+j+i)*sin(i+j);}
//формула для вычисления матрицы
//---------------------------------------------------------------------------
void elem_vectora(matr a,vect& b)
//подпрограмма для вычисления вектора
{int i,j,k;
//объявление целых переменных
float S;
//Объявление переменной , наименьший элемент строки
for(i=0;i<5;i++)
// цикл для перебора строк
{S=a[i][0];
 //принимаем за начальное значение наименьшего элемента строки, значение первого элемента строки
for(j=0;j<5;j++)
//цикл для перебора столбцов
{if(a[i][j]<S
)// находим наименьший элемент строки
S=a[i][j];}
b[i]=S*S
;// выводим массив значений квадратов наименьших элементов строк.
}
}
//---------------------------------------------------------------------------
float fun_G1(vect b) // подпрограмма для вычисление значения функции
{
float S=1,S1=0;//объявление вещественных переменных, присваиваем им начальные значения
for(i=0;i<5;i++)//цикл для перебора  строк
S*=1+fabs(b[i]); //условие для функции умножения
for(i=1;i<5;i++) //цикл по строкам
S1+=fabs(b[i]); //условие суммы
float G=log(S)-log(S1); //Вся функция, G объявленная как вещественная
return G;
}

Для Unit2.h // заголовочный файл
int i,j;
typedef float matr[5][5]; // заголовок подпрограммы для имени типа(matr)
typedef float vect[5]; // заголовок подпрограммы для имени типа(vect)
void elem_matr(matr a);// список формальных параметров
void elem_vectora(matr a,vect& b); //заголовок подпрограммы для элементов вектора
float fun_G1(vect b); // заголовок подпрограммы для вычисления значения функции

Для Unit4.cpp

#include <vcl.h>

void __fastcall TForm4::e_x_i_tClick(TObject *Sender)

{int r;

r=MessageDlg("Вы уверены что хотите выйти?",

mtConfirmation,TMsgDlgButtons()<<mbYes<<mbNo,0);

if(r==mrYes)Close();}

void __fastcall TForm4::view_zadanClick(TObject *Sender)

{

char * ffname;

OpenDialog1->Filter="Doc files(*.rtf)|*.rtf";

if(OpenDialog1->Execute())ffname=OpenDialog1->FileName.c_str();

RichEdit1->Lines->LoadFromFile(ffname);

Form4->Caption="Файл называется- "+AnsiString(ffname);

RichEdit1->Modified=false;

}

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

void __fastcall TForm4::save_modClick(TObject *Sender)

{

char * ffname;

SaveDialog1->Filter="Doc files(*.rtf)|*.rtf";

if(SaveDialog1->Execute())RichEdit1->Lines->SaveToFile(SaveDialog1->FileName);

RichEdit1->Modified=false;

}

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

void __fastcall TForm4::font_styleClick(TObject *Sender)

{

FontDialog1->Execute();

RichEdit1->SelAttributes->Assign(FontDialog1->Font);

}

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

Для Unit5.cpp

void__fastcall TForm5::TForm5(TComponent* Owner)

       : TForm(Owner)

{Memo1->Clear();Memo1->Lines->LoadFromFile("bibl.txt");

}

void __fastcall TForm5::okClick(TObject *Sender)

{

Close();

}


  1.  Результаты вычислений.

Анализ полученных результатов.

Результаты вычислений я привела в скриншоте.

Рис. 12

Вычисление матрицы, вектора и функции

Всё сходится.

Вычисление матрицы проводилось по этой формуле:

где i=0,...,5; j=0,…,5;

Вычисляла вектор по такому алгоритму:

x – столбец из квадратов наименьших элементов строк матрицы а.

Возьмём нулевую строку матрицы, самый наименьший элемент -0,14

Возводим его в квадрат,  получается 0,0196

Затем округлили и получили 0,02

Этот результат можно увидеть в первой ячейке вектора.

Так же возьмём первую строку матрицы, самый наименьший элемент -0,80

Возводим его в квадрат, получается 0,64 . И так далее.

Сходится, а это значит, что программа работает правильно!

  1.  Список литературы
  2.  О. Г. Трофименко. Информатика, модуль 2, часть 1, часть 2

Одесса, ОНАС, 2008

  1.  Л.М.Буката,И.Г.Швайко. Курсовая работа по дисциплине Информатика

Одесса, ОНАС, 2007

  1.  С++ Основи програмування. Теорія та практика.

О.Г.Трофименко

Одеса,ОНАЗ,2010




1. Изучение китайского языка на кафедре иностранных языков Аграрного факультета Российского Университета Дру
2. 7 утра и несмотря на шум уборщиков на улице я всё равно могла слышать их в её комнате
3. исследования о природе и причинах богатства народов
4. розовым светом на свежем ветерке трепещут серебристо переливаясь оливковые деревья
5. Доклад- Виргинские Острова
6. Лабораторна робота 22 Графічне відображення результатів МНК
7. Вказівки до оформлення дипломних робот
8. Английская бухта
9. Экономика предпринимательства МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО ВЫПОЛНЕНИЮ КОНТРОЛЬНОЙ РАБОТЫ по
10. Мультисписки
11. разделительные строгая дизъюнкцияЛогическая форма АvВ Условные импликацияЛогическая форма АВ
12. Тема- Условия выбора и простые логические выражения ОБЯЗАТЕЛЬНОЕ Дана т
13. мн Мизёв АИзав
14. ом слоге бАнты неподвижн.
15. тема образования существует для того чтобы история моей страны продолжалась в будущем исходя из ее собствен
16. Как избежать ошибок в правописании прилагательных
17. Расстрельная команда ~ это не просто записки очевидца или рассказ о пенитенциарной системе Беларуси
18. Topic the investigtor must decide wht to red
19. Башкирский государственный педагогический университет им
20. Гражданско-правовое регулирование залога