I was given a class assignment over my spring break (which is this week), and I am having trouble doing the programming warm up exercises, and I was wondering if someone could help me out. I used Visual Studio 2010 to make this program and the programming language is C++ (the class I am taking for it is Software Design and Development [which is basically an intro to C++ class]).

1) After it completes the test for "PWU Exercise 7", it seems to crash for some reason, but I cannot decipher why

2) 2) For PWU Exercise 9, I am supposed to write a function that will ask the user to input a value that will be used to create the length of an array. However, since I can only use an immediate or constant expression as the length initializer, I am not sure how I can do so. I tried defining a constant that is initialized to the variable that contains the input from the user, but that did not work.


Code:
// InClass Assignment 5
// 3/11/2011
// 

#include <iostream>

#include <cstring>

#include <string>

#include <stdio.h>

#include <stdlib.h>

#include "Phone.h"

using namespace std;

bool ShallowCompare (Phone*, Phone*);

bool DeepCompare (Phone*, Phone*);

int Greatest (int[], int);

int GetGreatestInput();

int main()
{
	int static max;

	// PWU Exercise 1
	int someInt;
	
	int* intPointer;

	intPointer = &someInt;

	someInt = 451;

	if(someInt == 451)
		cout << "Passed PWU Exercise 1." << endl;
	else
		cout << "Failed PWU Exercise 1." << endl;

	someInt = 0;

	*intPointer = 451;

	if(someInt == 451)
		cout << "Passed PWU Exercise 1.\n" << endl;
	else
		cout << "Failed PWU Exercise 1.\n" << endl;

	// PWU Exercise 2
	char* charArrPointer;

	char initials[4];

	charArrPointer = initials;

	*charArrPointer = 'A';

	*(charArrPointer + 1) = 'E';

	*(charArrPointer + 2) = 'W';

	if (*charArrPointer == 'A')
		cout << "Passed PWU Exercise 2.\n" << endl;
	else
		cout << "Failed PWU Exercise 2.\n" << endl;

	// PWU Exercise 3
	Phone newPhone;

	Phone* structPointer = &newPhone;

	structPointer->country = 1;

	structPointer->area = 888;

	structPointer->number = 5551212;

	if ((structPointer->country == 1) && (structPointer->area == 888) && (structPointer-> number == 5551212))
	{
		cout << "Passed PWU Exercise 3.\n" << endl;
	}
	else
	{
		cout << "Failed PWU Exercise 3.\n" << endl;
	}

	// PWU Exercise 4
	Phone& structReference = newPhone;

	structReference.country = 1;

	structReference.area = 888;

	structReference.number = 5551212;

	if ((structReference.country == 1) && (structReference.area == 888) && (structReference.number == 5551212))
	{
		cout << "Passed PWU Exercise 4.\n" << endl;
	}
	else
	{
		cout << "Failed PWU Exercise 4.\n" << endl;
	}

	// PWU Exercise 5
	Phone* structPointer1 = &newPhone;

	Phone* structPointer2 = &newPhone;
	
	if (ShallowCompare(structPointer1,structPointer2))
	{
		cout << "Passed PWU Exercise 5.\n" << endl;
	}
	else
	{
		cout << "Failed PWU Exercise 5.\n" << endl;
	}

	// PWU Exercise 6
	Phone* structPointer3 = &newPhone;

	Phone* structPointer4 = &newPhone;

	if (DeepCompare(structPointer3, structPointer4))
	{
		cout << "Passed PWU Exercise 6.\n" << endl;
	}
	else
	{
		cout << "Failed PWU Exercise 6.\n" << endl;
	}

	// PWU Exercise 7
	int exercise7Array[100];

	int* dataPtr = exercise7Array;

	for (int count = 0; count < 100; count++)
	{
		*(dataPtr + count) = count;
	}

	for (int count = 0; count < 100; count++)
	{
		int temporary;

		temporary = *(dataPtr + count);

		if (count == 0)
		{
			temporary = max;
		}

		else
		{
			if (max < temporary)
			{
				max = temporary;
			}
		}
	}

	if (max == 99)
		cout << "Passed PWU Exercise 7.\n" << endl;
	else
		cout << "Failed PWU Exercise 7.\n" << endl;

	delete dataPtr;

	// PWU Exercise 8
	int exercise8Array[100];

	int* dataPtr2 = exercise8Array;

	for (int count = 0; count < 100; count++)
	{
		*(dataPtr2 + count) = count;
	}

	max = Greatest(exercise8Array, 100);

	if (max == 99)
		cout << "Passed PWU Exercise 8.\n" << endl;
	else
		cout << "Failed PWU Exercise 8.\n" << endl;

	// PWU Exercise 9
	int largestValue9 = GetGreatestInput();

	if (largestValue9 == 99)
		cout << "Passed PWU Exercise 9.\n" << endl;
	else
		cout << "Failed PWU Exercise 9.\n" << endl;

	// PWU Exercise 10


	// PWU Exercise 11
	int* oldValue;

	int* newValue;

	int exercise10Int1 = 40;

	int exercise10Int2 = 50;

	oldValue = &exercise10Int1;

	if (*oldValue != NULL)
	{
		newValue = oldValue;
	}

	else
	{
		newValue = &exercise10Int2;
	}

	if (*newValue == 50)
	{
		cout << "Passed PWU Exercise 11.\n" << endl;
	}

	else
	{
		cout << "Failed PWU Exercise 11.\n" << endl;
	}

	// PWU Exercise 12
	if (*oldValue == *newValue)
	{
		delete oldValue;
	}

	if (*oldValue != NULL)
	{
		cout << "Passed PWU Exercise 11.\n" << endl;
	}

	else
	{
		cout << "Failed PWU Exercise 11.\n" << endl;
	}

	// PWU Exercise 13


	// PWU Exercise 14


	// PWU Exercise 15


	// PWU Exercise 16


	// PWU Exercise 17


	// PWU Exercise 18


	// PWU Exercise 19


	// PWU Exercise 20


	system("Pause");

	return 0;
}

bool ShallowCompare (Phone* ptr1, Phone* ptr2)
{
	if(ptr1 == ptr2)
		return true;
	else
		return false;
}

bool DeepCompare (Phone* ptr1, Phone* ptr2)
{
	if ((ptr1->country == ptr2->country) && (ptr1->area == ptr2->area) && (ptr1->number == ptr2->number))
		return true;
	else
		return false;
}

int Greatest (int array1[], int size)
{
	int maximum;

	int* temporaryPtr = array1;

	for (int count = 0; count < size; count++)
	{
		int temporary;

		temporary = *(temporaryPtr + count);

		if (count == 0)
		{
			maximum = temporary;
		}

		else
		{
			if (maximum < temporary)
			{
				maximum = temporary;
			}
		}
	}

	delete temporaryPtr;

	return maximum;
}

int GetGreatestInput()
{
	int size;

	cout << "Input the number of values to be input: " << endl;

	cin >> size;

	cin.ignore(100, '\n');

	int temporaryArray[1000];

	for (int count = 0; count < size; count++)
	{
		int temporaryValue;

		cout << "Input an integer value to be put into the array: " << endl;

		cin >> temporaryValue;

		cin.ignore(100, '\n');

		temporaryArray[count] = temporaryValue;
	}

	int largestValue = Greatest(temporaryArray, size);

	return largestValue;
}