#c#
#c#
Вопрос:
я пытаюсь понять, почему это не работает. у меня есть простое приложение — конвертер. есть 6 способов преобразовать некоторые единицы измерения, например, градусы Фаренгейта в градусы Цельсия, градусы Цельсия в градусы Фаренгейта. При нажатии «2» в главном меню приложение должно показать 3 самых популярных преобразования, но я вижу только 2.
using System;
using System.Collections.Generic;
using System.IO;
namespace HelloWorld
{
class PopularConversions
{
public static void ReadLogs()
{
var popularConversions = new Dictionary<string, int>();
var conversions = new Dictionary<string, int>
{
{ "Fahrenheit -> Celsjusz", 0 },
{ "Celsjusz -> Fahrenheit", 0 },
{ "Mila -> Kilometr", 0 },
{ "Kilometr -> Mila", 0 },
{ "Funt -> Kilogram", 0 },
{ "Kilogram -> Funt", 0 },
};
string[] lines = File.ReadAllLines("stats.txt");
foreach (string line in lines)
{
string from = line.Split("|")[2];
string to = line.Split("|")[3];
if (from == "Funt" amp;amp; to == "Kilogram")
conversions["Funt -> Kilogram"] ;
else if (from == "Kilogram" amp;amp; to == "Funt")
conversions["Kilogram -> Funt"] ;
else if (from == "Mila" amp;amp; to == "Kilometr")
conversions["Mila -> Kilometr"] ;
else if (from == "Kilometr" amp;amp; to == "Mila")
conversions["Kilometr -> Mila"] ;
else if (from == "Fahrenheit" amp;amp; to == "Celsjusz")
conversions["Fahrenheit -> Celsjusz"] ;
else if (from == "Celsjusz" amp;amp; to == "Fahrenheit")
conversions["Celsjusz -> Fahrenheit"] ;
}
for (int i = 0; i < 3; i )
{
string result = "Funt -> Kilogram";
foreach (string key in conversions.Keys)
{
if (!popularConversions.ContainsKey(key) amp;amp; conversions[result] < conversions[key])
result = key;
}
popularConversions.TryAdd(result, conversions[result]);
}
foreach (string key in popularConversions.Keys)
{
Console.WriteLine("n" key ": " popularConversions[key]);
}
}
}
}
Комментарии:
1. преобразования. Порядок убывания (x=>x.Значение). Возьмите(3)
Ответ №1:
Вам нужно включить файл в свой вопрос или лучше встроить его в свой код.
Ваш алгоритм не имеет смысла. Если «funt -> kilogram» является самым популярным преобразованием, вы в конечном итоге будете «пытаться» вводить его в popularConversions снова и снова, так что в итоге вы получите одну запись в своих popularConversions.
Что вам нужно сделать, это отсортировать записи о преобразованиях и выбрать 3 лучших. У меня нет времени на это, но что-то вроде:
var convList = conversions.ToList();
convList.Sort((kvp1, kvp2) => { return kvp1.Value.CompareTo(kvp2.Value); });
convList.Take(3).ToList().ForEach(kvp => {
Console.WriteLine("n" kvp.Key ": " kvp.Value);
});