1. #include
#include
#include
#include
#include
using namespace std;
//Used from
int index_of_largest(const int array[], int startIndex, const int size);
void selectSort(int a[], const int size);
void swap(int& i1, int& it2);
void fileOption();
void inputOption();
void unique(const int inputArray[], int uniqueArray[], int countArray[], const int size);
void printFileScreen(const int uniqueArray[], const int countArray[], const int size);
int main()
{
// int size;
char userInput[5];
//
cout << "Read file from Input file? (Y/N) ";
cin >> userInput;
if(toupper(userInput[0]) == 'Y')
{
fileOption();
}
else
{
inputOption();
}
return 0;
}
void selectSort(int array[], const int size)
{
int smallestIndex;
for(int i = 0;i < size - 1;i++)
2. {
smallestIndex = index_of_largest(array , i , size);
swap(array[i] , array[smallestIndex]);
}
}
void swap(int& i1, int& i2)
{
int temp;
temp = i1;
i1 = i2;
i2 = temp;
}
int index_of_largest(const int array[], int startIndex, const int size)
{
int min = array[startIndex] , index_of_min = startIndex;
for(int i = startIndex + 1;i < size;i++)
if(array[i] > min)
{
min = array[i];
index_of_min = i;
}
return index_of_min;
}
void unique(const int inputArray[], int uniqueArray[], int countArray[], const int size)
{
int number;
int j = 0;
int index;
for(int i = 0;i < size;i++)
{
int flag = 0;
number = inputArray[i];
//for each element in inputArray, check if it is there in uniqueArray
for (int k = 0; k < j; ++k)
{
if(number == uniqueArray[k])
3. {
flag = 1;
index = k;
}
}
if(flag == 0)
{
//if so, increment the countArray by 1
countArray[j]++;
// copy the element to uniqueArray
uniqueArray[j] = number;
j++;
}
else
countArray[index]++;
}
}
void fileOption()
{
int inputArray[50];
int countArray[50] = {0};
int uniqueArray[50]= {0};
ifstream in_stream;
char fileName[16];
cout << "What file would you like to obtain input from? ";
cin >> fileName;
in_stream.open(fileName);
if(in_stream.fail())
{
cout << "Error: Could not open file!" << endl;
exit(1);
}
int size = 0;
while(in_stream >> inputArray[size])
{
4. size++;
}
selectSort(inputArray , size);
unique(inputArray , uniqueArray , countArray , size);
printFileScreen(uniqueArray , countArray , size);
}
void inputOption()
{
int inputArray[50];
int countArray[50] = {0};
int uniqueArray[50] = {0};
int size;
cout << "How many numbers would you like to enter? ";
cin >> size;
cout << "Enter numbers:" << endl;
for(int i = 0;i < size;i++)
{
cin >> inputArray[i];
}
selectSort(inputArray , size);
unique(inputArray , uniqueArray , countArray , size);
printFileScreen(uniqueArray , countArray , size);
}
void printFileScreen(const int uniqueArray[], const int countArray[], const int size)
{
//cout << "jaja";
ofstream output_file;
output_file.open("lab3Exercise2.txt");
if(output_file.fail())
{
cout << "Error: Could not open file!" << endl;
exit(1);
}
output_file << "Nt" << "count ";
for(int i = 0;i < size;i++)
{
5. if(uniqueArray[i] != 0)
{
output_file << uniqueArray[i] << "t";
output_file << countArray[i] << endl;
}
}
cout << "Nt" << "count ";
for(int i = 0;i < size;i++)
{
if(uniqueArray[i] != 0)
{
cout << uniqueArray[i] << "t";
cout << countArray[i] << endl;
}
}
}
/*
output:
1)
Read file from Input file? (Y/N) y
What file would you like to obtain input from? inputfile.txt
N count
4 2
3 1
1 2
-3 1
lab3Exercise2.txt
N count
4 2
3 1
1 2
-3 1
2)
Read file from Input file? (Y/N) n
6. How many numbers would you like to enter? 10
Enter numbers:
-1
3
4
2
3
4
6
7
6
4
N count
7 1
6 2
4 3
3 2
2 1
-1 1
lab3Exercise2.txt
N count
7 1
6 2
4 3
3 2
2 1
-1 1
*/
Solution
#include
#include
#include
7. #include
#include
using namespace std;
//Used from
int index_of_largest(const int array[], int startIndex, const int size);
void selectSort(int a[], const int size);
void swap(int& i1, int& it2);
void fileOption();
void inputOption();
void unique(const int inputArray[], int uniqueArray[], int countArray[], const int size);
void printFileScreen(const int uniqueArray[], const int countArray[], const int size);
int main()
{
// int size;
char userInput[5];
//
cout << "Read file from Input file? (Y/N) ";
cin >> userInput;
if(toupper(userInput[0]) == 'Y')
{
fileOption();
}
else
{
inputOption();
}
return 0;
}
void selectSort(int array[], const int size)
{
int smallestIndex;
for(int i = 0;i < size - 1;i++)
{
smallestIndex = index_of_largest(array , i , size);
swap(array[i] , array[smallestIndex]);
}
8. }
void swap(int& i1, int& i2)
{
int temp;
temp = i1;
i1 = i2;
i2 = temp;
}
int index_of_largest(const int array[], int startIndex, const int size)
{
int min = array[startIndex] , index_of_min = startIndex;
for(int i = startIndex + 1;i < size;i++)
if(array[i] > min)
{
min = array[i];
index_of_min = i;
}
return index_of_min;
}
void unique(const int inputArray[], int uniqueArray[], int countArray[], const int size)
{
int number;
int j = 0;
int index;
for(int i = 0;i < size;i++)
{
int flag = 0;
number = inputArray[i];
//for each element in inputArray, check if it is there in uniqueArray
for (int k = 0; k < j; ++k)
{
if(number == uniqueArray[k])
{
flag = 1;
index = k;
}
9. }
if(flag == 0)
{
//if so, increment the countArray by 1
countArray[j]++;
// copy the element to uniqueArray
uniqueArray[j] = number;
j++;
}
else
countArray[index]++;
}
}
void fileOption()
{
int inputArray[50];
int countArray[50] = {0};
int uniqueArray[50]= {0};
ifstream in_stream;
char fileName[16];
cout << "What file would you like to obtain input from? ";
cin >> fileName;
in_stream.open(fileName);
if(in_stream.fail())
{
cout << "Error: Could not open file!" << endl;
exit(1);
}
int size = 0;
while(in_stream >> inputArray[size])
{
size++;
}
selectSort(inputArray , size);
unique(inputArray , uniqueArray , countArray , size);
10. printFileScreen(uniqueArray , countArray , size);
}
void inputOption()
{
int inputArray[50];
int countArray[50] = {0};
int uniqueArray[50] = {0};
int size;
cout << "How many numbers would you like to enter? ";
cin >> size;
cout << "Enter numbers:" << endl;
for(int i = 0;i < size;i++)
{
cin >> inputArray[i];
}
selectSort(inputArray , size);
unique(inputArray , uniqueArray , countArray , size);
printFileScreen(uniqueArray , countArray , size);
}
void printFileScreen(const int uniqueArray[], const int countArray[], const int size)
{
//cout << "jaja";
ofstream output_file;
output_file.open("lab3Exercise2.txt");
if(output_file.fail())
{
cout << "Error: Could not open file!" << endl;
exit(1);
}
output_file << "Nt" << "count ";
for(int i = 0;i < size;i++)
{
if(uniqueArray[i] != 0)
{
output_file << uniqueArray[i] << "t";
output_file << countArray[i] << endl;
11. }
}
cout << "Nt" << "count ";
for(int i = 0;i < size;i++)
{
if(uniqueArray[i] != 0)
{
cout << uniqueArray[i] << "t";
cout << countArray[i] << endl;
}
}
}
/*
output:
1)
Read file from Input file? (Y/N) y
What file would you like to obtain input from? inputfile.txt
N count
4 2
3 1
1 2
-3 1
lab3Exercise2.txt
N count
4 2
3 1
1 2
-3 1
2)
Read file from Input file? (Y/N) n
How many numbers would you like to enter? 10
Enter numbers:
-1
3