Программы циклической структуры с использованием векторов
Министерство образования и науки Российской Федерации
Федеральное агентство по высшему образованию
Вятский государственный университет
Кафедра радиоэлектронных средств
Контрольная работа №2
По дисциплине "Информатика"
Киров 2013 г.
Цель работы: составление алгоритмов и написание программ циклической структуры с использованием векторов, указателей и векторов указателей на вектор на языке C++. Статическое и динамическое распределение памяти.
Задание: для решения задачи разработать следующие функции:
-функцию ввода элементов вектора или матрицы в соответствии с индивидуальным заданием;
-функцию обработки вектора или матрицы по правилу, определяемому индивидуальным вариантом;
-функцию вывода вектора или матрицы на экран в общепринятом виде;
-функцию main(), которая организует работу всех разработанных функций; в этой функции предусмотреть возможность многократного решения задачи с различными исходными данными.
-Программу разработать в двух видах:
-используя статическое распределение памяти для хранения исходного вектора или исходной числовой матрицы (предусмотреть некоторые максимально возможные значения параметров вектора или матрицы);
-используя динамическое распределение памяти для хранения исходного вектора или исходной матрицы.
Предусмотреть вывод на экран вектора или матрицы, как вновь введенных, так и сформированных, а также проверку данных на соответствие диапазону, предусматриваемому для данного типа данных.
Текст задания: Дан целочисленный массив S(n).Сформировать матрицу B, первая строка которой будет содержать элементы массива с четными номерами, а вторая - с нечетными.
Ход работы
Последовательность действий:
.сохранить введенное с клавиатуры число N;
.в цикле с параметром N заполнить массив вводимыми с клавиатуры числами;
.вывести на экран полученный массив;
.создать матрицу и заполнить её так, чтобы первая строка содержала элементы массива с четными номерами (0,2,4…), а вторая - с нечетными (1,3,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"input(void);fill(int*,int);show(int*,int);matrix(int*,int);_tmain(int argc, _TCHAR* argv[])
{N;
{inp;
// выбор задачи по виду распределения памяти
printf("\nChoose and input: 0 - static 1 - dynamic\n");
inp=input();(inp)
{0: //статическое распределение памяти
{mass[100];
{("\nN= ");=input();(N<=100&&(N%2)==0)
{(mass,N);('\n');(mass,N);('\n');putchar('\n');("Result:");('\n');putchar('\n');(mass,N);;
} printf("Please try input N else: <100 and 4etnoe",100);
} while (1);;
} 1: //динамическое рапсределение памяти
{
{("\nN= ");=input();
if (N<=100&&(N%2)==0)
{* mass = new int[N]; //выделение памяти для массива
fill(mass,N);('\n');(mass,N);('\n');putchar('\n');("Result:");('\n');putchar('\n');(mass,N);[] mass; //освобождение памяти;
} printf("Please try input N else: <100 and 4etnoe",100);
} while (1);;
}
}('\n');("\nPress any key to continue or [N] to cancel...\n");
} (getch()!=0x6E);
//цикл будет продолжаться до тех пор
//пока пользователь не нажмет N
}
/* считывание вводимых символов*/input(void)
{str[256];("%s",&str);
/*Функция atoi (из ASCII в целое число) используется
для приведения символов строки в символы знакового челого (тип int)
*/atoi(str);
}
/*заполнение массива*/
void fill(int* dst,int size)
{(int i=0;i<size;i++)
{("mass[%i]:",i);[i]=input();
}
}
/*вывод массива на экран*/show(int* mass,int size)
{(int i=0;i<size;i++) printf("%i ",mass[i]);
}
/*формирование матрицы*/matrix(int* mass,int size)
{B [2][100];j=0;
//первая строка матрицы заполняется четными номерами элементов массива [0,2,4...]
for (int i=0;i<size;i+=2)
{[0][j]=mass[i];
++j;
}k=0;
//вторая строка матрицы заполняется нечетными номерами элементов массива [1,3,5...]
for (int i=1;i<size;i+=2)
{[1][k]=mass[i];
++k;
//вывод матрицы на экран
for (int i=0;i<2;++i)('\n');(int l=0;l<size/2;++l)("%i ", B[i][l]);
}
Схемы алгоритмов функций приведены на рисунке, пример работы программы приведен на рисунке 1. Пример исполнения программы на рисунке 2.
алгоритм программа вектор матрица
Рисунок 1 - Схемы алгоритмов функций
Рисунок 2 - Результат исполнения программы
Больше работ по теме:
Предмет: Информационное обеспечение, программирование
Тип работы: Контрольная работа
Новости образования
КОНТАКТНЫЙ EMAIL: [email protected]
Скачать реферат © 2017 | Пользовательское соглашение
ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ