Двумерные массивы

Ознакомление с тестовым примером и графическим представлением алгоритма программы в виде блок-схемы. Рассмотрение и характеристика функций разрабатываемой программы на языке C++. Изучение процесса записи в файл исходной и преобразованной матрицы.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 11.07.2014
Размер файла 2,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ КЫРГЫЗСКОЙ РЕСПУБЛИКИ

КЫРГЫЗСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМ И.РАЗЗАКОВА

ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

КАФЕДРА ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ КОМПЬЮТЕРНЫХ СИСТЕМ

КОНТРОЛЬНАЯ РАБОТА

ПО ДИСЦИПЛИНЕ: СТРУКТУРНОЕ ПРОГРАММИРОВАНИЕ

НА ТЕМУ: ДВУМЕРНЫЕ МАССИВЫ

Выполнил: студент гр. Пи-1-12

Абдыкасымов Айбек

Руководитель: доц. Макиева З.Д.

БИШКЕК 2013

Содержание

1. Условие задачи

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

3. Графическое представление алгоритма решения в виде блок-схемы

4. Словесный (пошаговый) алгоритм решения

5. Программа на языке C++

6. Тестовый пример

Список литературы

1. Условие задачи

Заполнить матрицу случайными числами (числа в диапазоне (0,99)). Отобразить матрицу симметрично относительно главной.

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

1. Ввести размерность матрицы.

2. Ввести и заполнить матрицу случайными числами с помощью генерации случайных чисел.

3. Отобразить элементы матрицы симметрично относительно главной диагонали.

4. Выбрать автоматически или вручную цвета для элементов матрицы или оставить матрицу простой («бесцветной»).

5. Вывести на экран и записать в файл исходную и преобразованную матрицу.

Использовать динамические массивы, форматированный вывод данных

Список используемых переменных:

Начальные данные:

n - размерность матрицы тип данных int;

matrix - двумерный динамический массив (матрица) заполненный с помощью генерации случайных чисел в диапазоне от 0 до 99, тип данных int.

Результирующие данные:

matrix - двумерный динамический массив (матрица) у которого элементы симметрично отображены относительно главной диагонали. Возможность задавать цвета для элементов ниже и выше главной диагонали.

Промежуточные данные:

v- переменная для выбора варианта действия (y/n) продолжить выполнение программы или нет, тип данных char.

с-переменная для выбора варианта действия (y/n) сделать цветную матрицу или нет, тип данных char.

сvs-переменная для выбора варианта действия 1:Выбрать цвет элементов матрицы автоматически, 2:Выбрать цвет вручную, тип данных char.

color-переменная для выбора цвета для элементов матрицы выше главной диагонали, тип данных char.

color2-для выбора цвета для элементов ниже главной диагонали, тип данных char.

i,j-счетчики цикла.

3. Графическое представление алгоритма программы в виде блок-схемы

Функция input_matrix - Ввод матрицы с помощью генерации случайных чисел

Функция main

Функция new_matrix - Матрица симметрично относительно главной диагонали алгоритм программа матрица

Функция output_matrix - Вывод матрицы (без цвета)

Функция generation_color - Генератор цвета(для автоматического выбора цвета)

Функция selection_color - Выбор цвета для элементов матрицы ниже и выше главной диагонали

Функция colour_matrix - Вывод цветной матрицы

Функция recording - запись в файл

Функция line - Выбор варианта вывода матрицы (цветная матрица или простая матрица)

Функция outline - Выбор варианта (продолжить выполнение программы или прекратить выполнение программы)

4. Словесный (пошаговый) алгоритм решения

В данной программе используются функции из библиотек

· iostream - для ввода и вывода данных на экран.

· iomanip - для форматированного вывода данных

· fstream - для записи данных в файл.

· stdlib.h - для генерации случайных чисел.

· time.h - для использования системного времени компьютера.

· Windows.h - для изменения цвета текста файла.

Были разработаны 10 функций: main, input_matrix, new_matrix, output_matrix, generation_color, selection_color, colour_matrix, recording, line , outline. Все функции имеют тип void, кроме main который имеет тип int.

В функции colour_matrix был применен хэндл HANDLE hStdOut=GetStdHandle(STD_OUTPUT_HANDLE); он необходим чтобы извлечь дескриптор стандартного вывода данных (дескриптор - манипулятор ссылающийся на определенные объекты операционной системы или определенной программы, в нашем случае на консоль ). И далее был применена стандартная функция SetConsoleTextAttribute чтобы задать атрибут для изменения цвета текста в консоли т.е SetConsoleTextAttribute(hStdOut,color|FOREGROUND_INTENSITY); где переменная color используется для того чтобы задавать цвет. Чтобы возвратить стандартный (белый цвет ) консоли было просто задано SetConsoleTextAttribute(hStdOut,FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_RED);

Опишем пошаговый алгоритм действия программы:

1. Вводится размерность матрицы. Идем далее.

2. Объявляется двумерный динамический массив (матрица). Идем далее

3. Матрица заполняется случайными числами от 0 до 99. И идем к следующему пункту.

4. Матрица записывается в файл “запись.txt”. Идем далее.

5. Через цикл for проверяем если j>i, то mx[i][j]=m[j][i] и идем далее.

6. Спрашиваем у пользователя, хочет ли он продолжить работу программы:

· Если да, то идем к следующему пункту.

· Если нет, выводим “действие программы прекращено” и идем к пункту 15.

· Ecли он ввел что-то другое выводим “Ошибка введите (y/n) т.е (да или нет)” и заново возвращаемся к данному пункту

7. Спрашиваем у пользователя, хочет ли он сделать цветную матрицу.

· Если да, то идем к следующему пункту.

· Если нет, выводим преобразованную матрицу на экран и идем к пункту 14.

· Ecли он ввел что-то другое ,выводим “Ошибка введите (y/n) ” и проверяем заново возвращаемся к данному пункту

8. Спрашиваем у пользователя, как он хочет выбрать цвета. Выбор состоит из двух вариантов 1: Автоматически. 2: Вручную.

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

· Если пользователь введет 2, то перейдем к следующему пункту.

· Если пользователь введет другой символ, то выйдет сообщение об ошибке ввода и возвращаемся заново к данному пункту.

9. Выводим на экран список цветов и их индексов.

10. И из списка выбираем цвет для элементов выше главной диагонали, вводим его индекс. Идем к следующему пункту.

11. Вводим индекс цвета для элементов ниже главной диагонали. Проверяем, если выбран один и тот же цвет для элементов ниже и выше главной диагонали, то выйдет сообщение ” Ошибка - заданные цвета должны быть разными ” и заново идем к этому пункту.

Если пользователь ввел индекс > 12 сообщение об ошибке и возвращаемся к пункту 10.

12. Проверяя в цикле for условия i<j и j<i объявляя перед ним атрибут выбранного цвета, задается цвет для элементов выше и ниже главной диагонали. И для сообщений выводимых на экран после вывода цветной матрицы возвращается стандартный цвет текста консоли. Идем далее.

13. Выводим на экран цветную преобразованную матрицу и идем к следующему пункту.

14. Матрица записывается в файл “запись.txt”, и идем дальше.

15. Удаляем динамический массив, выводится сообщение об удачном удалении массива. Прекращается работа программы.

5. Программа на языке C++

//Контрольая работа по структурному программированию.

//Абдыкасымов Айбек. ПИ 1-12.

#include<iostream>//Библиотека для ввода и вывода данных

#include<iomanip> //Библиотека для форматированного вывода данных

#include<stdlib.h>//Библиотека для генерации случайных чисел

#include<time.h> //Библиотека чтобы использовать системное время компьютера

#include<fstream> //Библиотека для чтения и записи в файл

#include<Windows.h>//Библиотека для изменения цвета текста при выводе файла

using namespace std;

// Ввод матрицы с помощью генерации случайных чисел

void input_matrix(int **matrix,int n)

{int i,j;

for(i=0;i<n;i++)

for(j=0;j<n;j++)

{matrix[i][j]=rand()%99;}

}

// Матрица симметрично относительно главной диагонали

void new_matrix(int **matrix,int n)

{ int i,j;

for(i=0;i<n;i++)

for( j=0;j<n;j++)

if(j<i)

{matrix[i][j]=matrix[j][i];}}

//Вывод матрицы(без цвета)

void output_matrix(int **matrix,int n)

{int i,j;

for(i=0;i<n;i++)

{for(j=0;j<n;j++)

{cout<<setw(3)<<matrix[i][j];}

cout<<endl;}}

//Генератор цвета(для автоматического выбора цвета)

void generation_color(int &color,int & color2)

{do{color=rand()%12; //задает номер цвета в случайном порядке для элементов выше главной диагонали

color2=rand()%12;} //для элементов выше главной диагонали

while(color==color2);}

//Выбор цвета для элементов матрицы ниже и выше главной диагонали

void selection_color(int &color,int & color2)

{cout<<"Список цветов и их индексов:\n";

cout<<endl;

cout<<" "<<" - 1 : синий "<<endl;

cout<<" "<<" - 2 : зеленый "<<endl;

cout<<" "<<" - 3 : голубой "<<endl;

cout<<" "<<" - 4 : красный "<<endl;

cout<<" "<<" - 5 : сиреневый "<<endl;

cout<<" "<<" - 6 : желтый "<<endl;

cout<<" "<<" - 7 : белый "<<endl;

cout<<" "<<" - 8 : темносерый "<<endl;

cout<<endl;

do{

cout<<" Выберите цвет для элементов матрицы выше главной диагонали - ";

cin>>color;

cout<<endl;

do{

cout<<" Выберите цвет для элементов матрицы ниже главной диагонали - ";

cin>>color2;

cout<<endl;

if(color==color2)

{cout<<" Ошибка - заданые цвета должны бать разными "<<endl;

cout<<endl;}

}while(color==color2);

if((color>=12 && color2 >=12))

{cout<<"Ошибка"<<endl;}

}while((color>=12 && color2 >=12));}

// Вывод цветной матрицы

void colour_matrix(int **matrix,int n)

{int i,j, color,color2;char cvs;

cout<<endl;

cout<<"Как выбрать цвет (введите индекс):\n";

cout<<" - 1 : Автоматически \n";

cout<<" - 2 : Вручную \n";

cout<<endl;

cout<<"Выбрать - ";

do{

cin>>cvs;

if(cvs=='1')

{generation_color(color,color2);break;}

else if(cvs=='2')

{selection_color(color,color2);break;}

else{cout<<"Ошибка введите индекс - ";}

}while(cvs!='1'||cvs!='2');

cout<<endl;

cout<<"Новая матрица:"<<endl;

cout<<endl;

HANDLE hStdOut=GetStdHandle(STD_OUTPUT_HANDLE); // Получаем хэндл консоли (дескриптор устройства стандартного вывода)

for(i=0;i<n;i++){

for (j=0;j<n;j++){

SetConsoleTextAttribute(hStdOut,FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_RED);

if(i < j)

{SetConsoleTextAttribute(hStdOut,color|FOREGROUND_INTENSITY);} //Задаем атрибут цвета текста консоли для элементов выше главной диагонали

else if(j < i)

{SetConsoleTextAttribute(hStdOut,color2|FOREGROUND_INTENSITY);} //Задаем атрибут цвета текста консоли для элементов ниже главной диагонали

cout<<setw(3)<<matrix[i][j];

SetConsoleTextAttribute(hStdOut,FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_RED);} //Задаем белый цвет текста (возвращаем стандартный цвет текста консоли)

cout<<endl;}}

//Запись в файл

void recording(int **matrix,int n){

int i,j;

ofstream out;

out.open("запись.txt",ios::app);

out<<endl;

for(i=0;i<n;i++){

for (j=0;j<n;j++){

out<<setw(3)<<matrix[i][j];}

out<<endl;}

out.close();}

//Выбор варианта вывода матрицы (цветная матрица или простая матрица)

void line (int **matrix,int n){

char c;

cout<<"Сделать цветную матрицу или нет ?(y/n) ";

do{

cin>>c;

if(c=='y'|| c=='Y' )

{cout<<endl;

colour_matrix(matrix,n);

break;}

else if(c =='n'||c =='N')

{cout<<endl;

cout<<"Новая матрица:"<<endl;

output_matrix(matrix,n);

break;}

else{cout<<"Ошибка.Введите (y/n)";}

}while(c!='y'|| c!='Y');

recording(matrix,n);

cout<<"\n";}

//Выбор варианта (продолжить выполнение программы или прекратить выполнение программы)

void outline(int **matrix,int n)

{char v;

do{

cin>>v;

if(v=='y'|| v=='Y' )

{line(matrix,n);

cout<<"\n";

cout<<"Новая матрица зополнена симметрично относительно главной диагонали и записана в файл"<<endl;

break;

cout<<"\n";}

else if(v=='n'||v=='N')

{cout<<endl;

cout<<"Действие программы не выполнено по указанию пользователя"<<endl;

break;}

else{cout<<"Ошибка.Введите (y/n)";}}

while(v!='y'|| v!='Y');

cout<<"\n";}

// Главная функция

int main()

{setlocale (0,"russian");

srand((unsigned)time(NULL));

int **matrix;int n,i,j;

cout<<"Введите размерность матрицы = ";

cin>>n;

matrix=new int *[n] ;

for( j=0;j<n;j++)

matrix[j]=new int[n]; //объявление двумерного динамического массива

cout<<"Исходная матрица:"<<endl;

cout<<endl;

input_matrix(matrix,n);

output_matrix(matrix,n);

recording(matrix,n);

new_matrix(matrix,n);

cout<<endl;

cout<<"Исходная матрица задана и записана в файл, вы хотите продолжить выполнение программы(y/n) ";

outline(matrix,n);

for (i=0;i<n;i++)

delete matrix[i] ; // Удаление строк массива

delete [ ] matrix;

cout<<"Динамический массив успешно удален"<<endl<<endl;

system("pause");

return 0;}

6. Тестовый пример

Введем размерность матрицы 10.

Запись в файле “запись.txt”

Если мы на вопрос ”Сделать цветную матрицу или нет” введем n:

Список литературы

1. www.cyberforum.ru/cpp-beginners/thread350940.html-Форматирование и изменение цвета текста в консоли.

2. Дейтел Харви, Дейтел Пол. Как программировать на С++.

3. www.vsokolov.narod.ru/New_MSDN_API/Concole/fn_setconsoletextattribute.html - Функция SetConsoleTextAttribute.

4. www.cyberforum.ru/win-api/thread839319.html - Функция SetConsoleTextAttribute.

5. Е.К. Липачев.Технология программирования.С/С++.

Размещено на Allbest.ru

...

Подобные документы

  • Участники и инструментальные средства создания экспертной системы. Классификация, преимущества, сферы применения экспертных систем. Разработка блок-схемы алгоритма и программы на языке Турбо Паскаль для решения задачи по теме "Двумерные массивы".

    курсовая работа [1,0 M], добавлен 18.01.2014

  • Запись в файл и чтение в С++. Общее понятие о структуре. Многомерные и двумерные массивы. Логика работы программы. Схема алгоритма функции Main. Определение суммарного заработка, сотрудника с наибольшей зарплатой. Создание новой базы, листинг программы.

    курсовая работа [275,7 K], добавлен 07.10.2012

  • Описание используемых в программе операторов, процедур, функций. Директива include. Правила объявления и определения функций в СИ++. Блок-схема алгоритма программы. Подпрограммы чтения из файла и записи в файл. Использование заголовочных файлов.

    курсовая работа [346,8 K], добавлен 26.04.2012

  • Решения задачи графическим и программным способами. Описание алгоритма решения графическим способом, укрупненная схема алгоритма. Ввод элементов двумерного массива, вывод преобразованного массива, разработка программы на языке pascal, листинг программы.

    курсовая работа [115,5 K], добавлен 22.05.2010

  • Изучение категории типов данных, видов выражений и операций, работа на языке Си. Составление программы вычисления значения функции у(х) при произвольном значении х. Блок-схема алгоритма. Описание текста программы и рассмотрение контрольного примера.

    лабораторная работа [124,7 K], добавлен 09.01.2012

  • Программирование на языке Паскаль: алфавит, решение задач, простейшие программы, разветвляющие программы, циклические программы, ввод-вывод, массивы, подпрограммы, строковые данные, записи, файлы, использование библиотеки CRT, графика в Паскале.

    учебное пособие [211,1 K], добавлен 30.03.2008

  • Изучение основных этапов программирования на ассемблере, который является символическим представлением машинного языка, то есть каждой машинной команде соответствует команда ассемблера. Реализация алгоритма выполнения программы для просмотра bmp файлов.

    курсовая работа [248,0 K], добавлен 25.12.2012

  • Описание алгоритма решения задачи графическим способом. Вывод элементов массива. Описание блоков укрупненной схемы алгоритма на языке Pascal. Листинг программы, а также ее тестирование. Результат выполнения c помощью ввода различных входных данных.

    контрольная работа [150,4 K], добавлен 03.05.2014

  • Преобразование матрицы по заданным правилам. Методика работы с массивами, основанная на классических алгоритмах. Разработка и описание блок-схемы алгоритма. Листинг программы, экраны работы и отладки программы. Инструкция для пользователей программы.

    контрольная работа [338,4 K], добавлен 29.01.2013

  • Элементы и переменные, используемые для составления записи в Паскале. Основные числовые типы языка Turbo Pascal. Составление блок-схемы приложения, программирование по ней программы для вычисления функции. Последовательность выполнения алгоритма.

    лабораторная работа [256,9 K], добавлен 10.11.2015

  • Описание работы программы, осуществляющей запись команд графического экрана в файл формата BMP. Изучение функции чтения 18-битовых значений из нескольких последовательно расположенных регистров таблицы цветов. Составление блок-схемы и текста программы.

    курсовая работа [198,1 K], добавлен 20.11.2012

  • Составление программы на алгоритмическом языке Turbo Pascal. Разработка блок-схемы алгоритма её решения. Составление исходной Pascal-программы и реализация вычислений по составленной программе. Применение методов Рунге-Кутта и Рунге-Кутта-Мерсона.

    курсовая работа [385,0 K], добавлен 17.09.2009

  • Характеристика программирования с точки зрения процесса создания программы. Спецификация и определение требований к программе. Основные символы, используемые для представления алгоритма в виде блок-схемы. Особенности процесса поиска и устранения ошибок.

    лекция [234,9 K], добавлен 07.04.2011

  • Этапы процедуры принятия решений. Разработка математического алгоритма. Блок-схема алгоритма работы программы. Разработка программы на языке программирования С++ в среде разработки MFC. Текст программы определения технического состояния станка с ЧПУ.

    курсовая работа [823,0 K], добавлен 18.12.2011

  • Регрессионный анализ, его цели. Алгоритм вычисления статистических характеристик по заданным формулам. Запись алгоритма в виде блок-схемы и программы на языке Си. Отладка программы средствами табличного процессора. Функционирование программного комплекса.

    курсовая работа [1,2 M], добавлен 13.01.2016

  • Изучение условий поставленной задачи и используемых данных для разработки программы хранения информации о рейсах поезда. Описание разработанных функций, листинга, блок-схем алгоритмов и дерева функции. Рассмотрение сценария диалога данной программы.

    курсовая работа [532,7 K], добавлен 20.07.2014

  • Создание программы решения математических выражений методом трансляции с помощью обратной пользовательской записи на алгоритмическом языке Си. Определение функционального назначения процедур ChartoInt, Scobka и Sumin, представление их в виде блок-схем.

    курсовая работа [267,7 K], добавлен 20.11.2010

  • Построение ветвящихся процессов на примере табулирования функции на заданном промежутке. Построение блок-схемы, применение операторов цикла и условного перехода, математических функций и констант. Создание алгоритма и листинг программы на языке Pascal.

    лабораторная работа [154,1 K], добавлен 07.02.2012

  • Создание на языке C базы данных "Стадионы города", требования к программе. Осуществление загрузки базы данных в массив и вывод главного меню в основной программе. Алгоритм работы программы в виде блок-схемы. Описание функций программы и ее листинг.

    курсовая работа [183,6 K], добавлен 06.10.2010

  • Вывод преобразованной матрицы с новым содержимым вектора. Выдача на печать преобразованных матриц. Построение программы с массивами любой размерности, содержащими произвольные элементы. Расположение в матрице элементов в определенной последовательности.

    контрольная работа [74,9 K], добавлен 12.01.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.