string - How to print occurrences of letters and words in C (Pointers Encouraged) -


i've gotten far code getting letter occurrences. strategy have array index indicate letter index storing number of occurrences for. ex: 'a' = 65 'b' = 66 'b'-'a' = 1, ( meaning letters[1] holds occurrences 'b').
need print each letter , number of occurrences since index of array expresses each letter, , they're numbers. i'm not sure how i'm going go counting occurrence of words based on length (1,2,3, etc.. letter words). hardest part outputting words in alphabetical order. i've completed occurrences of letters portion of code crazy error.

the specific instructions in photo: https://www.flickr.com/photos/129493888@n03/17068676506/player/

#include <stdio.h> #include <string> #include <ctype.h>  int main() {     int strlength;     int *ptr_strlength;     char textstream[];     int cont = 1;     while (cont != 0)     {         scanf("%s", textstream[]);         strlength = strlen(textstream[]);     }     ptr_strlength = &strlength;     void findletters(ptr_strlength); )      void findletters(int *ptr) //find occurences of letters     {         int upletters[26];         int loletters[26];         char text[];         int index;         int = 65;         int lowa = 97;         int b = 0;         int c = 0;         int d = 0;         int e = 0;         int = 0;         int length;         length = *ptr;          while (textstream[i] != '\0')         {             (; < length ); i++)             {                 if (isalpha(textstream[i])) //checks if char alphabet                 {                     (; < 123); a++)                      {                         if (textstream[i] = a)                         {                             if (textstream[i] > 64 && textstream[i] < 91) //stores occurrences of uppercase letters                             {                                 textstream[i] - = index;                                 upletters[index] = upletters[index] + textstream[i] - textstream[i] + 1;                             }                               if (textstream[i] > 89 && textstream[i] < 123) //stores occurrences of lowercase letters                             {                                 textstream[i] - lowa = index;                                 loletters[index] = loletters[index] + textstream[i] - textstream[i] + 1;                             }                          }                     }                 }                  printf("number of occurrences of letters\n\n");                  if(upletters[0] > 0)                 {                     printf("a : \t%d\n", upletters[0]);                 }                 if(upletters[1] > 0)                 {                     printf("b : \t%d\n", upletters[1]);                 }                 if(upletters[2] > 0)                 {                     printf("c : \t%d\n", upletters[2]);                 }                 if(upletters[3] > 0)                 {                     printf("d : \t%d\n", upletters[3]);                 }                 if(upletters[4] > 0)                 {                     printf("e : \t%d\n", upletters[4]);                 }                 if(upletters[5] > 0)                 {                     printf("f : \t%d\n", upletters[5]);                 }                 if(upletters[6] > 0)                 {                     printf("g : \t%d\n", upletters[6]);                 }                 if(upletters[7] > 0)                 {                     printf("h : \t%d\n", upletters[7]);                 }                 if(upletters[8] > 0)                 {                     printf("i : \t%d\n", upletters[8]);                 }                 if(upletters[9] > 0)                 {                     printf("j : \t%d\n", upletters[9]);                 }                 if(upletters[10] > 0)                 {                     printf("k : \t%d\n", upletters[10]);                 }                 if(upletters[11] > 0)                 {                     printf("l : \t%d\n", upletters[11]);                 }                 if(upletters[12] > 0)                 {                     printf("m : \t%d\n", upletters[12]);                 }                 if(upletters[13] > 0)                 {                     printf("n : \t%d\n", upletters[13]);                 }                 if(upletters[14] > 0)                 {                     printf("o : \t%d\n", upletters[14]);                 }                 if(upletters[15] > 0)                 {                     printf("p : \t%d\n", upletters[15]);                 }                 if(upletters[16] > 0)                 {                     printf("q : \t%d\n", upletters[16]);                 }                 if(upletters[17] > 0)                 {                     printf("r : \t%d\n", upletters[17]);                 }                 if(upletters[18] > 0)                 {                     printf("s : \t%d\n", upletters[18]);                 }                 if(upletters[19] > 0)                 {                     printf("t : \t%d\n", upletters[19]);                 }                 if(upletters[20] > 0)                 {                     printf("u : \t%d\n", upletters[20]);                 }                 if(upletters[21] > 0)                 {                     printf("v : \t%d\n", upletters[21]);                 }                 if(upletters[22] > 0)                 {                     printf("w : \t%d\n", upletters[22]);                 }                 if(upletters[23] > 0)                 {                     printf("x : \t%d\n", upletters[23]);                 }                 if(upletters[24] > 0)                 {                     printf("y : \t%d\n", upletters[24]);                 }                 if(upletters[25] > 0)                 {                     printf("z : \t%d\n", upletters[25]);                 }                  if(loletters[0] > 0)                 {                     printf("a : \t%d\n", upletters[0]);                 }                 if(loletters[1] > 0)                 {                     printf("b : \t%d\n", upletters[1]);                 }                 if(loletters[2] > 0)                 {                     printf("c : \t%d\n", upletters[2]);                 }                 if(loletters[3] > 0)                 {                     printf("d : \t%d\n", upletters[3]);                 }                 if(loletters[4] > 0)                 {                     printf("e : \t%d\n", upletters[4]);                 }                 if(loletters[5] > 0)                 {                     printf("f : \t%d\n", upletters[5]);                 }                 if(loletters[6] > 0)                 {                     printf("g : \t%d\n", upletters[6]);                 }                 if(loletters[7] > 0)                 {                     printf("h : \t%d\n", upletters[7]);                 }                 if(loletters[8] > 0)                 {                     printf("i : \t%d\n", upletters[8]);                 }                 if(loletters[9] > 0)                 {                     printf("j : \t%d\n", upletters[9]);                 }                 if(loletters[10] > 0)                 {                     printf("k : \t%d\n", upletters[10]);                 }                 if(loletters[11] > 0)                 {                     printf("l : \t%d\n", upletters[11]);                 }                            if(loletters[12] > 0)                 {                     printf("m : \t%d\n", upletters[12]);                 }                 if(loletters[13] > 0)                 {                     printf("n : \t%d\n", upletters[13]);                 }                 if(loletters[14] > 0)                 {                     printf("o: \t%d\n", upletters[14]);                 }                 if(loletters[15] > 0)                 {                     printf("p : \t%d\n", upletters[15]);                 }                 if(loletters[16] > 0)                 {                     printf("q : \t%d\n", upletters[16]);                 }                 if(loletters[17] > 0)                 {                     printf("r : \t%d\n", upletters[17]);                 }                 if(loletters[18] > 0)                 {                     printf("s : \t%d\n", upletters[18]);                 }                 if(loletters[19] > 0)                 {                     printf("t : \t%d\n", upletters[19]);                 }                 if(loletters[20] > 0)                 {                     printf("u : \t%d\n", upletters[20]);                 }                 if(loletters[21] > 0)                 {                     printf("v : \t%d\n", upletters[21]);                 }                 if(loletters[22] > 0)                 {                     printf("w : \t%d\n", upletters[22]);                 }                 if(loletters[23] > 0)                 {                     printf("x : \t%d\n", upletters[23]);                 }                 if(loletters[24] > 0)                 {                     printf("y : \t%d\n", upletters[24]);                 }                 if(loletters[25] > 0)                 {                     printf("z : \t%d\n", upletters[25]);                 }                }          } 

you can add bit of flexibility analyzing count storing alphabet, number character counts, spaces , special counts in count array. separating input processing , output own functions can keep things readable. word count, depends heavily on how define word , how count sequential whitespace in code. in case, word count spaces + 1 in example sentence. not files long strings of whitespace separating columns.

the following show putting these principles in practice. spaces collected, number of words left definition. code process input stdin if no arguments given or expects input filename first argument. let me know if have questions:

#include <stdio.h> #include <stdlib.h>  #define countsz 64 #define alphasz 26 #define noffset (alphasz) * 2  void analizefile (char *fn, int *cnt); void prnanalysis (int *cnt);  int main (int argc, char **argv) {     int count[countsz] = {0};     char *fn = argc > 1 ? argv[1] : null;      analizefile (fn, count);      prnanalysis (count);      return 0; }  void analizefile (char *fn, int *cnt) {     file *fp = null;     int c, numbers, spaces, special;     c = numbers = spaces = special = 0;      if (fn) {         if (!(fp = fopen (fn, "r"))) {             fprintf (stderr, "%s() error: file open failed '%s'.\n", __func__, fn);             exit (exit_failure);         }     }     else         fp = stdin;      while ((c = fgetc (fp)) != eof)     {         if (c >= 'a' && c <= 'z')             cnt[c - 'a']++;         else if (c >= 'a' && c <= 'z')             cnt[c - 'a' + alphasz]++;         else if (c >= '0' && c <= '9')             cnt[c - '0' + noffset]++;         else if ( c == ' ' )             cnt[countsz - 2]++;         else             cnt[countsz - 1]++;     }      if (fp != stdin) fclose (fp); }  void prnanalysis (int *cnt) {     int = 0;     char *set = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz01123456789";      printf ("\nthe frequency analysis of input characters:\n\n");     printf (" spaces  : %d\n special : %d\n\n", cnt[countsz - 2], cnt[countsz - 1]);      printf ("alphabet characters:\n");     (i = 0; < alphasz; i++)         printf ("    %c    : %4d        %c    : %4d\n",                 set[i], cnt[i], set[i + alphasz], cnt[i + alphasz]);      printf ("\nnumbers:\n");      (i = alphasz * 2; < countsz - 2; i++)         printf ("    %c    : %d\n",  set[i], cnt[i]);      printf ("\n"); } 

output

$ ./bin/charcount_case <~/doc/bash/ascii-chars.txt  frequency analysis of input characters:   spaces  : 1106  special : 318  alphabet characters:        :    1           :   16     b    :    1        b    :   13     c    :    5        c    :   25     d    :    5        d    :   15     e    :    1        e    :   26     f    :    1        f    :   10     g    :    1        g    :    2     h    :    5        h    :    7        :    1           :    2     j    :    1        j    :    1     k    :    1        k    :    3     l    :    1        l    :    6     m    :    1        m    :    2     n    :    1        n    :    8     o    :    5        o    :    4     p    :    1        p    :    3     q    :    1        q    :    2     r    :    1        r    :    7     s    :    1        s    :   14     t    :    1        t    :   11     u    :    1        u    :    4     v    :    1        v    :    2     w    :    1        w    :    1     x    :    1        x    :  135     y    :    1        y    :    2     z    :    1        z    :    1  numbers:     0    : 400     1    : 183     1    : 89     2    : 81     3    : 81     4    : 80     5    : 80     6    : 80     7    : 31     8    : 31 

Comments

Popular posts from this blog

asp.net mvc - SSO between MVCForum and Umbraco7 -

Python Tkinter keyboard using bind -

ubuntu - Selenium Node Not Connecting to Hub, Not Opening Port -