Pereiti prie turinio

Patarkit su C# suskaičiuoto rezultato iš metodo gavimu


Rekomenduojami pranešimai

Sveiki, gavau užduotį iš objektinio programavimo, kad parašyti sistemą, kuri surastų ilgiausią lentą pagal ilgio matmenį (užduotis ilgesnė, bet šiuo metu noriu atlikti tik jos vieną dalį). Taigi metode parašiau tikrinimą, dėl kurio tinkamumo labiausiai ir abejoju. Gal koks C# asas galėtų žvilgtelti į kodą ir užvesti ant kelio, kad toliau galėčiau judėti tinkama linkme?

 

 

Kodas:

https://pastebin.com/UQHEk42v

Redagavo Striobis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Metodu pavadinimuose lietuvisku simboliu nenaudok ir siaip stenkis programas angliskai rasyt.

 

O del sprendimo siulyciau prikurt lentu daugiau nei viena, sumest i lista arba masyva ir parasyk metoda kuris eidamas per lentu lista ar masyva ims lentos ilgi su tuo paciu gautiIlgi metodu ir tikrins ar tai yra max.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

l1.ImtiIlgį()

l2.ImtiIlgį()

l3.ImtiIlgį()

 

Pradžioje metodo gali sukišti į double kintamuosius, tai nereikės visur kartoti tų ilgų rašliavų if'uose ir pagerės skaitomumas. Pirmam if'e return nereikalingas, jeigu jau nusprendęs pabaigoje max grąžinti.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Metodu pavadinimuose lietuvisku simboliu nenaudok ir siaip stenkis programas angliskai rasyt.

 

O del sprendimo siulyciau prikurt lentu daugiau nei viena, sumest i lista arba masyva ir parasyk metoda kuris eidamas per lentu lista ar masyva ims lentos ilgi su tuo paciu gautiIlgi metodu ir tikrins ar tai yra max.

Metodo dar neleido nauodoti, tai kolkas nepavyks

Nuoroda į pranešimą
Dalintis kituose puslapiuose

per sudėtingai galvoji

užtenka:

public static double IlgiausiaLenta(Lenta l1, Lenta l2, Lenta l3)
{
var max = l1.ImtiIlgį();
var l2ilgis = l2.ImtiIlgį();
var l3ilgis = l3.ImtiIlgį();

if (l2ilgis > max)
	max = l2ilgis;
if (l3ilgis > max)
	max = l3ilgis;

return max;
}

patarimas:

kadangi naudoji C# tai vietoj to, kad turėtum getterio funkciją (šiuo atvėju ImtiIlgį) naudok properties, tai yra C# kalbos dalis tai ne taip kaip C++, nėra priežasties jos nenaudoti.

Taip pat kai naudoji ar getterį ar property, išsaugok reikšmę lokaliai. C# kompileris yra gan durnas ir tokių dalykų dažniausiai neoptimizuoja.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

taip niekas neprogramuoja - IlgiausiaLenta(Lenta l1, Lenta l2, Lenta l3) funkcija visiškai nepraktiška, tavo programa gali dirbti tik su trim lentom? ką jeigu man reikės dviejų arba keturių lentų ilgius rasti, vėl atskiras funkcijas rašyti? Turi į funkciją paduoti duomenų masyvą ar listą ir jame ieškoti.

 

 

Čia pvz su LINQ, greičiausia ir tvarkingiausia jeigu lentų būtų iki kokio 100000 vnt, po to pradeda lėteti perforamance.

 

public static double IlgiausiaLenta(List<Lenta> lentos)
{
return lentos.Max(e=> e.ImtiIlgį());
}

 

Kadangi jums aktualus mokymosi procese pats algoritmas ir parodyti, kad jį moki tai paprastas maxso algoritmas liste turi būti, kuri manau pati pirma išmoko:

 

public static double IlgiausiaLenta(List<Lenta> lentos)
{
double maxValue = 0;
for(int i = 0; i < lentos.Count; i++)
{
  if(maxValue >= lentos[i].ImtiIlgį())
    maxValue = lentos[i].ImtiIlgį();
}
return maxValue;
}

Redagavo babunas
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Aš šį klausimą spręsčiau taip:

 


class Program
{
   	static void Main(string[] args)
   	{
       	Dictionary<string, double> AllBoards = new Dictionary<string, double>
       	{
           	{ "pirma lenta", 1.20 },
           	{ "antra lenta", 6 },
           	{ "trecia lenta", 5.455 },
           	{ "ketvirta lenta", 50 },
           	{ "penkta lenta", 0.20 }
       	};

       	string LongestBoard = FindLongestBoard(AllBoards);

       	Console.WriteLine("Ilgiausia lenta: " + LongestBoard);
       	Console.ReadKey();
   	}

   	public static string FindLongestBoard(Dictionary<string, double> boards)
   	{
       	string LongestBoard = "";
       	double Max = 0;

       	foreach (KeyValuePair<string, double> item in boards)
       	{
           	if (item.Value > Max)
           	{
               	Max = item.Value;
               	LongestBoard = item.Key;
           	}
       	}
       	return LongestBoard;
   	}
}

Redagavo today
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...