Home > Software design >  Counting vowels in each line in an array of string C#
Counting vowels in each line in an array of string C#

Time:09-16

I'm writing a code which counts the most frequent word in an array of string , I'm also trying to count the number of vowels in each line of the word , in other words the total number of vowels in all the words which are in the array , I've written the code but it's not working and I can't figure out what's the problem with it , is it because I'm comparing string with char ?

using System;
using System.Collections.Generic;

namespace lab1._2
{
class Program
{
    static String findWord(String[] arr)
    {
        Dictionary<String, int> hs =
            new Dictionary<String, int>();
        for (int i = 0; i < arr.Length; i  )
        {
            if (hs.ContainsKey(arr[i]))
            {
                hs[arr[i]] = hs[arr[i]]   1;
            }
            else
            {
                hs.Add(arr[i], 1);
            }
        }
        String key = "";
        int value = 0;

        foreach (KeyValuePair<String, int> me in hs)
        {
            if (me.Value > value)
            {
                value = me.Value;
                key = me.Key;
            }
        }
        return key;
    }
    static void Main(string[] args)
    {
        int s;
        //char[] v = new char[10] {'a','A','e','E','i','I','o','O','u','U'};
        Console.WriteLine("Enter size of array : ");
        s = Convert.ToInt32(Console.ReadLine());
        string[] arr = new string[s];
        Console.WriteLine("Enter string elements : ");
        for (int i = 0; i < s; i  )
        {
            arr[i] = Console.ReadLine();
        }
        Console.WriteLine("\nArray elements : ");
        for (int i = 0; i < s; i  )
        {
            Console.WriteLine(arr[i]);
        }
        Console.WriteLine("\nThe most frequent word : ");
        Console.WriteLine(findWord(arr));
        int vowel = 0, cons = 0;
        for (int i = 0; i < arr.Length; i  )
        {
                if (arr[i] == "a" || arr[i] == "e" || arr[i] == "i" || arr[i] == "o" || arr[i] 
        == "u")
                {
                    vowel  ;
                }
                else
                    cons  ;
        }
        Console.WriteLine("Vowels : ");
        Console.WriteLine(vowel);
        Console.WriteLine("Consants : ");
        Console.WriteLine(cons);
        }
    }
}

CodePudding user response:

I think the problem is that arr is an array of string and you are iterating through it as if it was a single string.

A simple way of doing this would be to have a nested loop.

    foreach (var s in arr) // s is a string
    {
        for (int i = 0; i < s.Length; i  )
        {
            if (s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' || s[i] == 'u')
            {
                vowel  ;
            }
            else
                cons  ;
        }
    }

https://dotnetfiddle.net/tI3oTc

using System;

public class Program
{
    public static void Main()
    {
        int vowel = 0;
        int cons = 0;
        string[] arr = new string[]{"test"};
        foreach (var s in arr) // s is a string
        {
            for (int i = 0; i < s.Length; i  )
            {
                if (s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' || s[i] == 'u')
                {
                    vowel  ;
                }
                else
                    cons  ;
            }
        }

        Console.WriteLine(vowel);
    }
}
  • Related