Будь умным!


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

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

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

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 9.11.2024

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

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

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

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

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

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

Выполнила: Студентка 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. Курсовая работа- Право граждан на информацию и его гарантии
3. Оценка инвестиционной стоимости кризисного предприятия
4. Тема. 6 Організація праці на постах ТО і ПР на СТОА
5. Диагностика и коррекция дисграфии у младших школьников
6. колво опасностей за определен периодпоследствия которых летальный исходNсреднесписочный состав работающ
7. При причинении вреда здоровью ~ установление характера и тяжести вреда здоровью механизма возникновения
8. Ядерное оружие
9. Перспектива развития физкультурного досуга в инфрастуктуре района Северное Медведково
10. Тема уроку. Розв'язування задач
11. заочная вечерняя форма обучения Экзаменационная зачетная ведомость 2013-2014
12. консультант должен отправлять корректные отчеты вовремя Смсотчет.
13. Наш дом. RU номинация Академический вокал Дата проведения 02
14. Вариант 5 1Внутреннее содержимое ядра называется- в нуклеоплазма; 2
15. Слово свіжий вжито в прямому значенні в рядку А свіжа газета Б свіжий хліб В свіжа сорочка Г свіжий в
16. 3 Билет 1 Инструкция- Внимательно прочитайте ситуационную задачу и задания к ней
17. Механизмы преодолевающего поведения
18. ИСКУССТВО НАВЕВАТЬ ПРОХЛАДУ 100 вееров из собрания Государственного музея А
19. У разі службового відрядження 2При переїзді на роботу в іншу місцевість 3При роботах у польових умовах
20. Нефть - кровь промышленности.html