Двумерные массивы
Ознакомление с тестовым примером и графическим представлением алгоритма программы в виде блок-схемы. Рассмотрение и характеристика функций разрабатываемой программы на языке 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