11488

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

Курсовая

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

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

Русский

2013-04-08

364 KB

71 чел.

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

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

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

Содержание

Введение

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

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

  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/


 

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

29738. Методика використання наочності на виробничому навчання 18.31 KB
  У сучасній дидактиці поняття наочності охоплює різні види сприймання (зоровий, слуховий, дотиковий). Жодне наочне приладдя не має абсолютних переваг перед іншими. У профтехучилищах застосовуються різні види демонстрацій, які можна поділити на три основні групи
29739. Інноваційні методи навчання та викладання 19 KB
  Педагогічна інновація - процес створення, поширення й використання нових засобів (нововведень) для розвязання тих педагогічних проблем, які до цього розвязувались по-іншому. Індивідуалізоване навчання є методом викладання
29740. Характеристика форм та методів індивідуальної роботи з учнями 18.19 KB
  Організаційне вміння викладача ПТНЗ Організаційні здібності це вміння педагога оптимальним чином здійснити часову організацію роботи. Організація роботи залежить від того як добре викладач володіє матеріалом і чи зможе він правильно розрахувати час потрібний на його засвоєння. Обмеженість у кількості годин вимагає раціонального підходу до планування занять самостійної роботи учнів і перевірки її результатів.
29741. Виховні завдання майстра виробничого навчання 18.69 KB
  Важливе виховне значення має їхня участь на заключній стадії навчання. Сутність та характеристика проблемного методу навчання Під проблемним навчанням розуміється сукупність дій які спрямовані на створення проблемної ситуації формування цієї проблеми її осмислення і вирішення. В основі проблемного методу навчання ідея про спосіб розвитку свідомості людини через розв'язування пізнавальних проблем що містять суперечності.
29742. Видозміни уроків виробничого навчання 15.97 KB
  Існують такі типи уроків виробничого навчання: урок формування початкових умінь і виконувати виробничі прийоми і операції; урок удосконалення умінь і формування навичок; урок комплекних робіт; урок виконання контрольнопровірочних робіт; урокспостереження за діяльністю передовиків і новаторів виробництва. Види уроків з виробничого навчання : Урокконкурс професійної майстерності Урокзалік Урокпрактикум самостійна робота учнів Семінар виробничого навчання Виробнича конференція Виробнича екскурсія Урок інструктування...
29743. Урок та його характеристика, методичні підструктури уроку 20.42 KB
  Для уроку як форми навчальної роботи властиві такі ознаки: Має строго позначені рамки навчального часу; На уроці як правило присутня постійний склад учнів приблизно одного віку і рівня підготовленості до навчальної роботи; Кожен урок відводиться на вивчення одного предмета; Урок має дидактичну структуру; Урок будується виходячи з цілей і завдань навчання і розвитку закономірностей і принципів навчального процесу; Творцем організатором і керівником уроку є вчитель педагог; Урок у своїй основі спрямований на навчання...
29744. Методика складання навчальної робочої програми з навчальної дисципліни 19.3 KB
  selfinstruction спрямована індивідуумом діяльність на самостійне одержання знань і або досвіду. Самонавчання самостійне утворення придбання систематичних знань у якійнебудь галузі науки техніки культури політичного життя і т. Сформованість у студентів навчальних мотивів образу мети та способів її досягнення знань і Основні структурні елементи уроку та їх характеристика. Забезпечення мотивації і прийняття учнями мети навчальнопізнавальної діяльності актуалізація опорних знань і умінь.
29745. Методика складання плану навчального заняття 16.97 KB
  В першу чергу при складані плану визначається тема і мета заняття обладнання уроку – це книжки плакати схеми тощо; визначення типу уроку комбіновані змішані уроки; урок засвоєння нових знань; урок формування навичок і вмінь; урок узагальнення і систематизації знань; урок практичного застосування знань навичок і умінь; урок контролю і корекції знань навичок і вмінь; методи проведення урокунайбільш поширені словесні методи: розповідь бесіда лекція пояснення; між предметні зв’язки встановити чи є зв’язки з іншими дисциплінами;...