Hirdetés

Új hozzászólás Aktív témák

  • Pcmagicnet

    csendes tag

    Üdv mindenkinek!
    C-ben kellene egy hisztogramos kiírást csinálnom, amihez egy kis segítség kellene. A lényeg az lenne hogy ki kéne nyomtatni, a bemenetre adott szavak hosszának hisztogramját.
    Csináltam egy progit, elég hosszú de azért bemásolom.
    #include <stdio.h>
    #define KINN 0
    #define BENN 1

    main()
    {
    /* deklarálom az összes változót */
    int nulla,egy,ketto,harom,negy,ot,hat,het,nyolc,kilenc;
    int a,b,ce,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;
    int c, szam, nw, nc, mas, nl, numc, allapot;
    float a2;

    /* definiálom a változókat */
    nulla=egy=ketto=harom=negy=ot=hat=het=nyolc=kilenc = 0;
    a=b=ce=d=e=f=g=h=i=j=k=l=m=n=o=p=q=r=s=t=u=v=w=x=y=z = 0;
    allapot = KINN;
    nw = nc = mas = nl = numc = 0;

    /* program magja */
    while((c = getchar()) != EOF){
    ++nc;
    if(c >= '0' && c <= '9'){
    ++numc; /* ha szám akkor 1-el növeli a numc értékét */
    --nc; /* a numerikus kataktereket kivonom az összes karakterből */
    }
    if(c == ' ' || c == '\t'){
    ++mas; /* ha szóköz vagy tab */
    }
    if(c == '\n'){
    ++nl; /* ha sortörés */
    }
    if(c == ' ' || c == '\t' || c == '\n'){
    allapot = KINN;
    --nc; /* szóköz, tab, sortörés kivonása az összes karakterből */
    }
    else if( allapot == KINN ){
    allapot = BENN;
    ++nw;
    }
    /* ha az aktuális karakter 0,1,2,3... vagy a,b,c,d.... stb. növelem
    a hozzá tartozó változó értékét 1-el */
    if(c == '0')++nulla;
    if(c == '1')++egy;
    if(c == '2')++ketto;
    if(c == '3')++harom;
    if(c == '4')++negy;
    if(c == '5')++ot;
    if(c == '6')++hat;
    if(c == '7')++het;
    if(c == '8')++nyolc;
    if(c == '9')++kilenc;
    if(c == 'a' || c == 'A')++a;
    if(c == 'b' || c == 'B')++b;
    if(c == 'c' || c == 'C')++ce;
    if(c == 'd' || c == 'D')++d;
    if(c == 'e' || c == 'E')++e;
    if(c == 'f' || c == 'F')++f;
    if(c == 'g' || c == 'G')++g;
    if(c == 'h' || c == 'H')++h;
    if(c == 'i' || c == 'I')++i;
    if(c == 'j' || c == 'J')++j;
    if(c == 'k' || c == 'K')++k;
    if(c == 'l' || c == 'L')++l;
    if(c == 'm' || c == 'M')++m;
    if(c == 'n' || c == 'N')++n;
    if(c == 'o' || c == 'O')++o;
    if(c == 'p' || c == 'P')++p;
    if(c == 'q' || c == 'Q')++q;
    if(c == 'r' || c == 'R')++r;
    if(c == 's' || c == 'S')++s;
    if(c == 't' || c == 'T')++t;
    if(c == 'u' || c == 'U')++u;
    if(c == 'v' || c == 'V')++v;
    if(c == 'w' || c == 'W')++w;
    if(c == 'x' || c == 'X')++x;
    if(c == 'y' || c == 'Y')++y;
    if(c == 'z' || c == 'Z')++z;
    }

    printf("\nKarakterek\na:");
    for(szam = 0; szam < a; ++szam){ /* Amennyi az adott karakterhez tartozó változó értéke, */
    printf("%s", "*"); /* annyi * -ot íratok ki mellé */
    }
    printf("(%d)\nb:", a); /* a * sor végére () -jelbe kiíratom a változó értékét,
    és a következő sorba kiíratom a következő karaktert */
    for(szam = 0; szam < b; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\nc:", b);
    for(szam = 0; szam < ce; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\nd:", ce);
    for(szam = 0; szam < d; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\ne:", d);
    for(szam = 0; szam < e; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\nf:", e);
    for(szam = 0; szam < f; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\ng:", f);
    for(szam = 0; szam < g; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\nh:", g);
    for(szam = 0; szam < h; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\ni:", h);
    for(szam = 0; szam < i; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\nj:", i);
    for(szam = 0; szam < j; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\nk:", j);
    for(szam = 0; szam < k; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\nl:", k);
    for(szam = 0; szam < l; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\nm:", l);
    for(szam = 0; szam < m; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\nn:", m);
    for(szam = 0; szam < n; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\no:", n);
    for(szam = 0; szam < o; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\np:", o);
    for(szam = 0; szam < p; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\nq:", p);
    for(szam = 0; szam < q; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\nr:", q);
    for(szam = 0; szam < r; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\ns:", r);
    for(szam = 0; szam < s; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\nt:", s);
    for(szam = 0; szam < t; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\nu:", t);
    for(szam = 0; szam < u; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\nv:", u);
    for(szam = 0; szam < v; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\nw:", v);
    for(szam = 0; szam < w; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\nx:", w);
    for(szam = 0; szam < x; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\ny:", x);
    for(szam = 0; szam < y; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\nz:", y);
    for(szam = 0; szam < z; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\n0:", z);
    for(szam = 0; szam < nulla; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\n1:", nulla);
    for(szam = 0; szam < egy; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\n2:", egy);
    for(szam = 0; szam < ketto; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\n3:", ketto);
    for(szam = 0; szam < harom; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\n4:", harom);
    for(szam = 0; szam < negy; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\n5:", negy);
    for(szam = 0; szam < ot; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\n6:", ot);
    for(szam = 0; szam < hat; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\n7:", hat);
    for(szam = 0; szam < het; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\n8:", het);
    for(szam = 0; szam < nyolc; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\n9:", nyolc);
    for(szam = 0; szam < kilenc; ++szam){
    printf("%s", "*");
    }
    printf("(%d)\n", kilenc);

    /* Ha pl: 70 karakter széllességben határozzuk meg a 100% -ot */
    if(a != 0){a2 = a / 0.7; /* elosztom az 'a' értékét a 70. 1 % -ával. Ennyi % lesz! */
    printf("a:");
    for(szam=0; szam <= a; ++szam){
    if(szam <= 70){
    printf("%s", "*" );
    }
    }

    if(a2 <= 100.0){
    printf("(%1.1f%s)", a2,"%");
    }
    else{
    printf("(100.0%s)", "%");
    }
    }

    printf("\nSzavak szama: %d\nKarakterek szama: %d\nMas: %d\nSorok szama: %d\nNumerikus karakterek szama: %d\n", nw, nc, mas, nl, numc );

    system("PAUSE");
    return 0;
    }

    Elég kezdetleges, de soha nem csináltam még ilyet. Azt sem tudom hogy kellene kinéznie. Ha valaki tud segítsen egy kicsit. Vagy ha van valami példátok szívesen megnézném.
    Előre is köszi a segítséget!!!

Új hozzászólás Aktív témák