Hogyan lehet egy osztályt rendezni?
Megcsináltam a program többi feladatját. Elkezdtem a tanult módon a rendezés tételt,de az osztályokra nem működik többször is próbáltam de mindig hiba üzenetet irt ki nekem.
A program kódja:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _2016._05._19
{
class Program
{
class x
{
private string a;
private int b;
public x(string aa, int bb)
{
a = aa;
b = bb;
}
public string GetA()
{
return a;
}
public int GetB()
{
return b;
}
public void SetB(int sb)
{
b = sb;
}
}
static void Main(string[] args)
{
Random r = new Random();
Console.Write("Kérem az 'n' értékét: ");
int n = Convert.ToInt32(Console.ReadLine());
x[] t = new x[n];
for (int i = 0; i < n; i++)
{
Console.Write("Kérem a(z) {0}. nevet: ", i + 1);
string benev = Console.ReadLine();
int beertek = r.Next(1, 101);
t[i] = new x(benev, beertek);
Console.WriteLine("Név: {0}, érték: {1}", benev, beertek);
}
Console.WriteLine();
int hely = 0;
for (int i = 0; i < n; i++)
{
if (t[i].GetB() > t[hely].GetB())
{
hely = i;
}
}
Console.WriteLine("A legnagyobb értékkel rendelkező neve: {0} és értéke: {1}", t[hely].GetA(), t[hely].GetB());
int osszeg = 0;
for (int i = 0; i < n; i++)
{
osszeg = osszeg + t[i].GetB();
}
double atlag = (double)osszeg / n;
Console.WriteLine("Értékek átlaga: {0}", atlag);
int db = 0;
for (int i = 0; i < n; i++)
{
if (t[i].GetB() > 50)
{
db++;
}
}
Console.WriteLine("{0} db 50-nél nagyobb érték van.", db);
// Innentől van sajnos a hiba
int seged;
for (int k = 1; k <= n - 1; k++)
{
for (int b = 0; b < n - 1; b++)
{
if (t[b].GetB() > t[b + 1].GetB())
{
seged = t[b];
t[b]= t[b + 1];
t[b + 1] = seged;
}
}
}
}
}
}
Mondjuk ha értelmesebb neveket használnál nagyságrendekkel egyszerűbb lenne a feladatot.
x, t, a, b, aztán találd ki mi micsoda.
x[] t = new x[n];
...
int seged;
...
seged = t[b];
Én itt egy x típúsú elemekből álló tömböt látok, majd egy int változót, aminek egy x típust akarsz értékül adni a tömbből.
Nem fog menni.
Arról nem beszélve, hogy b-t használsz ciklusváltozónak, miközben egy b nevű tagot kérdezel le, hogy mindenképpen tökéletes legyen a káosz.
Első lépés: adj értelmes neveket.
Ja azt nem akartam említeni, mert valószínűleg ezt tanították helyette, ami mondjuk elég gáz az iskola részéről.
De mondjuk talán egy függvényt lehet egyszerűbb megérteni először, mint egy propertyt.
átneveztem rendes nevekre, a rendezésnél a belső ciklus b-t is átneveztem,de igy is uygan azt a hibát jelzi ki.
megoldottam,hogy az int seged helyett x seged-et irtam ami működik is. :)
Márcsak a névre rendezést kéne valakinek elmagyaráznia hoygan kell compareto-val
t[i1+1].setB(segéd)
Ciklusváltozónak használd az i, j, k betűket
Sima változóknál pedig ne x meg b meg bb meg tökömtudja, hanem ha pl egy dolgozó nevét tárolod benne akkor dolgozoNeve legyen, vagy mégjobb ha angolul írod
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!