Программы циклической структуры с использованием векторов
Составление алгоритмов и написание программ циклической структуры с использованием векторов, указателей и векторов указателей на вектор на языке C++. Статическое и динамическое распределение памяти. Функция ввода и обработки элементов вектора или матрицы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 25.03.2015 |
Размер файла | 210,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство образования и науки Российской Федерации
Федеральное агентство по высшему образованию
Вятский государственный университет
Кафедра радиоэлектронных средств
Контрольная работа №2
По дисциплине "Информатика"
Киров 2013 г.
Цель работы: составление алгоритмов и написание программ циклической структуры с использованием векторов, указателей и векторов указателей на вектор на языке C++. Статическое и динамическое распределение памяти.
Задание: для решения задачи разработать следующие функции:
- функцию ввода элементов вектора или матрицы в соответствии с индивидуальным заданием;
- функцию обработки вектора или матрицы по правилу, определяемому индивидуальным вариантом;
- функцию вывода вектора или матрицы на экран в общепринятом виде;
- функцию main(), которая организует работу всех разработанных функций; в этой функции предусмотреть возможность многократного решения задачи с различными исходными данными.
- Программу разработать в двух видах:
- используя статическое распределение памяти для хранения исходного вектора или исходной числовой матрицы (предусмотреть некоторые максимально возможные значения параметров вектора или матрицы);
- используя динамическое распределение памяти для хранения исходного вектора или исходной матрицы.
Предусмотреть вывод на экран вектора или матрицы, как вновь введенных, так и сформированных, а также проверку данных на соответствие диапазону, предусматриваемому для данного типа данных.
Текст задания: Дан целочисленный массив S(n).Сформировать матрицу B, первая строка которой будет содержать элементы массива с четными номерами, а вторая - с нечетными.
Ход работы
Последовательность действий:
1. сохранить введенное с клавиатуры число N;
2. в цикле с параметром N заполнить массив вводимыми с клавиатуры числами;
3. вывести на экран полученный массив;
4. создать матрицу и заполнить её так, чтобы первая строка содержала элементы массива с четными номерами (0,2,4…), а вторая - с нечетными (1,3,5…);
5. вывести на экран полученную матрицу.
В функции main() объявляются массив mass и размер массива N. В случае со статическим распределением памяти размер массива будет ограничен 100 элементами, при динамическом - mass объявлен как указатель. Выбор распределения памяти производится с начала запуска программы, и организован он при помощи оператора switch-case. Далее происходит считывание введенного с клавиатуры значения N и если оно удовлетворяет условию 0<N<100 и является четным числом (для одинакового числа столбцов обеих строк будущей матрицы), циклически производится заполнение массива значениями с помощью функции fill(), затем элементы массива выводятся на экран функцией show().
Функция input() считывает с клавиатуры строку, затем преобразует ее в число типа int и возвращает управление обратно.
Функция fill() организует заполнение массива вводимыми с клавиатуры числами.
Функция show() выводит на экран требуемое количество элементов предложенного массива.
В функции matrix() производится объявление матрицы B и поочередное заполнение её строк элементами массива с четными (1-ая строка) и нечетными (2-ая строка) номерами. После заполнения матрицы выполняется вывод её содержимого на экран.
Тексты программы приведен ниже.
/*
Дан целочисленный массив S(n).Сформировать матрицу B, первая строка которой будет
содержать элементы массива с четными номерами, а вторая - с нечетными.
*/
#include "stdafx.h"
int input(void);
void fill(int*,int);
void show(int*,int);
void matrix(int*,int);
int _tmain(int argc, _TCHAR* argv[])
{
int N;
do
{
int inp;
// выбор задачи по виду распределения памяти
printf("\nChoose and input: 0 - static 1 - dynamic\n");
inp=input();
switch (inp)
{
case 0: //статическое распределение памяти
{
int mass[100];
do
{
printf("\nN= ");
N=input();
if (N<=100&&(N%2)==0)
{
fill(mass,N);
putchar('\n');
show(mass,N);
putchar('\n');putchar('\n');
printf("Result:");
putchar('\n');putchar('\n');
matrix(mass,N);
break;
}
else printf("Please try input N else: <100 and 4etnoe",100);
} while (1);
break;
}
case 1: //динамическое рапсределение памяти
{
do
{
printf("\nN= ");
N=input();
if (N<=100&&(N%2)==0)
{
int* mass = new int[N]; //выделение памяти для массива
fill(mass,N);
putchar('\n');
show(mass,N);
putchar('\n');putchar('\n');
printf("Result:");
putchar('\n');putchar('\n');
matrix(mass,N);
delete[] mass; //освобождение памяти
break;
}
else printf("Please try input N else: <100 and 4etnoe",100);
} while (1);
break;
}
}
putchar('\n');
printf("\nPress any key to continue or [N] to cancel...\n");
}
while (getch()!=0x6E);
//цикл будет продолжаться до тех пор
//пока пользователь не нажмет N
}
/* считывание вводимых символов*/
int input(void)
{
char str[256];
scanf("%s",&str);
/*Функция atoi (из ASCII в целое число) используется
для приведения символов строки в символы знакового челого (тип int)
*/
return atoi(str);
}
/*заполнение массива*/
void fill(int* dst,int size)
{
for (int i=0;i<size;i++)
{
printf("mass[%i]:",i);
dst[i]=input();
}
}
/*вывод массива на экран*/
void show(int* mass,int size)
{
for (int i=0;i<size;i++) printf("%i ",mass[i]);
}
/*формирование матрицы*/
void matrix(int* mass,int size)
{
int B [2][100];
int j=0;
//первая строка матрицы заполняется четными номерами элементов массива [0,2,4...]
for (int i=0;i<size;i+=2)
{
B[0][j]=mass[i];
++j;
}
int k=0;
//вторая строка матрицы заполняется нечетными номерами элементов массива [1,3,5...]
for (int i=1;i<size;i+=2)
{
B[1][k]=mass[i];
++k;
//вывод матрицы на экран
for (int i=0;i<2;++i)
putchar('\n');
for (int l=0;l<size/2;++l)
printf("%i ", B[i][l]);
}
Схемы алгоритмов функций приведены на рисунке, пример работы программы приведен на рисунке 1. Пример исполнения программы на рисунке 2.
алгоритм программа вектор матрица
Размещено на http://www.allbest.ru/
Рисунок 1 - Схемы алгоритмов функций
Рисунок 2 - Результат исполнения программы
Размещено на Allbest.ru
Подобные документы
Элементарные функции: тригонометрические и экспоненциальные, для определения округлений и остатков, размерности и размера матриц, задания одномерных и дву- массивов, векторов-столбцов и векторов-строк, удаления строк и столбцов, перестановки элементов.
презентация [139,0 K], добавлен 24.01.2014Состав Delphi-проекта, основные модули и процедуры, входящие в состав программного комплекса. Логическая схема структуры вектора векторов FArr. Применение быстрой сортировки QuickSort для обработки структуры. Руководство пользователя, листинг программы.
курсовая работа [375,0 K], добавлен 09.11.2010Общие требования к изображению отрезка с помощью цифрового дифференциального анализатора. Сравнительный анализ обычного и несимметричного алгоритмов и алгоритма Брезенхема для генерации векторов (соединения двух точек изображения отрезком прямой).
презентация [65,3 K], добавлен 14.08.2013Решение задач, прямо связанных с применением циклов и массивов. Условия применения различных видов циклической структуры. Операторы цикла с предусловием while, постусловием do-while и for. Особенности работы с одномерными и двумерными массивами.
курсовая работа [1,1 M], добавлен 31.08.2019Разработка блок-схемы и программы обработки одномерного массива с доступом к элементам с помощью индексов и с помощью указателей. Словесное описание алгоритма и пользовательского интерфейса, листинг программы обработки матрицы и результат её выполнения.
курсовая работа [391,1 K], добавлен 30.09.2013Ортонормированная матрица – матрица, столбцы и строки которой образуют системы ортонормированных векторов. Решения задачи для матрицы, которая является и не является ортонормированной. Разработка структур данных и алгоритмов. Код программы на языке С++.
курсовая работа [429,1 K], добавлен 09.03.2012Matlab - матричная лаборатория - система программирования для научно-технических расчетов. Особенности ввода векторов. Специальные матрицы, простые команды. Простые примеры, иллюстрирующие эффективность Matlab. Графический способ решения уравнений.
реферат [46,3 K], добавлен 05.01.2010Расчет матрицы по заданной формуле. Формирование вектора по алгоритму, построение его вектора. Структура окна С++. Свойства события компонент С++, которые использовались для реализации задачи. Структуры программирования. Блок-схемы алгоритмов подпрограмм.
курсовая работа [602,7 K], добавлен 26.06.2016Рассмотрение основных особенностей компьютерной программы Assembler: функции, структурное описание. Характеристика собственных векторов обработчиков прерываний. Div64 как функция-вычислитель, реализующая операцию деления знаковых чисел в формате 64:16.
контрольная работа [224,7 K], добавлен 11.03.2013Решение задач прикладного программирования. Оформление разработанных алгоритмов в виде графических схем. Написание программ с использованием подпрограмм, их отладка. Блок-схемы и листинг программ. Наборы тестов для отладки разработанных программ.
курсовая работа [575,8 K], добавлен 06.12.2013