1

I have come up with this code, it works for what the teacher wants. Counts spaces, counts words, does a substring search and individually counts letters and shows you what letters are used.

But I need to convert it into an array method rather than a 600 line do while loop. I really have no clue how to do this. Could anyone give me input?

using System;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {

            int a = 0;
            int b = 0;
            int c = 0;
            int d = 0;
            int e = 0;
            int f = 0;
            int g = 0;
            int h = 0;
            int i = 0;
            int j = 0;
            int k = 0;
            int l = 0;
            int m = 0;
            int n = 0;
            int o = 0;
            int p = 0;
            int q = 0;
            int r = 0;
            int s = 0;
            int t = 0;
            int u = 0;
            int v = 0;
            int w = 0;
            int x = 0;
            int y = 0;
            int z = 0;

            int A = 0;
            int B = 0;
            int C = 0;
            int D = 0;
            int E = 0;
            int F = 0;
            int G = 0;
            int H = 0;
            int I = 0;
            int J = 0;
            int K = 0;
            int L = 0;
            int M = 0;
            int N = 0;
            int O = 0;
            int P = 0;
            int Q = 0;
            int R = 0;
            int S = 0;
            int T = 0;
            int U = 0;
            int V = 0;
            int W = 0;
            int X = 0;
            int Y = 0;
            int Z = 0;
            int readChar = 0;
            int word = 0;
            int lower = 0;
            int upper = 0;
            string inputString ="";
            char ch = ' ';
            string findString = "";
            int space = 0;
            int startingPoint = 0;
            int findStringCount = 0;


            Console.Write("Please enter a string: ");


            do{
                readChar = Console.Read();

                ch = Convert.ToChar(readChar);
                if (ch.Equals(' '))
                {
                    space++;
                }
                else if (Char.IsLower(ch))
                {
                    lower++;
                    if (ch.Equals('a')) 
                    {
                        a++;
                    }
                    else if (ch.Equals('b')) 
                    {
                        b++;
                    }
                    else if (ch.Equals('c')) 
                    {
                        c++;
                    }
                    else if (ch.Equals('d')) 
                    {
                        d++;
                    }
                    else if (ch.Equals('e')) 
                    {
                        e++;
                    }
                    else if (ch.Equals('f')) 
                    {
                        f++;
                    }
                    else if (ch.Equals('g')) 
                    {
                        g++;
                    }
                    else if (ch.Equals('h')) 
                    {
                        h++;
                    }
                    else if (ch.Equals('i')) 
                    {
                        i++;
                    }
                    else if (ch.Equals('j')) 
                    {
                        j++;
                    }
                    else if (ch.Equals('k')) 
                    {
                        k++;
                    }
                   else if (ch.Equals('l')) 
                    {
                        l++;
                    }
                    else if (ch.Equals('m')) 
                    {
                        m++;
                    }
                    else if (ch.Equals('n')) 
                    {
                        n++;
                    }
                    else if (ch.Equals('o')) 
                    {
                        o++;
                    }
                    else if (ch.Equals('p')) 
                    {
                        p++;
                    }
                    else if (ch.Equals('q')) 
                    {
                        q++;
                    }
                    else if (ch.Equals('r')) 
                    {
                        r++;
                    }
                    else if (ch.Equals('s')) 
                    {
                        s++;
                    }
                    else if (ch.Equals('t')) 
                    {
                        t++;
                    }
                    else if (ch.Equals('u')) 
                    {
                        u++;
                    }
                    else if (ch.Equals('v')) 
                    {
                        v++;
                    }
                    else if (ch.Equals('w')) 
                    {
                        w++;
                    }
                    else if (ch.Equals('x')) 
                    {
                        x++;
                    }
                    else if (ch.Equals('y')) 
                    {
                        y++;
                    }
                    else if (ch.Equals('z')) 
                    {
                        z++;
                    }
                }
                else if (Char.IsUpper(ch))

                {
                    upper++;
                    if (ch.Equals('A')) 
                    {
                        A++;
                    }
                    else if (ch.Equals('B')) 
                    {
                        B++;
                    }
                    else if (ch.Equals('C')) 
                    {
                        C++;
                    }
                    else if (ch.Equals('D')) 
                    {
                        D++;
                    }
                    else if (ch.Equals('E')) 
                    {
                       E++;
                    }
                    else if (ch.Equals('F')) 
                    {
                        F++;
                    }
                    else if (ch.Equals('G')) 
                    {
                       G++;
                    }
                    else if (ch.Equals('H')) 
                    {
                        H++;
                    }
                    else if (ch.Equals('I')) 
                    {
                       I++;
                    }
                    else if (ch.Equals('J')) 
                    {
                        J++;
                    }
                    else if (ch.Equals('K')) 
                    {
                        K++;
                    }
                    else if (ch.Equals('L')) 
                    {
                        L++;
                    }
                    else if (ch.Equals('M')) 
                    {
                       M++;
                    }
                    else if (ch.Equals('N')) 
                    {
                        N++;
                    }
                    else if (ch.Equals('O')) 
                    {
                        O++;
                    }
                    else if (ch.Equals('P')) 
                    {
                       P++;
                    }
                    else if (ch.Equals('Q')) 
                    {
                        Q++;
                    }
                    else if (ch.Equals('R')) 
                    {
                        R++;
                    }
                    else if (ch.Equals('S')) 
                    {
                       S++;
                    }
                    else if (ch.Equals('T')) 
                    {
                        T++;
                    }
                    else if (ch.Equals('U')) 
                    {
                        U++;
                    }
                    else if (ch.Equals('V')) 
                    {
                        V++;
                    }
                    else if (ch.Equals('W')) 
                    {
                        W++;
                    }
                    else if (ch.Equals('X')) 
                    {
                        X++;
                    }
                    else if (ch.Equals('Y')) 
                    {
                        Y++;
                    }
                    else if (ch.Equals('Z')) 
                    {
                        Z++;
                    }
                }

                if (((ch.Equals(' ') && (!inputString.EndsWith(" ")))||(ch.Equals('\r') && (!inputString.EndsWith(" "))))&&(inputString!=""))
                {
                    word++;
                }

                inputString = inputString + ch;

            } while (ch != '\r');

            Console.ReadLine();

            Console.WriteLine("Report on {0}",inputString);

            Console.WriteLine("# of spaces {0}",space);
            Console.WriteLine("# of lower {0}", lower);
            Console.WriteLine("# of upper {0}", upper);
            Console.WriteLine("# of word {0}", word);
            Console.WriteLine("UPPERCASE");
            if (A >= 1)
            {
                Console.WriteLine("A = {0}",A);
            }
            if (B >= 1)
            {
                Console.WriteLine("B = {0}",B);
            }
            if (C >= 1)
            {
                Console.WriteLine("C = {0}", C);
            }
            if (D >= 1)
            {
                Console.WriteLine("D = {0}", D);
            }
            if (E >= 1)
            {
                Console.WriteLine("E = {0}", E);
            }
            if (F >= 1)
            {
                Console.WriteLine("F = {0}", F);
            } if (G >= 1)
            {
                Console.WriteLine("G = {0}", G);
            }
            if (H >= 1)
            {
                Console.WriteLine("H = {0}", H);
            }
            if (I >= 1)
            {
                Console.WriteLine("I = {0}", I);
            }
            if (J >= 1)
            {
                Console.WriteLine("J = {0}", J);
            }
            if (K >= 1)
            {
                Console.WriteLine("K = {0}", K);
            }
            if (L >= 1)
            {
                Console.WriteLine("L = {0}", L);
            }
            if (M >= 1)
            {
                Console.WriteLine("M = {0}", M);
            }
           if (N >= 1)
            {
                Console.WriteLine("N = {0}",N);
            }
            if (O >= 1)
            {
                Console.WriteLine("O = {0}",O);
            }
            if (P >= 1)
            {
                Console.WriteLine("P = {0}",P);
            }
            if (Q >= 1)
            {
                Console.WriteLine("Q = {0}",Q);
            }
            if (R >= 1)
            {
                Console.WriteLine("R = {0}",R);
            }
            if (S >= 1)
            {
                Console.WriteLine("S = {0}",S);
            }
            if (T >= 1)
            {
                Console.WriteLine("T = {0}",T);
            }
            if (U >= 1)
            {
                Console.WriteLine("U = {0}",U);
            }
            if (V >= 1)
            {
                Console.WriteLine("V = {0}",V);
            }
            if (W >= 1)
            {
                Console.WriteLine("W = {0}",W);
            }
            if (X >= 1)
            {
                Console.WriteLine("X = {0}",X);
            }
            if (Y >= 1)
            {
                Console.WriteLine("Y = {0}",Y);
            }
            if (Z >= 1)
            {
                Console.WriteLine("Z = {0}",Z);
            }

            Console.WriteLine("LOWERCASE");
            if (a >= 1)
            {
                Console.WriteLine("a = {0}", a);
            }
            if (b >= 1)
            {
                Console.WriteLine("b = {0}", b);
            }
            if (c >= 1)
            {
                Console.WriteLine("c = {0}", c);
            }
            if (d >= 1)
            {
                Console.WriteLine("d = {0}", d);
            }
            if (e >= 1)
            {
                Console.WriteLine("e = {0}", e);
            }
            if (f >= 1)
            {
                Console.WriteLine("f = {0}", f);
            } if (g >= 1)
            {
                Console.WriteLine("g = {0}", g);
            }
            if (h >= 1)
            {
                Console.WriteLine("h = {0}", h);
            }
            if (i >= 1)
            {
                Console.WriteLine("i = {0}", i);
            }
            if (j >= 1)
            {
                Console.WriteLine("j = {0}", j);
            }
            if (k >= 1)
            {
                Console.WriteLine("k = {0}", k);
            }
            if (l >= 1)
            {
                Console.WriteLine("l = {0}", l);
            }
            if (m >= 1)
            {
                Console.WriteLine("m = {0}", m);
            }
            if (n >= 1)
            {
                Console.WriteLine("n = {0}", n);
            }
            if (o >= 1)
            {
                Console.WriteLine("o = {0}", o);
            }
            if (p >= 1)
            {
                Console.WriteLine("p = {0}", p);
            }
            if (q >= 1)
            {
                Console.WriteLine("q = {0}", q);
            }
            if (r >= 1)
            {
                Console.WriteLine("r = {0}", r);
            }
            if (s >= 1)
            {
                Console.WriteLine("s = {0}", s);
            }
            if (t >= 1)
            {
                Console.WriteLine("t = {0}", t);
            }
            if (u >= 1)
            {
                Console.WriteLine("u = {0}", u);
            }
            if (v >= 1)
            {
                Console.WriteLine("v = {0}", v);
            }
            if (w >= 1)
            {
                Console.WriteLine("w = {0}", w);
            }
            if (x >= 1)
            {
                Console.WriteLine("x = {0}", x);
            }
            if (y >= 1)
            {
                Console.WriteLine("y = {0}", y);
            }
            if (z >= 1)
            {
                Console.WriteLine("z = {0}", z);
            }
            Console.WriteLine();

            Console.Write("Please enter a substring ");
            findString = Console.ReadLine();


            if (findString.Length <= inputString.Length)
            {
                do
                {
                    if (inputString.IndexOf(findString, startingPoint) != -1)
                    {
                        findStringCount++;
                        startingPoint = inputString.IndexOf(findString, startingPoint) + findString.Length;
                    }

                } while (inputString.IndexOf(findString, startingPoint) != -1);
            }
            else
            {
                Console.WriteLine("Substring is too long!");
            }
            Console.WriteLine("The number of times that {0} is found in the text is {1}", findString, findStringCount);

            Console.ReadLine();

        }
    }
}

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;


namespace ConsoleApplication1
{
class Program
{
    static void Main(string[] args)
    {


        int[] counterArray = new int[123];
        string myString;
        int wordCounted = 0;
        int result = 0;
        //Prompt user and get value
        Console.Write("Please enter a string: ");
        myString =
        Console.ReadLine();
        //Word count
        for (int i = 1; i < myString.Length; i++)
        {

            if (char.IsWhiteSpace(myString[i - 1]))
            {

                if (char.IsLetterOrDigit(myString[i]) ||
                char.IsPunctuation(myString[i]))
                {

                    wordCounted++;

                }

            }

        }

        if (myString.Length > 2)
        {

            wordCounted++;

        }

        //White space count
        foreach (char countSpace in myString)
        {

            if (char.IsWhiteSpace(countSpace))
            {

                result++;

            }

        }

        //Display words and space count,
        Console.WriteLine("\nWORDS:\t\t{0}", wordCounted);
        Console.WriteLine("SPACES: \t{0}", result);
        for (int x = 0; x < myString.Length; x++)
        {

            int myValue = Convert.ToInt32(myString[x]);
            counterArray[myValue]++;

        }

        //Display uppercase letter count
        Console.WriteLine("\nUPPERCASE LETTERS: ");
        //Counting uppercase letter
        for (int y = 65; y < 91; y++)
        {

            if (counterArray[y] > 0)
            {

                Console.WriteLine("\t\t{0}:  \t{1}", Convert.ToChar(y), counterArray[y]);
            }

        }

        //Display lowercase letter count

        Console.WriteLine("LOWERCASE LETTERS: ");
        //Counting lowercase letter
        for (int z = 97; z < 123; z++)
        {

            if (counterArray[z] > 0)
            {

                Console.WriteLine("\t\t{0}:  \t{1}", Convert.ToChar(z), counterArray[z]);
            }

        }

        int startingPoint = 0;
        int findStringCount = 0;

        Console.Write("Please enter a substring ");
        findString = Console.ReadLine();

        Console.WriteLine("Press ENTER to exit...");

        Console.ReadLine();
        }

    }

}
7
  • What do you mean when you say "convert it to an array method"? Do you want to refactor your code to use an array instead of umpteen variables? Commented Jun 11, 2012 at 18:42
  • you could probably go without the entire if else craziness with a simple dictionary or even indexes array (each index represents a letter) Commented Jun 11, 2012 at 18:44
  • 1
    @Ken the answer he posted shouldn't have any bearing on his question being asked now. That answer was downvoted (and rightly so), and so now he's wanting to expand his knowledge. I say, good for him. Commented Jun 11, 2012 at 18:49
  • @KenWhite: If you look more closely, you will see that he posted that as an answer to his own question. The OP is likely still learning about how to best use the site. Commented Jun 11, 2012 at 18:51
  • 2
    My computer lags every time it opens this question; is it just me or are there way too many lines up there? Commented Jun 11, 2012 at 18:51

7 Answers 7

5

Here is a way to use the dictionary and Linq. (Edit added the uppercase linq operation to fill in the A-Z to compliment the a-z):

Dictionary<char, int> myLetters = new Dictionary<char, int>();

Enumerable.Range(0,26)
          .Select( indx => (char)+('a' + indx))
          .Union( Enumerable.Range(0,26)
                            .Select( indx => (char)+('A' + indx)))
          .ToList()
          .ForEach( chr => myLetters.Add( chr, 0));

myLetters['a'] = 2;
myLetters['Z'] = 3;

myLetters.ToList()
         .ForEach( ml => Console.WriteLine("{0} : {1}", ml.Key, ml.Value));

/* Prints out
a : 2
b : 0
c : 0
...
Z : 3
*/

Note the above is for learning purposes, I would actually do the myLetters assignment with the enumerable in one fell swoop such as:

Dictionary<char, int> myLetters =
      Enumerable.Range(0,26)
               .Select( indx => (char)+('a' + indx))
               .Union( Enumerable.Range(0,26)
                                 .Select( indx => (char)+('A' + indx)))
               .ToDictionary (letter => letter, letter => 0);
Sign up to request clarification or add additional context in comments.

Comments

4

The ideal solution would be to use a Dictionary<char,int>, but if the homework specifically requires an array, you can use the fact that the ASCII representation of alphabetic characters are serial. That is, A=65, B=66,...,Z=90 and a=97, b=98,...,z=122. For example:

var uppercase = new int[26];
var lowercase = new int[26];

if( ch >= 'A' && ch <= 'Z' )
    uppercase[ch-'A']++;

if( ch >= 'a' && ch <= 'z' )
    lowercase[ch-'a']++;

Then when you go print it out, you can just cast the indeces to type char:

for( var i='A'; i<='Z'; i++ ) {
    Console.WriteLine( (char)i + " = " + uppercase[i-'A'] );
}

I'll leave the rest of the implementation up to you.

1 Comment

I think it would be clearer if you used character literals instead (they are equivalent to the character code): if(ch >= 'A' && ch <= 'Z') uppercase[ch - 'A']++;
2

Well IMHO the easiest way to get an array of characters would be this:

char[] alphaLower = "abcdefghijklmnopqrstuvwxyz".ToCharArray();
char[] alphaUpper = //same thing as above with uppercase letters;

at this point you can do your calculations inside of a loop. Something like this:

foreach(char c in alphaLower)
{
    //possibly a nested foreach here to process each character of input against each char in the alphabet?
    //write your calculation to console
}

I wouldn't be surprised to see what you have above rewritten in as little as 20 lines of code. Post what you come up with in your next iteration and we will continue to point you in the right direction.

1 Comment

We can foreach a string directly btw.
1

Try using a hashtable...where they key is the letter, and the value is the number of times it occurs

if (ht.Contains({yourletter})) //increment the value by 1

        if (ht.ContainsKey(letter))
            ht[letter] = Convert.ToInt32(ht[letter]) + 1;
        else
            ht.Add(letter, 1);

2 Comments

Why not Dictionary instead of Hashtable?
@Martheen I'm used to Hashtables.....haven't used dictionarys much yet so don't think of it first.
1

ASCII space is continuous for capital letters, and for small caps, capital A starts from decimal 65. see http://www.asciitable.com/ for details

you should allocate an array for all characters in lower part of ascii table (127) var countingchars = new int[128];

then you loop over chars in string and do sth like in this loop: countingchars[(byte)currentchar]++;

whenever you encounter (byte)currentchar == 32, you should increment word count

when you have gone through entire string, get spaces from countingchars[32] get caps from 65 - 90 get small letters from 97-122

hope this is enough.

I am leaving it up to you for putting it nicely into c#

1 Comment

That's probably what the teacher meant, and you explained enough but not too much for a homework question.
0

Hope this will help in learning

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace HomeWork
{
    class Alphabets
    {
        static void Main(string[] args)
        {
            string sentence = null;
            string findString = null;
            int numericCount;
            int upperCount;
            int lowerCount;
            int specialCount;
            int countBlankSpace;
            int countWord;
            Console.Write("Please enter a string: ");
            sentence = Console.ReadLine();
            numericCount = Regex.Matches(sentence, @"\d").Count;
            upperCount = Regex.Matches(sentence, @"[A-Z]").Count;
            lowerCount = Regex.Matches(sentence, @"[a-z]").Count;
            specialCount = Regex.Matches(sentence, @"[!""£$%^&*())]").Count;
            countBlankSpace = new Regex(" ").Matches(sentence).Count;
            countWord = Regex.Matches(sentence, @"[\S]+").Count;
            Console.WriteLine("Report on {0}",sentence);
            Console.WriteLine("# of spaces {0}", countBlankSpace);
            Console.WriteLine("# of lower {0}", lowerCount);
            Console.WriteLine("# of upper {0}", upperCount);
            Console.WriteLine("# of word {0}", countWord);
            Console.WriteLine("# of Special Characters {0}", specialCount);
            Console.Write("Please enter a substring:");
            findString = Console.ReadLine();
            Alphabets.findSubString(findString, sentence);
            Console.WriteLine("\nLowercase Letters \n");
            Alphabets.lowerLetters(sentence);
            Console.WriteLine("\nUppercase Letters \n");
            Alphabets.upperLetters(sentence);
            Console.ReadLine();
        }
        public static void lowerLetters(string sentence)
        {
            int[] upper = new int[(int)char.MaxValue];
            // 1.
            // Iterate over each character.
            foreach (char t in sentence)
            {
                // Increment table.
                upper[(int)t]++;
            }

            // 2.
            // Write all letters found.
            for (int i = 0; i < (int)char.MaxValue; i++)
            {
                if (upper[i] > 0 &&
                char.IsLower((char)i))
                {
                    Console.WriteLine("Letter: {0}  = {1}",
                        (char)i,
                        upper[i]);
                }
            }
        }

        public static void upperLetters(string sentence)
        {
            int[] upper = new int[(int)char.MaxValue];
            // 1.
            // Iterate over each character.
            foreach (char t in sentence)
            {
                // Increment table.
                upper[(int)t]++;
            }

            // 2.
            // Write all letters found.
            for (int i = 0; i < (int)char.MaxValue; i++)
            {
                if (upper[i] > 0 &&
                char.IsUpper((char)i))
                {
                    Console.WriteLine("Letter: {0} = {1}",
                        (char)i,
                        upper[i]);
                }
            }
        }

        public static void findSubString(string findString, string sentence)
        {
            int findStringCount = 0;
            int startingPoint = 0;


            if (findString.Length <= sentence.Length)
            {
                do
                {
                    if (sentence.IndexOf(findString, startingPoint) != -1)
                    {
                        findStringCount++;
                        startingPoint = sentence.IndexOf(findString, startingPoint) + findString.Length;
                    }

                } while (sentence.IndexOf(findString, startingPoint) != -1);
            }
            else
            {
                Console.WriteLine("Substring is too long!");
            }
            Console.WriteLine("The number of times that {0} is found in the text is {1}", findString, findStringCount);
        }

    }
}

Comments

0
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;



namespace ConsoleApplication1
{
class Program
{
    static void Main(string[] args)
    {


        int[] counterArray = new int[123];
        string myString;
        int wordCounted = 0;
        int result = 0;



        //Prompt user and get value
        myString = getStringMethod();


        //Word count
        wordCounted = countWordsMethod(myString, wordCounted);




        //White space count
        result = spaceCounterMethod(myString, result);




        //Display words and space count,
        displayCountMethod(counterArray, myString, wordCounted, result);




        //Display uppercase letter count
        displayUpperMethod();



        //Counting uppercase letter
        uppserCaseMethod(counterArray);

        //Display lowercase letter count

        displayLowerMethod();




        //Counting lowercase letter

        lowerCaseMethod(counterArray);



        Console.WriteLine("Press ENTER to exit...");

        Console.ReadLine();
    }

    private static void displayLowerMethod()
    {
        Console.WriteLine("LOWERCASE LETTERS: ");
    }

    private static void displayUpperMethod()
    {
        Console.WriteLine("\nUPPERCASE LETTERS: ");
    }

    private static void lowerCaseMethod(int[] counterArray)
    {
        for (int z = 97; z < 123; z++)
        {

            if (counterArray[z] > 0)
            {

                Console.WriteLine("\t\t{0}:  \t{1}", Convert.ToChar(z),         counterArray[z]);
            }

        }
    }

    private static void upp

1 Comment

ok so this is the version in METHODS, just apparently neater than using just arrays. I got 100% for it. :D thanks for help. I used right click and EXTRACT METHOD function to do this.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.