Untitled
unknown
plain_text
2 years ago
4.8 kB
8
Indexable
using System;
using System.Linq;
class AddPacient
{
enum Blad
{
Imie,
Nazwisko,
NumerTelefonu,
PESEL
}
static Blad? SprawdzImie(string imie)
{
//sprawdzenie długości imienia
if (imie.Length < 2 || imie.Length > 13)
return Blad.Imie;
//sprawdzenie czy pierwsza litera jest wielka
if (!char.IsUpper(imie[0]))
return Blad.Imie;
//sprawdzenie czy wszystkie pozostałe litery są małe
if (imie.Skip(1).Any(c => char.IsUpper(c)))
return Blad.Imie;
//sprawdzenie czy imię nie zawiera cyfr
if (imie.Any(char.IsDigit))
return Blad.Imie;
return null;
}
static Blad? SprawdzNazwisko(string nazwisko)
{
//sprawdzenie długości nazwiska
if (nazwisko.Length < 2 || nazwisko.Length > 20)
return Blad.Nazwisko;
//podział nazwiska na człony (jeśli występuje)
string[] czlonyNazwiska = nazwisko.Split('-');
//sprawdzenie każdego członu nazwiska
foreach (string czlon in czlonyNazwiska)
{
//sprawdzenie czy pierwsza litera jest wielka
if (!char.IsUpper(czlon[0]))
return Blad.Nazwisko;
//sprawdzenie czy wszystkie pozostałe litery są małe
if (czlon.Skip(1).Any(c => char.IsUpper(c)))
return Blad.Nazwisko;
//sprawdzenie czy człon nazwiska nie zawiera cyfr
if (czlon.Any(char.IsDigit))
return Blad.Nazwisko;
}
return null;
}
static Blad? SprawdzNumerTelefonu(string numer)
{
//sprawdzenie długości numeru i czy zawiera on tylko cyfry
if (!numer.All(char.IsDigit) && !numer.StartsWith("+"))
return Blad.NumerTelefonu;
//sprawdzenie, czy numer zaczyna się od "+"
if (numer.StartsWith("+"))
{
//dla numeru zaczynającego się od "+", sprawdzenie długości
if (numer.Length < 11 || numer.Length > 13)
return Blad.NumerTelefonu;
}
else
{
//dla numeru bez "+", sprawdzenie czy ma dokładnie 9 cyfr
if (numer.Length != 9)
return Blad.NumerTelefonu;
}
return null;
}
static Blad? SprawdzPesel(string pesel)
{
//sprawdzenie, czy PESEL ma dokładnie 11 znaków i czy wszystkie znaki są cyframi
if (pesel.Length != 11)
{
return Blad.PESEL;
}
for (int i = 0; i < pesel.Length; i++)
{
if (!char.IsDigit(pesel[i]))
{
return Blad.PESEL;
}
}
int[] wagi = { 1, 3, 7, 9, 1, 3, 7, 9, 1, 3 };
int suma = 0;
//przemnóż każdą cyfrę przez odpowiednią wagę i dodaj wynik do sumy
for (int i = 0; i < 10; i++)
{
suma += (pesel[i] - '0') * wagi[i];
}
//weź tylko ostatnią cyfrę sumy
int ostatniaCyfraSuma = suma % 10;
//cyfra kontrolna to 10 minus ostatnia cyfra sumy, jeśli wynik to 10, cyfra kontrolna to 0
int cyfraKontrolna = (10 - ostatniaCyfraSuma) % 10;
//sprawdzenie, czy cyfra kontrolna jest równa ostatniej cyfrze numeru PESEL
if (cyfraKontrolna == (pesel[10] - '0'))
return null;
else
return Blad.PESEL;
}
static bool DodajPacjenta(string imie, string nazwisko, string numerTelefonu, string pesel, out Blad? error)
{
error = null;
//sprawdzenie imienia
if ((error = SprawdzImie(imie)) != null) return false;
//sprawdzenie nazwiska
if ((error = SprawdzNazwisko(nazwisko)) != null) return false;
//sprawdzenie numeru telefonu
if ((error = SprawdzNumerTelefonu(numerTelefonu)) != null) return false;
//sprawdzenie PESEL
if ((error = SprawdzPesel(pesel)) != null) return false;
//jeśli nie ma błędów, zwróć true
return true;
}
class Program
{
static void Main(string[] args)
{
Blad? error;
bool success = AddPacient.DodajPacjenta("Jan", "Kowalski", "123456789", "01231567890", out error);
if (success)
{
Console.WriteLine(success);
}
else
{
Console.WriteLine($"Nie udało się dodać pacjenta. Błąd w: {error}");
}
Console.ReadKey();
}
}
}Editor is loading...
Leave a Comment