Дано следующее задание: Вводится текст. Конец ввода F1. В тексте найти, какая из букв первого слова встречается чаще и определить количество ее повторений. (Статические методы без использования статических полей). Код решения:
using System;
using System.Collections.Generic;
using System.Text;
namespace Лабораторная_работа_2
{
class Program
{
static void Main(string[] args)
{
var builder = new StringBuilder();
EnterWhileNotF1(builder);
var dicCountLetter = CountLettersFirstWordInText(builder);
char letter =' ';
var count = SearchMaxCountLetter(dicCountLetter, ref letter);
Console.WriteLine();
Console.WriteLine("Буква '{0}' из первого слова встречалась: {1}", letter, count);
}
static void EnterWhileNotF1(StringBuilder text)//ввод текста до ф1
{
var input = Console.ReadKey();
while (input.Key != ConsoleKey.F1)
{
text.Append(input.KeyChar);
input = Console.ReadKey();
}
}
static Dictionary<char, int> CountLettersFirstWordInText(StringBuilder text) //Словарь с буквами первого слова и их кол-вом в тексте
{
var result = new Dictionary<char, int>();
var textSplit = text.ToString().Split();
InitilizeDictionary(result, textSplit[0]);
for (int i = 1;i<textSplit.Length;i++)
{
foreach(var e in textSplit[i])
{
if(result.ContainsKey(e))
result[e]++;
}
}
return result;
}
static void InitilizeDictionary(Dictionary<char, int> dic,string firstWord)// инициализируем словарь по буквам первого слова
{
foreach(var e in firstWord)
{
dic[e] = 0;
}
}
static int SearchMaxCountLetter(Dictionary<char, int> dic, ref char letter)// ищем самую популярную букву
{
var max = -1;
foreach(var e in dic)
{
if(e.Value > max)
{
max = e.Value;
letter = e.Key;
}
}
return max;
}
}
}
Нужно решить без словаря
Сделал следующее нерабочее решение:
using System;
using System.Collections.Generic;
using System.Text;
namespace Лабораторная_работа_2
{
class Program
{
static void Main(string[] args)
{
var builder = new StringBuilder();
EnterWhileNotF1(builder);
var dicCountLetter = CountLettersFirstWordInText(builder);
char letter = ' ';
var count = SearchMaxCountLetter(dicCountLetter);
Console.WriteLine();
Console.WriteLine("Буква '{0}' из первого слова встречалась: {1}", letter, count);
}
static void EnterWhileNotF1(StringBuilder text)//ввод текста до ф1
{
var input = Console.ReadKey();
while (input.Key != ConsoleKey.F1)
{
text.Append(input.KeyChar);
input = Console.ReadKey();
}
}
static char[,] CountLettersFirstWordInText(StringBuilder text) //Массив с буквами первого слова || и их кол-вом в тексте
{
var textSplit = text.ToString().Split();
var bukvi = new char[text.Length];
var counter = new char[text.Length];
var result = new char[textSplit[0].Length,2];
for (int i = 0; i < textSplit.Length; i++)
{
if (textSplit[0][i] != ' ')
{
bukvi[i] = textSplit[0][i];
}
break;
}
for (int i = 0; i<bukvi.Length; i++)
{
result[i, 0] = bukvi[i];
//result[i, 1] = Convert.ToChar(0); AAAAAAAAAAAAAAAAAA
}
for (int i = 0; i < textSplit[0].Length; i++)
for (int j = 0; i < textSplit.Length; j++)
{
if ((textSplit[i][j] == result[i,0]))
{
result[i,1] = Convert.ToChar(Convert.ToInt32(result[i,1])+1);
}
}
return result;
}
/*static void InicilizeDictionary(Dictionary<char, int> dic, string firstWord)// инициализируем словарь по буквам первого слова
{
foreach (var e in firstWord)
{
dic[e] = 0;
}
}
*/
static int SearchMaxCountLetter(char[,]result)// ищем самую популярную букву
{
var max = -1;
for (int i = 0; i < result.GetLength(0); i++)
{
if (result[i,1] > max)
{
max = result[i, 1];
}
}
return max;
}
}
}
В 46-47 строке происходит выход за пределы массива, не могу это исправить
Если не мудрить, то примерно так получается:
private static (char, int) GetTheMostRepeatingLetter(StringBuilder sb)
{
string text = sb.ToString();
int count = 0;
char result = 0;
foreach (char letter in text.Split()[0])
{
int i = 0;
foreach (char c in text)
{
if (c == letter)
i++;
}
if (i > count)
{
count = i;
result = c;
}
}
return (result, count);
}
(char c, int count) = GetTheMostRepeatingLetter(sb);
Console.WriteLine("Буква: {0}, Повторений: {1}", c, count);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Подскажите пожалуйста , как решить проблемуВвожу текст , жму F3 и программа завершается без расстановки
Есть код принятия данных с TcpClientОн работает в таске, имитирующем клиент, но не в классе клиента
Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение