Write a program that reads a string from the user and generates a histogram for the characters encountered in this string. A histogram is a representation of how many times each character appears in the input string. Use function Histogram that takes the string as input and displays its histogram.

For example,

String: My name is Nermeen
Histogram //output
M       *
y         *
space  ***
n         **
a         *
m        **
e         ****
i         *
s         *
N        *
r         *




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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string Sentence = Console.ReadLine();
            char[] letters = Sentence.ToCharArray();
            for (int i = 0; i < letters.Length; i++)
            {
                int count = 0;
                for (int j = 0; j < letters.Length; j++)
                {
                    if (letters[i] == letters[j])
                        count++;

                }
                for (int k = 0; k <count ; k++)

                    Console.Write("{0} : *",letters[i]);
                Console.WriteLine( );

             }

        }
    }
}

The problem in my code is that some characters get repeated for example m:if there is another m in another place the program writes it again m:.would you please correct the code for me so that i could the program as the output required by problem.

thanks :)

Edited 3 Years Ago by Dani: Formatting fixed

I could fix it for you, but this looks like an assignment and what would you learn?

Your problem is that you need to store each character, and a count of how many times it occurs. You need at least one more variable.

No,it is not an assignment it is a question in a book I have for learning c#. would you please declare it more for me what variable do I need.thanks

what advise would you give me to be a good programmer in c# . I'm still a beginner and I need help to know how to get to the right way . thanks :)

Well, you need something that holds the character and the current amount. Take a look at Dictionary<>. You could use the letter as the key and the count as the value.

You'll have to make sure there is an entry for the letter before you add it.

I tried alot but I'm still having the same problem .Would you please help me more? thanks

This question has already been answered. Start a new discussion instead.