Программы циклической структуры с использованием векторов
Министерство
образования и науки Российской Федерации
Федеральное
агентство по высшему образованию
Вятский
государственный университет
Кафедра
радиоэлектронных средств
Контрольная
работа №2
По
дисциплине "Информатика"
Киров
2013 г.
Цель работы:
составление алгоритмов и написание программ циклической структуры с
использованием векторов, указателей и векторов указателей на вектор на языке C++.
Статическое и динамическое распределение памяти.
Задание:
для решения задачи разработать следующие функции:
- функцию ввода
элементов вектора или матрицы в соответствии с индивидуальным заданием;
- функцию обработки
вектора или матрицы по правилу, определяемому индивидуальным вариантом;
- функцию вывода
вектора или матрицы на экран в общепринятом виде;
- функцию main(),
которая организует работу всех разработанных функций; в этой функции
предусмотреть возможность многократного решения задачи с различными исходными
данными.
- Программу
разработать в двух видах:
- используя
статическое распределение памяти для хранения исходного вектора или исходной
числовой матрицы (предусмотреть некоторые максимально возможные значения
параметров вектора или матрицы);
- используя
динамическое распределение памяти для хранения исходного вектора или исходной
матрицы.
Предусмотреть вывод на экран
вектора или матрицы, как вновь введенных, так и сформированных, а также
проверку данных на соответствие диапазону, предусматриваемому для данного типа
данных.
Текст задания:
Дан целочисленный массив S(n).Сформировать
матрицу B, первая
строка которой будет содержать элементы массива с четными номерами, а вторая -
с нечетными.
Ход работы
Последовательность действий:
. в цикле с параметром 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)
{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)
/*Функция 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;
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 - Результат
исполнения программы