11488

Hазработка программы транспонирование матрицы

Курсовая

Информатика, кибернетика и программирование

Курсовая работа По дисциплине технология программирования На тему разработка программы транспонирование матрицы. Содержание Введение Общая информация о языке программирования С матрицы транспонирование матрицы Постановка задачи Метод реше

Русский

2013-04-08

364 KB

84 чел.

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

По дисциплине «технология программирования»

На тему «разработка программы транспонирование матрицы».

Содержание

Введение

Общая информация о языке программирования С++ матрицы

транспонирование матрицы

  1.  Постановка задачи
  2.  Метод решения задачи
  3.  Алгоритм работы программы
  4.  Работа программы
  5.  Листинг-программа

Заключение

Список использованной литературы

Введение

Общая информация о языке программирования С++

С++ в настоящее время считается господствующим языком, используемым для разработки коммерческих программных продуктов. В последние годы это господство слегка поколебалось вследствие аналогичных претензий со стороны такого языка программирования, как Java, но маятник общественного мнения качнулся в другую сторону, и многие программисты, которые бросили С++ ради Jаvа, в последнее время поспешили вернуться к своей прежней привязанности. В любом случае эти два языка настолько похожи, что, изучив один из них, вы автоматически осваиваете 90% другого.

С# — это новый язык, разработанный Мiсгоsоft для сетевой платформы. По существу С# является разновидностью С++, и несмотря на ряд принципиальных отличий, языки С# и С++ совпадают примерно на 90%. Вероятно, пройдет немало времени, прежде чем язык С# составит серьезную конкуренцию языку С++; но даже если это и произойдет, то знание языка С++ окажется существенным преимуществом.

С++ является языком программирования общего назначения. Естественная для него область применения - системное программирование, понимаемое в широком смысле этого слова. Кроме того, С++ успешно используется во многих областях приложения, далеко выходящих за указанные рамки. Реализации С++ теперь есть на всех машинах, начиная с самых скромных микрокомпьютеров - до самых больших супер-ЭВМ, и практически для всех операционных систем.

Возникновение и эволюция языка C++

   Бьерн Страуструп является разработчиком языка С++ и создателем первого транслятора. Он - сотрудник научно-исследовательского вычислительного центра AT&T Bell Laboratories в Мюррей Хилл (Нью-Джерси, США). Он получил звание магистра математики и вычислительной техники в университете г. Аарус (Дания), а докторское звание по вычислительной технике в кэмбриджском университете (Англия). Он специализируется в области распределенных систем, операционных систем, моделирования и программирования. Вместе с М. А. Эллис он является автором полного руководства по языку С++ - "Руководство по С++ с примечаниями".

   Безусловно С++ многим обязан языку С [8], который сохраняется как его подмножество. Сохранены и все свойственные С средства низкого уровня, предназначенные для решения самых насущных задач системного программирования. С, в свою очередь, многим обязан своему предшественнику языку BCPL [13]. Комментарий языка BCPL был восстановлен в С++.  Еще одним источником вдохновения был язык SIMULA-67 [2,3]; именно из него была заимствована концепция классов (вместе c производными классами и виртуальными функциями).   Возможность в С++ перегрузки операций и свобода размещения описаний всюду, где может встречаться оператор, напоминают язык Алгол-68 [24].

   Более ранние версии языка, получившие название "С с классами" [16], использовались, начиная с 1980 г. Этот язык возник потому, что автору потребовалось написать программы моделирования, управляемые прерываниями. Язык SIMULA-67 идеально подходит для этого, если не учитывать эффективность. Язык "С с классами" использовался для больших задач моделирования. Строгой проверке подверглись тогда возможности написания на нем программ, для которых критичны ресурсы времени и памяти. В этом языке недоставало перегрузки операций, ссылок, виртуальных функций и многих других возможностей.  Впервые С++ вышел за пределы исследовательской группы, в которой работал автор, в июле 1983 г., однако тогда многие возможности С++ еще не были разработаны.

   Название С++ (си плюс плюс) , было придумано Риком Маскитти летом 1983 г. Это название отражает эволюционный характер изменений языка С. Обозначение ++ относится к операции наращивания С. Чуть более короткое имя С+ является синтаксической ошибкой. Кроме того, оно уже было использовано как название совсем другого языка. Знатоки семантики С находят, что С++ хуже, чем ++С. Язык не получил названия D, поскольку он является расширением С, и в нем не делается попыток решить какие-либо проблемы за счет отказа от возможностей С. Еще одну интересную интерпретацию названия С++ можно найти в приложении к [12].

   Изначально С++ был задуман для того, чтобы автору и его друзьям не надо было программировать на ассемблере, С или других современных языках высокого уровня. Основное его предназначение - упростить и сделать более приятным процесс программирования для отдельного программиста.  До недавнего времени не было плана разработки С++ на бумаге. Проектирование, реализация и документирование шли параллельно. Никогда не существовало "проекта С++" или "Комитета по разработке С++". Поэтому язык развивался и продолжает развиваться так, чтобы преодолеть все проблемы, с которыми столкнулись пользователи. Толчками к развитию служат также и обсуждения автором всех проблем с его друзьями и коллегами.

   С момента выхода в свет первого издания этой книги язык С++ подвергся существенным изменениям и уточнениям. В основном это касается разрешения неоднозначности при перегрузке, связывании и управлении памятью. Вместе с тем, были внесены незначительные изменения с целью увеличить совместимость с языком С. Были также введены некоторые обобщения и существенные расширения, как то: множественное наследование, функции-члены со спецификациями static и const, защищенные члены (protected), шаблоны типа и обработка особых ситуаций. Все эти расширения и доработки были нацелены на то, чтобы С++ стал языком, на котором можно создавать и использовать библиотеки. Все изменения описываются в [10,18,20,21 и 23].  

Другие расширения, введенные за период между 1985 и 1991 г.г. (такие как множественное наследование, статические функции-члены и чистые виртуальные функции), скорее появились в результате обобщения опыта программирования на С++, чем были почерпнуты из других языков.

Сделанные за эти шесть лет расширения языка прежде всего были направлены на повышение выразительности С++ как языка абстракции данных и объектно-ориентированного программирования вообще и как средства для создания высококачественных библиотек с пользовательскими типами данных в частности.

Примерно в 1987 г. стало очевидно, что работа по стандартизации С++ неизбежна и что следует незамедлительно приступить к созданию основы для нее [22].  

Фирма AT&T Bell Laboratories внесла основной вклад в эту работу. Около ста представителей из порядка 20 организаций изучали и комментировали то, что стало современной версией справочного руководства и исходными материалами для ANSI по стандартизации. С++. Наконец, по инициативе фирмы Hewlett-Packard в декабре 1989 г. в составе ANSI был образован комитет X3J16. Ожидается, что работы по стандартизации С++ в ANSI (американский стандарт) станут составной частью работ по стандартизации силами ISO (Международной организации по стандартизации).

С++ развивался одновременно с развитием некоторых фундаментальных классов.

Матрица

Матрица — математический объект, записываемый в виде прямоугольной таблицы элементов кольца или поля (например, целых или комплекс- ных чисел), которая представляет собой совокупность строк и столбцов, на пересечении которых находятся её элементы. Количество строк и столбцов матрицы задают размер матрицы. Хотя исторически рассматривались, например, треугольные матрицы, в настоящее время говорят исключительно о матрицах прямоугольной формы, так как они являются наиболее удобными и общими.

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

Матрицы допускают следующие алгебраические операции:

  •  сложение матриц, имеющих один и тот же размер;
  •  умножение матриц подходящего размера (матрицу, имею- щую n столбцов, можно умножить справа на матрицу, имеющую n строк);
  •  умножение матрицы на элемент основного кольца или поля (т. н. скаляр).

Относительно сложения матрицы образуют абелеву группу; если же рассматривать ещё и умножение на скаляр, то матрицы образуют модуль над соответствующим кольцом (векторное пространство над полем). Множество квадратных матриц замкнуто относительно матричного умножения, поэтому квадратные матрицы одного размера образуют ассоциативное кольцо с единицей относительно матричного сложения и матричного умножения.

Матрица представляет собой матрицу некоторого линейного оператора: свойства матрицы соответствуют свойствам линейного оператора. В частности, собственные числа матрицы — это собственные числа оператора, отвечающие соответствующим собственным векторам.

В математике рассматривается множество различных типов и видов матриц. Таковы, например, единичнаясимметричная, кососимметричная, верхнетреугольная (нижнетреугольная) и т. п. матрицы.

Особое значение в теории матриц занимают всевозможные нормальные формы, то есть канонический вид, к которому можно привести матрицу заменой координат. Наиболее важной (в теоретическом значении) и проработанной является теория жордановых нормальных форм. На практике, однако, используются такие нормальные формы, которые обладают дополнительными свойствами, например, устойчивостью

Транспонирование матрицы

Транспонированная матрица получается из исходной путем замены строк столбцами c одинаковыми номерами.

Простая операция, не требующая дополнительных пояснений. Однако для наглядности приведем пример транспонированной матрицы:

Так для матрицы А

Транспонированная будет иметь вид:

Транспонирование матрицы

Задание: транспонировать матрицу любого размера.

Для транспонирования матрицы возьмем матрицу. Размер матрицы будет:

6 – строк;

6 - столбцов.

Для получения ответа нам необходимо заменить строки столбцами и столбцы сроками.

Ответ:

Постановка задачи

Разроботать программу, которая будет транспонировать матрицы любого размера.

Метод решения задачи

Программа будет иметь консольный вид. Изначально, при запуске программы, будет выходить интерфейс, в котором ясно написано что следует делать для преобразования матриц способом транспонирования. В конце своей работы программа транспонирует матрицу заданную пользователем. При завершении программы стоит нажать клавишу «Enter», после чего программа завершит свою работу.

Алгоритм работы программы (блок-схема)

Работа программы (скриншоты)

Интерфейс или главное меню программы выглядит так: (Рис 1)

Рис 1

Размерность указывается цифрами.

Вводим, размерность к примеру «6». После чего вам необходимо вводить числа, для заполнения матрицы. (Рис 2)

Рис 2

Теперь цифрами заполняем матрицу(Рис 3)

Рис 3

Проверка:

Проверка в ручную не требуется.

Нажимаеи на любую клавишу. Затем выходим из программы.

Для выхода нажимаем клавишу «q» или «enter» и выходим из программы.

Листинг-программа

#include <iostream>

#pragma hdrstop

#pragma argsused

#include <stdlib.h>

#include <time.h>

#include <iomanip>

#include <conio.h> //для подключения getch()

using namespace std;

int main()

{    int i,j;

   srand(time(NULL));

   int razm=0;

   int mas[100][100];

   const x=-999;

   const y=999;

cout <<"Programma Transponirovanya Matric"<<endl;

cout <<"Vvedite razmernost' matrici (Naprimer:2;3;4):";

cin >> razm;

while (razm==0 || razm==1)

 

 {

  cout <<"Razmer matrici doljen bit' ne menee 2-x!!!"<<endl;

  cout <<"Vvedite razmernost' matrici (Naprimer:2;3;4):";

  cin >> razm ;

 }

 

cout <<"Zapolnite Matricy"<<endl;

   for (i=1; i<=razm; i++)

      for (j =1; j<=razm; j++)

      

        {

          cout<<"M "<<i<<" "<<j<<":";

          cin >> mas[i][j];

           if (mas[i][j]<x || mas[i][j]>y)

            

            {

              mas[i][j]=0;

             }

             

         }

         

 cout << endl << "*********" << endl;

 cout << endl << "Ishodnaya Matrica:" << endl;

   for (i =1; i <=razm; i++)

   

   {

       for (j =1; j <=razm; j++)

       

       {

           cout << setw(2) << mas[i][j] << " ";

           if ((j)%razm==0)

           {

               cout << endl;

               }

           }

    

       }

   cout << endl << "*********" << endl;

   cout << endl << "Transponirovannaya Matrica:" << endl;

   for (i =1; i <=razm; i++)

   

   {

       for (j =1; j <=razm; j++)

       

       {

           cout << setw(2) << mas[j][i] << " ";

           if ((j)%razm==0)

           {

               cout << endl;

               }

           }

       }

system("pause");

 getch();

         return 0;

}

Заключение.

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

Теперь мы можем легко пользоваться данной программой. Транспонирование матрицы с помощью программы гораздо проще, чем в ручную. Данная программа может транспонировать матрицу больших размеров за несколько секунд.

В ходе разработке были проанализированы и использованы следующие технологии:

1) Str

2) массивы;

3) Циклы;

4) Структура выбора;

В качестве дальнейшего совершенствования программы представляется возможным, что бы при вводе матрицы строилась сразу матрица.

Список использованной литературы

  •  Дейтел Как программировать на с++
  •  http://ru.wikipedia.org/


 

А также другие работы, которые могут Вас заинтересовать

19404. Спектр сигнала 11.19 KB
  Спектр сигнала . называют графическое изображение коэффициентов ряда Фурье для конкретного сигнала. 1. Периодическая последовательность прямоугольных импульсов содержит бесконечно большое число гармоник кратных частоте следования импульса. 2. Чем меньше длительн
19405. Спектральная плотность сигнала 10.68 KB
  Спектральная плотность сигнала . Рассмотрим малый интервал частот образующий окресность некоторого выбранного значения частоты в приделах этого интервала будет находиться множество отдельных пар спектрально составляющих частот которые отличаются сколь угодно можно...
19406. Превращение непрерывного сигнала в цифровой 10.9 KB
  Превращение непрерывного сигнала в цифровой. Для сигнала будет справедлива теорема Котельникова которая гласит что произвольный сигнал спектр которого не содержит частот выше чем Fверх может быть полностью восстановлена если известны отчетные значения этого сигнала
19407. Классификация электрических цепей 11.25 KB
  Классификация электрических цепей Электрической цепью называют совокупность устройств и объектов предназначенных для распределения взаимного преобразования и передачи электрической и других видов энергии и информации. Свое назначение цепь выполняет при наличии в
19408. Цепь с емкостью 67.87 KB
  Цепь с емкостью Ток в цепи конденсатора пропорционален скорости изменения напряжение и измеряется синусоидально опережая по фазе напряжения на угол 900 При нарастании напряжения цепь работает в режиме потребления при уменьшении в режиме генератора. Средняя мощнос
19409. Четырехполюсники 11.15 KB
  Четырехполюсники. При анализе электрических цепей очень часто бывает удобным выделить фрагмент цепи имеющий две пары зажимов. Поскольку электрические электронные цепи очень часто связаны с передачей энергии или обработкой и преобразованием информации одну пару заж...
19410. Свободные колебания в идеальном контуре 12.38 KB
  Свободные колебания в идеальном контуре. Свободные колебания в идеальном контуре характеризуются следующими свойствами. Эквивалентная схема. Свободные колебания в реальном и идеальном контурах имеющих одинаковые L и С весьма незначительно отличаются по частоте и с...
19411. Генезис науки. Основные этапы развития науки 32 KB
  Генезис науки. Основные этапы развития науки. Относительно возникновения науки существуют пять точек зрения: 1Наука была всегда начиная с момента зарождения человеческого общества так как научная любознательность органично присуща человеку; 2Наука возникла в Дре...
19412. Техника. Этапы развития 28 KB
  Техника общее название различных преспособлениймеханизмов и устройствне существуемых в природе и созданных человеком. Техника это судьба человечества сопровождающая его с момента пробуждения сознания. Первоначально в эпоху каменного века техника была орудием уб...