Sodo liho
Sestavi tabelo naključnih celih števil med 1 in 100. Prepiši jih v novo tabelo tako, da bodo v novi tabeli najprej elementi, ki imajo v prvi tabeli sode indekse, potem pa še elemente z lihimi indeksi. Primer: [ 2, 4, 23, 5, 45, 6, 8 ] --> [ 2, 23, 45, 8, 4, 5, 6 ]
Rešitev (C#)
using System;
namespace Tabele_Sodo_Liho {
class Program {
public static void Main(string[] args) {
#region Branje - uporabniški vnos:
Console.Write("Vpiši dolžino tabele: ");
int dolzTab = int.Parse(Console.ReadLine());
#endregion
#region Kreiranje osnovne tabele
//najprej kreiramo objekt tipa Random za naključni izbor števil:
Random boben = new Random();
int[] tabela = new int[dolzTab]; //v tabeli naredimo prostor za 100 števil
//napolnimo tabelo:
int i = 0;
while (i < dolzTab) { //števec postavimo na toliko kolikor je členov tabele
tabela[i] = boben.Next(1,101) ; //polnimo vsak člen tabele posebej
i++;
}
#endregion
#region izpis osnovne tabele
//izpis kreirane tabele:
int k = 0;
while (k < dolzTab) {
Console.WriteLine(tabela[k]);
k++;
}
#endregion
Console.WriteLine(); //v novo vrsto
#region Kreiranje nove tabele -> Srce programa
//kreiramo prostor za novo tabelo
int[] tabela_pop = new int[dolzTab]; //tabela v katero bomo prepisovali
int sode_po_vrsti = 0; //števec, ki določi člen v novi tabeli in gre po vrsti
int lihe_po_vrsti = (dolzTab-1) / 2 + 1; //tole je zaradi določevanja sredine oz. določevanja števila lihih členov
int j = 0; //dolzTab-1 pa zato, da ne presežemo meje naše tabele, /2+1 pa, da dobimo število lihih členov
while (j < dolzTab) { //gremo skozi vse člene prve tabele..
if (j % 2 == 0) { //če je člen prve tabele sod...
tabela_pop[sode_po_vrsti] = tabela[j]; //..prepiši ta člen prve tabela na sode_po_vrsti-ti člen druge tabele (člen določa števec sode_po_vrsti)
sode_po_vrsti++;
} else { //če ni sod..
tabela_pop[lihe_po_vrsti] = tabela[j]; //isto kot zgoraj velja za lihe člene, le da
lihe_po_vrsti++; //bo tale števec začel prištevati točno tam kjer se..
} //končajo prepisani sodi členi iz stare tabele. Torej nekje
//od sredine naprej. Točno od kje naprej pa določa formula: (dolzTab-1) / 2 + 1;
j++;
}
#endregion
#region izpis popravljene tabele
//izpis prepisane nove tabele
int x = 0;
while (x < dolzTab) {
Console.WriteLine(tabela_pop[x]);
x++;
}
#endregion
Console.ReadKey(true);
}
}
}