Program do liczenia znaków w C pytanie.

0
#include <stdio.h>
#include <string>


char czestosc(char napis)
{
char napisstring[] ={"napis"};
int tab[256];
int i;
for (i=0;i<256;++i)
{
tab[i]=0;
}
for(int j=0;j<strlen(napisstring);++j)
{
tab[napisstring[j]]++;
}
for(int i=0;i<256;++i){
if(tab[i]>0) {
printf("make %d digit %d", i, tab[i]);
}
}
}
int main(){
czestosc('123114');

getchar();
system("PAUSE");
return 0;
} 

Pojawiaja sie dziwne liczby a założeniem tego programu jest by z zmiennej czestosc liczył ile razy pojawi sie jaki znak. podejrzewam ze problem lezy w 2 pierwszych linijkach char czestosc(char napis)
{
char napisstring[] ={"napis"};

a sugerowałem się kodem w C++ tj.

#include <iostream>

using namespace std;

void czestosc(string napis){
int tab[256];
for(int i=0;i<256;++i)
tab[i]=0;
for(int j=0;j<napis.length();++j)
tab[napis[j]]++;
for(int i=0;i<256;++i)
if(tab[i]>0) cout<<(char)i<<" - "<<tab[i]<<endl;
}

int main(){
czestosc("016979797");
system("PAUSE");
return 0;
} 

Jestem nowy w programowaniu prosze o wyrozumialosc;)

0
  1. Formatuj kod jak człowiek.
  2. Zacznij ROZUMIEĆ a nie bezmyślnie kopiowac i próbować przerobić.
#include <stdio.h>
#include <string.h>

void czestosc(char* napis, int rozmiar)
{
    int tab[256]={};
    int i;
    for(i=0; i<rozmiar;i++)
    {
        tab[(int)napis[i]]++;
    }
    for(i=0; i<256; i++)
    {
        if(tab[i]>0)
        {
            printf("make %d digit %d\n", i, tab[i]);
        }
    }
}
int main()
{
    char napis[] = "123114";
    czestosc(napis, strlen(napis));
    return 0;
}

0
 #include <stdio.h>
#include <string.h>
 
void czestosc(char* napis)
{
     int n;
     do{
    char *linia1 = "Short Street";
    n=strlen(linia1);
    printf("%s\n", linia1);
    break;
    }
    while(n<50);
    char *linia2 = "23 addresses";
    
    int rozmiar= strlen(napis);
    int tab[256]={};
    int i;
    {
    
    printf("%s\n", linia2);
    }
    for(i=0; i<rozmiar;i++)
    {
        tab[(int)napis[i]]++;
    }
    for(i=0; i<256; i++)
    {
        if(tab[i]>0)
        {   
            printf("make %d digit %c\n", tab[i], i);
        }
    }
}
int main()
{
    char napis[] = "1234252351111200013,031301";
    czestosc(napis);
    getchar();
    return 0;
}

Dzięki :) Teraz poprawiłem jeszcze bardziej ten kod i wygląda jeszcze bardziej pożądniej i zwraca znak a nie liczbe jak chciałem i na pewno postaram się bardziej pisać kody jak człowiek a jakby kogoś interesowało to pracuje nad kodem do
http://www.spoj.pl/problems/HARDWARE/

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