Jā visi kritēriji ir izpildīti. ```csharp /*Veidoja: Gustavs Skripa Grupa: 110 Nosaukums: Noliktavas un preču uzskaites sistēma Projekta apraksts: Aplikācija preču reģistrēšanai kategorizēšanai meklēšanai un kārtošanai noliktavā Veidots: 25.05.2026. Kādā programmā veidots: onlinegdb.com (C# (mono)) */ using System; namespace NoliktavasSistema { // Bāzes klase visām precēm kas ir abstrakta jo neveidosim pašu preci bet gan tās veidus public abstract class Prece { // Privāts mainīgais lai nevarētu pa tiešo nomainīt nosaukumu private string nosaukums; public double cena; // Īpašība ar loģiku kas neļauj ievadīt tukšu nosaukumu public string Nosaukums { get { return nosaukums; } set { if (string.IsNullOrEmpty(value)) { nosaukums = "Nezināms"; } else { nosaukums = value; } } } public int Daudzums { get; set; } // Konstruktors kas saliek preces pamatdatus public Prece(string nosaukums, double cena, int daudzums) { this.Nosaukums = nosaukums; this.cena = cena; this.Daudzums = daudzums; } // Virtuāla metode ko apakšklases varēs pielāgot savām vajadzībām public virtual void IzvaditInfo() { Console.WriteLine($"Prece: {Nosaukums}, Cena: {cena} EUR, Skaits: {Daudzums}"); } } // Elektronikas klase kas manto no Preces un pievieno garantiju public class Elektronika : Prece { public int Garantija { get; set; } public Elektronika(string nosaukums, double cena, int daudzums, int garantija) : base(nosaukums, cena, daudzums) { this.Garantija = garantija; } // Pārveidojam izvades metodi lai parādītu arī garantiju public override void IzvaditInfo() { Console.WriteLine($"Elektronika: {Nosaukums}, Cena: {cena} EUR, Skaits: {Daudzums}, Garantija: {Garantija} mēn."); } } class Program { // Metode kas aprēķina preces kopējo vērtību un atgriež double static double AprekinatVertibu(double precesCena, int precesSkaits) { return precesCena * precesSkaits; } // Trešā metode atlaides piemērošanai kas atgriež double un izmanto divus parametrus static double PiemerotAtlaidi(double summa, string atlaidesKods) { // Switch sazarojums atlaides kodu pārbaudei switch (atlaidesKods) { case "#ESGRIBU10%ATLAIDI": return summa * 0.90; case "#ESMILUSOAPLIKACIJU": return summa * 0.80; default: return summa; // Ja kods nepareizs atgriež pilnu summu } } static void Main(string[] args) { // Masīvs kas var uzglabāt līdz 5 precēm Prece[] noliktava = new Prece[5]; // Izveidojam divus objektus un ieliekam masīvā noliktava[0] = new Elektronika("Dators", 899.99, 3, 24); noliktava[1] = new Elektronika("Telefons", 450.00, 5, 12); // Mainīgais lai programma ietu kamēr lietotājs izvēlas iziet bool turpinat = true; while (turpinat) { Console.WriteLine("\n--- Noliktavu sistēma ---"); Console.WriteLine("1. Parādīt preces"); Console.WriteLine("2. Aprēķināt vērtību"); Console.WriteLine("0. Iziet"); Console.Write("Izvēlies darbību: "); // Nolasām lietotāja ievadi string ievade = Console.ReadLine(); // Pārbaudām ko lietotājs izvēlējās if (ievade == "1") { Console.WriteLine("\nNoliktavas preces:"); // Pirmais for cikls kas iet cauri masīvam un izvada datus for (int i = 0; i < noliktava.Length; i++) { if (noliktava[i] != null) { noliktava[i].IzvaditInfo(); } } } else if (ievade == "2") { double kopejaVertiba = 0; // Otrais for cikls kas iet cauri masīvam un rēķina summu for (int i = 0; i < noliktava.Length; i++) { if (noliktava[i] != null) { // Pieskaitām konkrētās preces noliktavas vērtību kopejaVertiba += AprekinatVertibu(noliktava[i].cena, noliktava[i].Daudzums); } } Console.Write("Ievadi atlaides kodu (#ESGRIBU10%ATLAIDI / #ESMILUSOAPLIKACIJU) vai spied Enter: "); string kods = Console.ReadLine(); // Izsaucam trešo metodi atlaides rēķināšanai kopejaVertiba = PiemerotAtlaidi(kopejaVertiba, kods); // Noapaļojam ar matemātikas metodi uz diviem cipariem aiz komata kopejaVertiba = Math.Round(kopejaVertiba, 2); Console.WriteLine($"\nKopējā noliktavas vērtība: {kopejaVertiba} EUR"); } else if (ievade == "0") { turpinat = false; Console.WriteLine("Programmas beigas"); } else { Console.WriteLine("Nav tādu izvēļu"); } } } } } ```