/*
Veidoja: Lana Lobza
Grupa: 110
Praktiskais darbs 5
Izmantotais Compiler: www.onlinegdb.com
*/
using System;
class Program
{
static void Main() 
{
/* 1. uzd., 2D Masīvs (Izveidojiet 2D masīvu ar izmēru 3x4 (3 rindas, 4 kolonnas) veseliem skaitļiem.
Aizpildiet to ar brīvi izvēlētiem skaitļiem.
Izdrukājiet masīva elementus, izmantojot divas ligzdotas for cikla cilpas.) */
int[,] skaitli = {
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
{ 9, 10, 11, 12 }
};

for (int i = 0; i < skaitli.GetLength(0); ++i) // GetLength(0) - rindas
{
for (int j = 0; j < skaitli.GetLength(1); ++j) // GetLength(1) - kolonnas
{
Console.Write(skaitli[i, j] + " ");
}
Console.WriteLine();
}

/* 2. uzd., Robotais Masīvs (Jagged Array), (Izveidojiet roboto masīvu ar 3 rindām.
Inicializējiet katru rindu ar atšķirīgu elementu skaitu (piemēram, pirmā rinda ar 2 elementiem, otrā ar 3, trešā ar 1).
Izdrukājiet masīva elementus, izmantojot ligzdotas for cilpas.) */
Console.WriteLine( );

int[][] RobotaisMasivs = {
new int[] { 1, 2 },
new int[] { 3, 4, 5 },
new int[] { 6, 7, 8, 9 }
};

for (int i = 0; i < RobotaisMasivs.Length; i++) // .Length atgriež rindu skaitu
{
for (int j = 0; j < RobotaisMasivs[i].Length; j++) // katras rindas garums
{
Console.Write(RobotaisMasivs[i][j] + " ");
}
Console.WriteLine();
}

// 3. uzd., 2D Masīvs – Rindu Summa (Izveidojiet 4x5 2D masīvu ar veseliem skaitļiem. Aprēķiniet un izdrukājiet katras rindas elementu summu.)
Console.WriteLine( );

int[,] RinduSumma = {
{ 1, 2, 3, 4, 5 },
{ 6, 7, 8, 9, 10 },
{ 11, 12, 13, 14, 15 },
{ 16, 17, 18, 19, 20 }
};

for (int i = 0; i < RinduSumma.GetLength(0); i++)
{
int summa = 0;

for (int j = 0; j < RinduSumma.GetLength(1); j++)
{
summa += RinduSumma[i, j];
}

Console.WriteLine($"Rindas {i + 1} summa = {summa}");
}

/* 4. uzd., Robotais Masīvs – Elementa Meklēšana (Izveidojiet roboto masīvu ar vismaz 3 rindām.
Pārbaudiet, vai dotais skaitlis (ko ievada lietotājs) atrodas šajā masīvā.
Ja atrod, izdrukājiet rindas un kolonnas indeksu.) */
Console.WriteLine( );

int[][] OtraisRobotaisMasivs = {
new int[] { 1, 2 },
new int[] { 3, 4, 5 },
new int[] { 6, 7, 8, 9 }
};

Console.Write("Ievadiet skaitli: ");
int meklejamais = int.Parse(Console.ReadLine());

bool atrasts = false; // norāda, vai skaitlis ir atrasts

for (int i = 0; i < OtraisRobotaisMasivs.Length; i++)
{
for (int j = 0; j < OtraisRobotaisMasivs[i].Length; j++)
{
if (OtraisRobotaisMasivs[i][j] == meklejamais)
{
Console.WriteLine($"Skaitlis {meklejamais} atrasts rindā {i}, kolonnā {j}.");
atrasts = true; // lai atzīmētu, ka skaitlis ir atrasts
}
}
}

if (!atrasts)
{
Console.WriteLine($"Skaitlis {meklejamais} nav atrasts masīvā.");
}

/* 5. uzd., Robotais Masīvs – Rindu Sakārtošana (Izveidojiet roboto masīvu. Sakārtojiet katras atsevišķās rindas elementus augošā secībā.
Pēc sakārtošanas izdrukājiet visu masīvu.) */
Console.WriteLine( );

int[][] TrešaisRobotaisMasivs = {
new int[] { 2, 1 },
new int[] { 5, 4, 3 },
new int[] { 9, 8, 7, 6 }
};

Console.WriteLine("Sākotnējais masīvs:");
IzdrukatMasivu(TrešaisRobotaisMasivs);

// Sakārto katras rindas elementus augošā secībā
for (int i = 0; i < TrešaisRobotaisMasivs.Length; i++)
{
Array.Sort(TrešaisRobotaisMasivs[i]); // Iebūvētā metode, kas sakārto masīvu
}

Console.WriteLine("\nMasīvs pēc sakārtošanas:");
IzdrukatMasivu(TrešaisRobotaisMasivs);
}

// Palīgmetode masīva izdrukāšanai
static void IzdrukatMasivu(int[][] masivs)
{
for (int i = 0; i < masivs.Length; i++)
{
for (int j = 0; j < masivs[i].Length; j++)
{
Console.Write(masivs[i][j] + " ");
}
Console.WriteLine(); // pāriet jaunā rindā pēc katras rindas izdrukas
}

}
}