11488

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

Курсовая

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

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

Русский

2013-04-08

364 KB

76 чел.

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

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

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

Содержание

Введение

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

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

  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/


 

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

1488. СОВЕРШЕНСТВОВАНИЕ БИОТЕХНОЛОГИИ ПРОИЗВОДСТВА ПИТАТЕЛЬНЫХ СРЕД ДЛЯ КУЛЬТИВИРОВАНИЯ ЧУМНОГО МИКРОБА НА ОСНОВЕ СЫРЬЯ ЖИВОТНОГО И РАСТИТЕЛЬНОГО ПРОИСХОЖДЕНИЯ 1010.59 KB
  Среды на основе сырья животного происхождения и их использование при культивировании чумного микроба. Разработка ускоренного способа приготовления ферментативных мясных гидролизатов. Оценка качества сред по пигменто- и индолообразованию тест-штаммов. Сравнительное изучение ростовых качеств питательных сред, приготовленных с использованием ферментативного гидролизата сои (бобов).
1489. Измерительные системы автоматизации работы железнодорожного транспорта 50.68 KB
  Внедрение современных многофункциональных и высокопроизводительных измерительных систем и мобильных комплексов (МИКАР) позволит автоматизировать многие технологические операции и, как следствие, сократить трудозатраты.
1490. Разработка схемы выпрямителя 119.13 KB
  Схема выпрямителя с П-образным LC-фильтром, номинальное напряжение нагрузки 600 Вольт, номинальная мощность 100 Ватт, допустимый коэффициент пульсации 1%, напряжение сети переменного тока 110 В при частоте 400 Гц.
1491. Индуктивная связь между катушками 83.68 KB
  Определим токи во всех ветвях схемы. Построим диаграмму токов и топографическую диаграмму напряжений. Составим баланс активных и реактивных мощностей. Построим на одном графике кривые мгновенных значений e1 и i3. Определим показания ваттметра.
1492. Особенности математического моделирования 156.83 KB
  Технологический объект управления. Цель и задачи математического моделирования систем управления. Блочный принцип построения модели. Аналитический метод построения математических моделей. Основные потоки. Модель идеального смещения. Модель идеального вытеснения. Однопараметрическая диффузионная модель.
1493. Формирование ассортимента товаров в организации 196.68 KB
  Организационно - хозяйственная характеристика организации. Основные обязанности работников. Рабочее время и время отдыха. Изучение нормативно-правовых документов. Разработка планов снабжения организации. Коммерческая деятельность по закупкам товаров организации.
1494. Расчет привода электродвигателя 94.53 KB
  Кинематический расчет привода и выбор электродвигателя. Расчет закрытой цилиндрической передачи. Коэффициент ширины зубчатого венца. Проверочный расчет на контактную выносливость. Проверочный расчет на изгибающую выносливость.
1495. Политология как наука 147.17 KB
  Политология: предмет и функции. Становление и развитие политологии как науки и учебной дисциплины. Задачи курса политологии. Генезис, признаки, структура и функции государства. Гражданское общество: сущность и принципы организации. Конституция Республики Беларусь о формах государственного правления и устройства страны.
1496. Управление предприятием на примере автосалона GREGORYS CARS 50.93 KB
  Общая характеристика и структура управления предприятия. Основный виды деятельности и контроль качества оказываемых услуг. Организация и разработка технологических процессов сервиса на предприятии. Применения оргтехники и средств связи на предприятиями.