11488

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

Курсовая

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

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

Русский

2013-04-08

364 KB

83 чел.

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

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

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

Содержание

Введение

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

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

  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/


 

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

53686. Технология обработки баз данных. Основные понятия и возможности. Работа с готовой базой данных 75 KB
  Цели: Образовательные: Сформировать представления о назначении и области применения баз данных. Сформировать основные понятия темы База данных Информационная система Система управления базами данных СУБД.
53687. Работа с клавиатурным тренажером 39.5 KB
  Цели: Научить работать с клавиатурным тренажером Потренироваться печатать. Работа по теме урока: Сейчас мы приступим к работе с клавиатурным тренажером. Работа с клавиатурным тренажером. Работа в Блокноте 10 25 4.
53688. Информационные процессы 136 KB
  Цели урока: Ввести понятие информационных процессов познакомить учащихся с понятиями: источник и приемник информации канал связи носитель информации исполнитель. Задачи: Образовательная: изучить понятия: информационные процессы виды информационных процессов; изучить способы хранения передачи и обработки информации; научить приводить примеры получения передачи и обработки информации; научить учеников решать практические задачи на использование изученных понятий. Что такое информация для человека Назовите некоторые...
53690. Рисование с натуры натюрморта «Дары осени» 69 KB
  Ознакомить с натюрмортом как жанром изобразительного искусства; научить выполнять изображение с натуры, различать оттенки красок; развить умение анализировать форму и цветовую окраску овощей.
53691. Рисование с натуры яблока 68.5 KB
  Цели урока: Образовательная: научиться рисовать яблоко с натуры. Воспитательные: воспитать интерес к рисункам с натуры; способствовать формированию положительного отношения к изобразительному искусству пробудить желание творить. Задачи: научить построению рисунка с натуры с применением пропорции; способствовать развитию чувства цвета; стимулировать учащихся к самоконтролю и дисциплине.
53692. Объемные изображения в скульптуре. Тобольская резная кость 62.5 KB
  Словарь: скульптура лепка рельеф План урока Организационный момент. Слово скульптура нам известно уже давно но вот какими возможностями обладает объёмное изображение какие виды скульптурных изображений существуют мы познакомимся сегодня на уроке. Скульптура древнейший вид искусства возникший на заре существования человечества. Что же представляет собой скульптура и чем она отличается от других видов искусства В живописи изображение создаётся красками на плоскости холста.
53693. Декоративное рисование «Кокошник» 38.5 KB
  Давайте проверим все ли пришли сегодня на урок или кто то решил в такую замечательную погоду пойти вместо школы погулять в парке отмечаются присутствующие У: А какое у нас сейчас время года ребята А какой месяц А число Не забываем что отвечать нужно полным ответом. Ответ детей если затрудняются оказать помощь У: Молодцы ребята У: сегодня на уроке мы будем рисовать красивый головной убор русских девушек кокошник. Подготовительная беседа:...
53694. Идет дождь 32.5 KB
  А какое у нас сейчас время года ребята А какой месяц А число Не забываем что отвечать нужно полным ответом. Ответ детей если затрудняются оказать помощь У: Молодцы ребята У: так как сегодня утром шел дождь темой нашего сегодняшнего урока будет идет дождь мы будем рисовать различные виды капелек дождя. Подготовительная беседа: У: ребята посмотрите за окно.