How to join two programes?
I’ve got two well fuctioning programs. The first one counts combinations with giving the elements of them. There are 180 elements in each combination. Here’s the code:
#include "IndexCombination.h"
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
#include <map>
#include <sstream>
#include <mem.h>
#include <conio.h>
using namespace std;
using namespace stdcomb;
bool GetNextComb(std::vector<unsigned int> &vi);
struct Element
{
char name[6];
int numbers[30];
char chain[90];
};
const Element elements[] = {
{
"ia11",
{3,9,17,21,24,31,33,36,42,49,4,8,19,22,28,30,34,39,43,47,2,6,10,13,14,25,29,37,38,46},
"3,9,17,21,24,31,33,36,42,49,4,8,19,22,28,30,34,39,43,47,2,6,10,13,14,25,29,37,38,46"
}, {
"ia34",
{1,6,12,15,22,27,31,32,41,42,4,7,14,17,23,30,33,36,45,48,2,9,13,18,21,26,34,39,44,49},
"1,6,12,15,22,27,31,32,41,42,4,7,14,17,23,30,33,36,45,48,2,9,13,18,21,26,34,39,44,49"
}, {
"ia72",
{3,8,11,18,22,25,36,37,43,46,1,6,16,17,23,28,35,40,41,44,2,5,12,19,24,27,31,34,42,49},
"3,8,11,18,22,25,36,37,43,46,1,6,16,17,23,28,35,40,41,44,2,5,12,19,24,27,31,34,42,49"
}, {
"ia167",
{3,4,12,15,21,28,32,39,47,48,6,9,16,17,29,30,31,38,41,42,7,8,11,20,26,27,34,35,45,46},
"3,4,12,15,21,28,32,39,47,48,6,9,16,17,29,30,31,38,41,42,7,8,11,20,26,27,34,35,45,46"
}, {
"ia190",
{3,10,11,14,22,23,32,35,43,44,6,9,16,19,24,29,37,38,45,48,2,5,13,18,25,30,31,40,41,0},
"3,10,11,14,22,23,32,35,43,44,6,9,16,19,24,29,37,38,45,48,2,5,13,18,25,30,31,40,41,0"
}, {
"ia21",
{2,5,16,19,25,30,34,39,45,48,1,9,12,13,21,24,33,36,44,49,3,8,15,20,23,26,35,40,43,46},
"2,5,16,19,25,30,34,39,45,48,1,9,12,13,21,24,33,36,44,49,3,8,15,20,23,26,35,40,43,46"
}, {
"ia64",
{6,9,13,20,28,29,33,40,43,48,2,7,16,19,24,27,31,34,44,47,5,8,14,17,21,30,32,37,41,46},
"6,9,13,20,28,29,33,40,43,48,2,7,16,19,24,27,31,34,44,47,5,8,14,17,21,30,32,37,41,46"
}, {
"ia102",
{4,9,14,19,22,29,35,38,46,47,5,8,13,16,21,26,33,40,41,48,6,7,15,17,28,30,32,39,42,45},
"4,9,14,19,22,29,35,38,46,47,5,8,13,16,21,26,33,40,41,48,6,7,15,17,28,30,32,39,42,45"
}, {
"ia178",
{6,9,15,20,23,24,37,38,42,45,7,8,16,19,22,25,34,39,43,46,1,2,17,18,26,29,31,40,47,0},
"6,9,15,20,23,24,37,38,42,45,7,8,16,19,22,25,34,39,43,46,1,2,17,18,26,29,31,40,47,0"
}, {
"ia180",
{1,4,13,18,27,30,33,38,45,46,2,3,12,15,22,23,39,40,44,47,8,9,11,17,24,25,32,37,49,0},
"1,4,13,18,27,30,33,38,45,46,2,3,12,15,22,23,39,40,44,47,8,9,11,17,24,25,32,37,49,0"
}
};
int main(int argc, char *argv[])
{
CIdxComb cb;
cb.SetSizes(10,6);
vector<unsigned int> combination(6);
combination[0] = 0;
combination[1] = 1;
combination[2] = 2;
combination[3] = 3;
combination[4] = 4;
combination[5] = 5;
int Total = 0;
do {
Total++;
cout << "Combination number. " << Total << endl;
for (unsigned i = 0; i < combination.size(); i++)
{
const Element &element = elements[combination[i]];
cout << element.name << ": " << element.chain << endl;
// tu musi być druga pętla for
}
}
while(cb.GetNextComb(combination));
The second program counts occurences of the elements in given array and shows only those which values are equal or bigger than six.
#include <iostream>
#include <mem.h>
#include <conio.h>
using namespace std;
int main()
{
int TestArray[] = {
3,10,11,14,22,23,32,35,43, 44,6,9,16,19,24,29,37,38,45,48, 2,5,13,18,25,30,31,40,41,0,
2,5,16,19,25,30,34,39,45,48, 1,9,12,13,21,24,33,36,44,49, 3,8,15,20,23,26,35,40,43,46,
6,9,13,20,28,29,33,40,43,48, 2,7,16,19,24,27,31,34,44,47, 5,8,14,17,21,30,32,37,41,46,
4,9,14,19,22,29,35,38,46,47, 5,8,13,16,21,26,33,40,41,48, 6,7,15,17,28,30,32,39,42,45,
6,9,15,20,23,24,37,38,42,45, 7,8,16,19,22,25,34,39,43,46, 1,2,17,18,26,29,31,40,47,0,
1,4,13,18,27,30,33,38,45,46, 2,3,12,15,22,23,39,40,44,47, 8,9,11,17,24,25,32,37,49,0};
const int n = sizeof(TestArray) / sizeof(int);//combination.size();
const int range = 100;
const int minval = 6;
int occurences[range];
memset(occurences,0,range*sizeof(int));//combination.size();
for (int i=0; i<n; ++i)
occurences[TestArray[i]]++;
for (int i=0; i<range; ++i)
if (occurences[i]>=minval)
cout << "number " << i << " occurs " << occurences[i] << " times\n";
getch();
return 0;
}
I’d like to join them in one program. The Output should look like this:
Combination number 1
Number 3 occurs 6 times
Number 48 occurs 7 times
Number 0 occurs 8 times
Combination number 2
Number 5 occurs 6 times
Etc.
What kind of counter or what loops should I use to successfully combine these programs?
int Total = 0;
do {
Total++;
cout << "Combination number. " << Total << endl;
for (unsigned i = 0; i < combination.size(); i++)
{
const Element &element = elements[combination[i]];
cout << element.name << ": " << element.chain << endl;
}
}
while(cb.GetNextComb(combination));
int TestArray = Total++;
const int n = sizeof(TestArray) / sizeof(int);
const int range = 180;
const int minval = 6;
int occurences[range];
memset(occurences,0,range*sizeof(int));
for (int j=0; j<n; ++j)
occurences[TestArray[j]]++;//here i get the information:
//'invalid types `int[int]' for array subscript