#include <iostream> // this doesn't count for the 'no library' limitation?

struct letter_count
{
	char letter = '\0';
	int count = 0;
};

int add(letter_count *begin, letter_count *end, char letter)
{
	while (begin != end)
	{
		if (begin->letter == letter)
		{
			return ++begin->count;
		}
		else if (begin->letter == '\0')
		{
			++begin->letter = letter;
			return ++begin->count;
		}

		++begin;
	}

	return 0;
}

int max (int a, int b)
{
	return a > b ? a : b;
}

letter_count *buffer = nullptr;

int main()
{
	auto testString = "supergalifragilisticoespialidoso";

	int len = 0, index = 0, greater = 0;

	while (testString[index++])
		++len;

	buffer = new letter_count[len];

	for (index = 0; index < len; ++index)
		greater = max(add(buffer, buffer + len, testString[index]), greater);

	for (index = 0; buffer[index].letter && index < len; ++index)
		std::cout << buffer[index].letter;

	std::cout << '\n';

	for (int count = 0; count < greater; ++count)
	{
		for (index = 0; buffer[index].letter && index < len; ++index)
			std::cout << (count < buffer[index].count ? '*' : ' ');

		std::cout << '\n';
	}

	delete [] buffer;

	return 0;
}