nvinger
4/8/2020 - 10:55 PM

bonusproject_vectors

// NAV_BonusProject.cpp : This file contains the 'main' function. Program execution begins and ends there.
//


#include <iostream>
#include <vector>
#include <random>
#include <string>

using namespace std;

vector <int> v;

void print(int num) {
	v.clear();
	for (int i = 0; i < num; i++) {
		int random = rand() % 100;
		v.push_back(random);
	}

	for (int i = 0; i < num; i++) {
		cout << v[i] << " ";
	}
	cout << endl;
	
}


void randomize(int num) {
	v.clear();
	if (num > 0) {
		for (int i = 0; i < num; i++) {
			int random = rand() % num - 1;
			v.push_back(random);
		}
	}
	else {
		num = 20;
		for (int i = 0; i < num; i++) {
			int random = rand() % 100;
			v.push_back(random);
		}
	}

	for (int i = 0; i < num; i++) {
		cout << v[i] << " ";
	}
	cout << endl;
}


void add_value(int num, int adder) {
	v.clear();
	for (int i = 0; i < num; i++) {
		int random = (rand() % 100) + adder;
		v.push_back(random);
	}
	for (int i = 0; i < num; i++) {
		cout << v[i] << " ";
	}
	cout << endl;
}



void reverse(int num) {
	v.clear();
	for (int i = 0; i <= num; i++) {
		int random = rand() % 10;
		v.push_back(random);
	}

	sort(v.begin(), v.end());
	
	for (int i = num; i > 0; i--) {
		cout << v[i] << " ";
	}
}

float average(int num) {
	v.clear();
	int sum = 0;
	for (int i = 0; i <= num; i++) {
		int random = rand() % 100;
		v.push_back(random);
	}
	if (num == 0) {
		return 0;
	}

	for (unsigned int i = 0; i < v.size(); i++) {
		sum += v[i];
	}
	cout << endl;
	return (sum / v.size());
}

void magic(int num) {
	v.clear();
	int sum = 0;
	for (int i = 0; i <= num; i++) {
		int random = rand() % 100;
		v.push_back(random);
	}

	for (int i = 0; i <= num; i++) {
		if (v[i] % 2 == 0) {
			v[i] = v[i] + 1;
		}
		else {
			v[i] = v[i] - 1;
		}
	}

	for (int i = 0; i < num; i++) {
		cout << v[i] << " ";
	}
	cout << endl;
}


void repeat(int num) {
	v.clear();
	for (int i = 0; i <= num; i++) {
		int random = rand() % 100;
		v.push_back(random);
	}

	if (num == 0) {
		return;
	}

	v.resize(num * 2);
	int q;

	for (int i = 0; i < num; i++) {
		q = i + num;
		v[q] = v[i];
	}
	for (unsigned int i = 0; i < v.size(); i++) {
		cout << v[i] << " ";
	}
	cout << endl;
}

void chop(int num) {
	v.clear();
	for (int i = 0; i <= num; i++) {
		int random = rand() % 100;
		v.push_back(random);
	}
	if (num == 0) {
		return;
	}

	v.resize(num / 2);

	for (unsigned int i = 0; i < v.size(); i++) {
		cout << v[i] << " ";
	}
	cout << endl;
}

void john(int num) {
	v.clear();
	for (int i = 0; i <= num; i++) {
		int random = rand() % 100;
		v.push_back(random);
	}
	int a = num/2;
	v.insert(v.begin()+ a, 42);

	for (unsigned int i = 0; i < v.size(); i++) {
		cout << v[i] << " ";
	}
	cout << endl;
}

void zero(int num, int start, int end) {
	v.clear();
	if (start > end) {
		return;
	}

	for (int i = 0; i < num; i++) {
		int random = rand() % 100;
		v.push_back(random);
	}

	for (int i = start; i <= end; i++) {
		v[i] = 0;
	}
	
	for (unsigned int i = 0; i < v.size(); i++) {
		cout << v[i] << " ";
	}
	cout << endl;

}


int main()
{
	cout << "Calling print: ";
	print(5);

	cout << "Calling randomize: ";
	randomize(0);

	cout << "Calling add_value: ";
	add_value(10, 5);

	// missing zero
	cout << "Calling zero: ";
	zero(10, 0, 5);

	cout << "Calling reverse: ";
	reverse(10);

	cout << "Calling average: " << average(20) << endl;
	
	// magic
	cout << "Calling magic: ";
	magic(10);

	// repeat
	cout << "Calling repeat: ";
	repeat(10);

	// chop
	cout << "Calling chop: ";
	chop(10);

	// john
	cout << "Calling john: ";
	john(10);

}