Program do liczenia znaków w C pytanie.

Odpowiedz Nowy wątek
2012-03-28 00:00
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;)

Pozostało 580 znaków

2012-03-28 00:19
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;
}


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2012-03-28 02:08
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 napewno postaram się bardziej pisać kody jak człowiek a jakby kogoś interesowało to pracuje nad kodem do
http://www.spoj.pl/problems/HARDWARE/

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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