Tracks
/
C#
C#
/
Übungen
/
Telefonnummernanalyse
Telefonnummernanalyse

Telefonnummernanalyse

Lernübung

Einführung

Tupel

In C# ist ein Tupel eine Datenstruktur, die Daten organisiert und zwei oder mehr Felder beliebigen Typs enthält.

Ein Tupel erzeugst du normalerweise, indem du 2 oder mehr Ausdrücke durch Kommas getrennt in runde Klammern setzt.

string boast = "All you need to know";
bool success = !string.IsNullOrWhiteSpace(boast);
(bool, int, string) triple = (success, 42, boast);

Ein Tupel kannst du bei Zuweisungen und Initialisierungen verwenden, als Rückgabewert oder als Argument einer Methode.

Felder extrahierst du mit der Punkt-Syntax. Standardmäßig heißt das erste Feld Item1, das zweite Item2 und so weiter. Namen, die davon abweichen, besprechen wir weiter unten.

// initialization
(int, int, int) vertices = (90, 45, 45);

// assignment
vertices = (60, 60, 60);

//  return value
(bool, int) GetSameOrBigger(int num1, int num2)
{
    return (num1 == num2, num1 > num2 ? num1 : num2);
}

// method argument
int Add((int, int) operands)
{
    return operands.Item1 + operands.Item2;
}

Feldnamen wie Item1 machen den Code nicht gerade lesbar. Der folgende Code zeigt 2 Möglichkeiten, die Felder von Tupeln zu benennen. Beachte außerdem, dass du im folgenden Code var mit Tupeln verwenden und den Typ ableiten lassen kannst. Das funktioniert genauso gut bei Tupeln mit benannten wie mit unbenannten Feldern.

// name items in declaration
(bool success, string message) results = (true, "well done!");
bool mySuccess = results.success;
string myMessage = results.message;

// name items in creating expression
var results2 = (success: true, message: "well done!");
bool mySuccess2 = results2.success;
string myMessage2 = results2.message;

Anleitung

In dieser Übung analysierst du Telefonnummern.

Du sollst zwei Features implementieren.

Telefonnummern, die an die Routinen übergeben werden, haben garantiert die Form NNN-NNN-NNNN, z. B. 212-515-9876, und sind nie null.

1. Analysiere eine Telefonnummer

Deine Analyse sollte drei Angaben zurückgeben

  1. Eine Angabe darüber, ob die Nummer eine New Yorker Vorwahl hat, also 212 als die ersten drei Ziffern
  2. Eine Angabe darüber, ob die Nummer gefälscht ist, weil sie 555 als Präfix-Code an den Positionen 5 bis 7 hat (Zählung ab 1)
  3. Die letzten vier Ziffern der Nummer.

Implementiere die (statische) Methode PhoneNumber.Analyze(), um die Informationen zur Telefonnummer zu erzeugen.

PhoneNumber.Analyze("631-555-1234");
// => (false, true, "1234")

2. Erkenne, ob eine Telefonnummer einen gefälschten Präfix-Code (555) hat

Implementiere die (statische) Methode PhoneNumber.IsFake(), um mithilfe der Telefonnummer-Informationen aus Aufgabe 1 zu erkennen, ob die Telefonnummer gefälscht ist.

PhoneNumber.IsFake(PhoneNumbers.Analyze("631-555-1234"));
// => true
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
C# Exercism

Bereit, mit Telefonnummernanalyse zu starten?

Melde dich bei Exercism an, um C# mit 62 Konzepte178 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.