#include <stdlib.h>
#include <stdio.h>
#include "intcnt.h"
#include "utils.h"
int intcnt::add(int value)
{
/* search */
for(int loop=0; loop<n; loop++)
{
/* found? increase counter */
if (values[loop] == value)
{
cnts[loop]++;
return loop;
}
}
/* not found, add */
n++;
values = (int *)myrealloc(values, n * sizeof(int), "values");
cnts = (int *)myrealloc(cnts, n * sizeof(int), "cnt");
values[n-1] = value;
cnts[n-1] = 1;
return n-1;
}
/* this is a slow and inefficient sorting routine, but
* I'm in a hurry now. feel free to replace
*/
void intcnt::sort(void)
{
for(int loop=0; loop<n-1; loop++)
{
for(int loop2=loop + 1; loop2<n; loop2++)
{
if (values[loop2] < values[loop])
{
int dummy = values[loop2];
values[loop2] = values[loop];
values[loop] = dummy;
dummy = cnts[loop2];
cnts[loop2] = cnts[loop];
cnts[loop] = dummy;
}
}
}
}
int intcnt::getcntfromvalue(int value)
{
for(int loop=0; loop<n; loop++)
{
if (values[loop] == value)
return cnts[loop];
}
return -1;
}
int intcnt::getn(void)
{
return n;
}
int intcnt::getvalue(int index)
{
return values[index];
}
int intcnt::getcnt(int index)
{
return cnts[index];
}
syntax highlighted by Code2HTML, v. 0.9.1