Program który zlicza znaki występujące pod rząd

0

Udało mi się napisać taki kod, który zlicza ile razy występuje w stringu dany znak.

#include "stdafx.h"
#include "string.h"
#include "ctype.h"


int count_nonspace(const char* str)
{
	int count = 0;
	while (*str)
	{
		if (!isspace(*str++))
			count++;
	}
	return count;
}


int _tmain(int argc, _TCHAR* argv[])
{
	int a[256];
	int i = 0, j = 0, count[127] = { 0 };

	char string[100] = "Hello world";
	for (i = 0; i < 100; i++)
	{
		for (j = 0; j<127; j++)
		{
			if (tolower(string[i]) == (j))
			{
				count[j]++;
			}
		}
	}
	for (j = 0; j<127; j++)
	{

		printf("\n%c -> %d \n", j, count[j]);

	}
}

Niestety zlicza wszystkie znaki od "j" w górę (dziwne, bo wszystkie zmienne zaczynają się od zera), co widać na załączonym obrazku:

291528cfdabc1354.png

Chciałbym to zmodyfikować tak,żeby zliczał znaki które występują pod rząd (tzn. liczył ile dany znak występuje jeden za drugim) i prinf zrobić dla znaku który występuje największą liczbe razy pod rząd, co więc powinienem zmienić w tym programie w tym celu, bo jestem kompletnie zagubiony.

dodanie obrazka do treści posta - @furious programming

0
  1. http://4programmers.net/Forum/1101404
    unsigned i;
    unsigned count[256]={ 0 };
    char string[100]="Hello world";
    for(i=0;string[i];++i) ++count[0xFF&(unsigned)tolower(string[i])];
    for(i=0;i<256;++i) if(count[i]) printf("%c -> %d\n",i,count[i]);
    return 0;

1 użytkowników online, w tym zalogowanych: 0, gości: 1