Kezdőoldal » Számítástechnika » Programozás » Hogyan lehet egy osztályt...

Hogyan lehet egy osztályt rendezni?

Figyelt kérdés

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;

}

}

}


}

}

}



#programozás #osztály #rendezés #C# programozás #c# feladatok #c# osztályok
2016. jún. 1. 18:34
1 2
 1/11 A kérdező kommentje:
És ehhez a programhoz van egy másik feladat,amit szintén nem tudok,hogy compareto-val névre rendezés. Ilyet egyáltalán nem tanultunk :/
2016. jún. 1. 18:42
 2/11 anonim ***** válasza:
Egy int változónak akarsz értékül adni egy másik típust.
2016. jún. 1. 18:58
Hasznos számodra ez a válasz?
 3/11 A kérdező kommentje:
igen a hiba üzenet is ezt mondta,de én nem látom,hogy miért és hol? mindenhol szerintem int-et vizsgálok és intnek int értéket adok.
2016. jún. 1. 19:01
 4/11 anonim ***** válasza:
100%

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.

2016. jún. 1. 19:05
Hasznos számodra ez a válasz?
 5/11 anonim ***** válasza:
Mi a bajod a beépített getset-el? (prop, propfull)
2016. jún. 1. 19:14
Hasznos számodra ez a válasz?
 6/11 anonim ***** válasza:

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.

2016. jún. 1. 19:46
Hasznos számodra ez a válasz?
 7/11 A kérdező kommentje:

átneveztem rendes nevekre, a rendezésnél a belső ciklus b-t is átneveztem,de igy is uygan azt a hibát jelzi ki.


[link]

2016. jún. 1. 19:50
 8/11 A kérdező kommentje:

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

2016. jún. 1. 19:54
 9/11 anonim ***** válasza:

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

2016. jún. 1. 20:04
Hasznos számodra ez a válasz?
 10/11 anonim ***** válasza:
Hát én még mindig ugyanúgy a, b, t, x-et látok.
2016. jún. 1. 20:14
Hasznos számodra ez a válasz?
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!