Cel: zbudujemy prostą aplikację konsolową w C# (.NET) wykonującą podstawowe operacje matematyczne. Poznasz: wczytywanie danych z konsoli, instrukcje warunkowe (if / switch), obsługę błędów i zadania do samodzielnej pracy.
dotnet --version).dotnet new console -n Calculator lub utwórz plik Program.cs w katalogu projektu.Program.cs.dotnet run i przetestuj.Skopiuj poniższy kod do pliku Program.cs projektu konsolowego.
// Program.cs
using System;
using System.Globalization;
class Program
{
static double ReadNumber(string prompt)
{
while (true)
{
Console.Write(prompt);
var input = Console.ReadLine();
if (input == null) throw new OperationCanceledException();
input = input.Trim().Replace(',', '.'); // akceptuj przecinek lub kropkę
if (double.TryParse(input, NumberStyles.Float, CultureInfo.InvariantCulture, out var value))
return value;
Console.WriteLine("Nieprawidłowa liczba. Spróbuj ponownie.");
}
}
static void Main()
{
Console.WriteLine("Prosty kalkulator konsolowy (C#)");
try
{
var a = ReadNumber("Podaj pierwszą liczbę: ");
var b = ReadNumber("Podaj drugą liczbę: ");
Console.Write("Wybierz operację (+, -, *, /): ");
var op = Console.ReadLine()?.Trim();
double result;
switch (op)
{
case "+":
result = a + b;
break;
case "-":
result = a - b;
break;
case "*":
result = a * b;
break;
case "/":
if (b == 0)
{
Console.WriteLine("Błąd: dzielenie przez zero.");
return;
}
result = a / b;
break;
default:
Console.WriteLine("Nieznana operacja.");
return;
}
Console.WriteLine($"Wynik: {result}");
}
catch (OperationCanceledException)
{
Console.WriteLine("Wejście przerwane.");
}
catch (Exception ex)
{
Console.WriteLine("Wystąpił błąd: " + ex.Message);
}
}
}
W katalogu projektu (tam gdzie Program.cs) uruchom:
dotnet run
Dodaj obsługę operacji modulo (%) — pamiętaj o sprawdzeniu dzielenia przez zero.
Dodaj potęgowanie (np. wpisz pow lub ^): użyj Math.Pow(a, b) dla potęgowania zmiennoprzecinkowego.
Przerób program tak, aby działał w pętli i pytał użytkownika po każdej operacji, czy kontynuować (np. wpisz q lub exit by wyjść).
Rozszerz walidację tak, aby poprawnie rozpoznawać lokalny separator dziesiętny (użyj CultureInfo lub dopasuj wejście), a także obsługuj puste wejścia i spacje.
Console.WriteLine do debugowania.