/ / Čo sa týka programu, ktorý vypočíta čas pomocou klávesnice [zatvorené] - c #

Pokiaľ ide o program, ktorý počíta čas pomocou klávesnice [zatvorené] - c #

Mobilný telefón má 12 vstupných kľúčov (1, 2, 3, 4, 5, 6, 7, 8, 9, 0, '*' a '#').

V štandardnom režime zadávania textu je možné každú klávesu použiť na zadávanie písmen abecedy a medzery. Napríklad pre prístup k písmenu "b" by používateľ dvakrát stlačil tlačidlo "2".

Pre stlačenie tlačidla a trvá užívateľ minimálne 100 msKľúč. Ak používateľ musí použiť rovnaký kláves na zadanie po sebe idúcich znakov, telefón musí mať najmenej päťsekundovú prestávku, aby prijal, že ďalší stlačený kláves predstavuje nový znak.

Chcem napísať aplikáciu konzoly, ktoráakceptuje ľubovoľný reťazec, ktorý sa dá zadávať pomocou priradenia kľúčov v mriežke pomocou C #. Aplikácia by mala akceptovať vstup od užívateľa a vypočítať minimálny čas potrebný na to, aby používateľ zadal tento reťazec pomocou klávesnice a poradie kľúčov, ktoré by boli potrebné.

Ak niekto vie, kto mi môže pomôcť pri písaní programu.

odpovede:

0 pre odpoveď č. 1

Toto vám dá predstavu:

class Mobilegrid
{
const int MIN_DURATION = 100;
const int WAIT_DURATION = 500;

private static Dictionary<Char, Tuple<Char, int>> Grid;
static Mobilegrid()
{
Grid = new Dictionary<Char, Tuple<Char, int>>();
Grid.Add("a", Tuple.Create("2", 1));
Grid.Add("b", Tuple.Create("2", 2));
Grid.Add("c", Tuple.Create("2", 3));
Grid.Add("d", Tuple.Create("3", 1));
Grid.Add("e", Tuple.Create("3", 2));
Grid.Add("f", Tuple.Create("3", 3));
Grid.Add("g", Tuple.Create("4", 1));
Grid.Add("h", Tuple.Create("4", 2));
Grid.Add("i", Tuple.Create("4", 3));
Grid.Add("j", Tuple.Create("5", 1));
Grid.Add("k", Tuple.Create("5", 2));
Grid.Add("l", Tuple.Create("5", 3));
Grid.Add("m", Tuple.Create("6", 1));
Grid.Add("n", Tuple.Create("6", 2));
Grid.Add("o", Tuple.Create("6", 3));
Grid.Add("p", Tuple.Create("7", 1));
Grid.Add("q", Tuple.Create("7", 2));
Grid.Add("r", Tuple.Create("7", 3));
Grid.Add("s", Tuple.Create("7", 4));
Grid.Add("t", Tuple.Create("8", 1));
Grid.Add("u", Tuple.Create("8", 2));
Grid.Add("v", Tuple.Create("8", 3));
Grid.Add("w", Tuple.Create("9", 1));
Grid.Add("x", Tuple.Create("9", 2));
Grid.Add("y", Tuple.Create("9", 3));
Grid.Add("z", Tuple.Create("9", 4));
}

public static int CalculateMinimumTime(String word)
{
int totalMillis = 0;
for (int index = 0; index < word.Length; index++)
{
Tuple<Char, int> charInfo = Grid[word[index]];
int Pos = charInfo.Item2;
int clickTime = Pos * MIN_DURATION;
if (index != 0)
{
Tuple<Char, int> lastCharInfo = Grid[word[index - 1]];
if (lastCharInfo.Item1 == charInfo.Item1)
clickTime += WAIT_DURATION;
}
totalMillis += clickTime;
}
return totalMillis;
}
}

Potom ste dostali celkový minimálny požadovaný čas:

int totalMillis = Mobilegrid.CalculateMinimumTime("hello"); //1800

Poznámka: musíte pridať špeciálne znaky, ako je white-space.