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

2015-01-19 18:58
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

edytowany 5x, ostatnio: furious programming, 2015-01-19 23:25

Pozostało 580 znaków

2015-01-19 20:44
0
  1. http://4programmers.net/Forum/1101404
  2. 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;

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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