11488

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

Курсовая

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

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

Русский

2013-04-08

364 KB

72 чел.

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

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

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

Содержание

Введение

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

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

  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/


 

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

49355. Методы логического и физического кодирования 292.4 KB
  В процессе выполнения задания необходимо выполнить логическое и физическое кодирование исходного сообщения в соответствии с заданными методами кодирования провести сравнительный анализ рассматриваемых методов кодирования выбрать и обосновать наилучший метод для передачи исходного сообщения. ЭТАПЫ РАБОТЫ Формирование сообщения В качестве исходного сообщения подлежащего передаче используются фамилия и инициалы студента выполняющего задание. Для цифрового представления сообщения необходимо использовать SCIIкоды. Определить длину сообщения.
49356. Методы локализации неисправностей в аппаратуре СВ и РМ 196.92 KB
  Задано внешнее проявление неисправности: отсутствует развертка на экране БИО по координате Х. Эти аналоговые сигналы поступают на блок БИО где обеспечивают отклонение луча ЭЛТ из центра в необходимое место экрана а ИПТ обеспечивает подсвет отклоненного луча.3 Блок индикатора основной Блок индикатора основной БИО предназначен для: стабилизации вторичной информации о воздушной обстановке; отображение результатов целераспределения состояния боевой готовности и этапов ведения боевых действий подчиненными огневыми средствами;...
49357. Составление алгоритма и программы вычисления функции с использованием нестандартных функций 44.54 KB
  Основной задачей выполнения курсовой работы по технологической информатике является закрепление теоретических знаний,полученных в процессе самостоятельной работы, а также на лекциях, практических , лабораторных занятия, развитие практических навыков программирования , работы за терминалами или персональными компьютерами.
49362. Особливості функціонування страхового ринку в Україні 136.24 KB
  Економічна сутність принципи та основні функції страхування Види та форми страхування в Україні Аналіз динаміки страхових премій та страхових виплат за видами страхування у 20072009 рр. Особливого значення в звязку з цим набувають питання страхування господарської діяльності усіх суб’єктів економіки що враховує інтереси незалежних суб'єктів держави і направленої на...
49363. Цифровые системы передачи непрерывных сообщений 1.12 MB
  Исходными данными для выполнения работы являются: 1 статистические характеристики сообщения: значение показателей степени k= 8; значение частоты fo 2000 Гц; тип распределения сообщения– № 4 распределение Лапласа; 2 допустимое значение относительной среднеквадратичной ошибки искажений сообщения при его преобразовании в цифровую форму и действии помех: δ = 02; 3 вид модуляции сигнала во второй ступени: ЧМ. Распределить относительную среднеквадратичную ошибку ОСКО входных преобразований на четыре...