/ / In Bezug auf das Programm, das die Zeit über die Tastatur berechnet [geschlossen] - c #

Für ein Programm, das die Zeit über die Tastatur berechnet [geschlossen] - c #

Ein Mobiltelefon hat 12 Eingabetasten ('1', '2', '3', '4', '5', '6', '7', '8', '9', '*' und '#').

Im Standard-Texteingabemodus können Sie mit jeder Taste die Buchstaben des Alphabets und das Leerzeichen eingeben. Um beispielsweise auf den Buchstaben „b“ zuzugreifen, drückt der Benutzer zweimal die Taste „2“.

Ein Benutzer benötigt mindestens 100 ms, um a zu drückenSchlüssel. Wenn ein Benutzer dieselbe Taste verwenden muss, um aufeinanderfolgende Zeichen einzugeben, muss das Telefon mindestens 0,5 Sekunden warten, um zu akzeptieren, dass der nächste Tastendruck ein neues Zeichen darstellt.

Ich möchte eine Konsolenanwendung schreiben, dieakzeptiert jede Zeichenfolge, die mit den Tastenzuweisungen im Raster mit C # eingegeben werden kann. Die Anwendung sollte Eingaben eines Benutzers akzeptieren und die Mindestzeit berechnen, die der Benutzer für die Eingabe dieser Zeichenfolge mit dem Tastenfeld und der erforderlichen Tastenfolge benötigt.

Wenn jemand weiß, wer mir helfen kann, ein Programm zu schreiben?

Antworten:

0 für die Antwort № 1

Dies sollte Ihnen eine Idee geben:

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;
}
}

Dann erhalten Sie die gesamte Mindestzeit:

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

Hinweis: Sie müssen spezielle Zeichen wie Leerzeichen hinzufügen.