Программы циклической структуры с использованием векторов

Составление алгоритмов и написание программ циклической структуры с использованием векторов, указателей и векторов указателей на вектор на языке 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.2012

  • Matlab - матричная лаборатория - система программирования для научно-технических расчетов. Особенности ввода векторов. Специальные матрицы, простые команды. Простые примеры, иллюстрирующие эффективность 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

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