Hogyan lehet C#-ban rendezni? ABC-re és számra?
Olyan gondom van,hogy nagyjából kész az egész program,csak pár hibát ir ki.
1. hiba: a rendezésnél néha nem tudom nagy számokat irok vagy valami,mikor beirtam minden adatot, amikor a rendezett listát akarja kiirni azt a hiba üzenetet kapom,hogy az "index határán túl mutat'-hogy ez miért lehet?
2. feladatom meg,hogy névre (ABC) rendezzem a tömböt. Sikerült compareto-val csak most azt irja ki 0,1,-1 éppen hogyan van sorrendben a két szöveg. Nekem emg az a feladatom,hogy ugy irassam ki,hogy névre rendezi és kiirja pl.: Béla,10 alája Dénes,20.
Eddig kész 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)
{
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}. 'a' értéket (szöveg): ", i + 1);
string bea = Console.ReadLine();
Console.Write("Kérem a(z) {0}. 'b' értéket (szám): ",i+1);
int beb = Convert.ToInt32(Console.ReadLine());
Console.WriteLine();
t[i] = new x(bea,beb);
}
x seged;
for (int i1 = 1; i1 <= n - 1; i1++)
{
for (int i2 = 0; i2 < n - 1; i2++)
{
if (t[i2].GetB() > t[i2 + 1].GetB())
{
seged = t[i2];
t[i2] = t[i2 + 1];
t[i1 + 1] = seged;
}
}
}
Console.WriteLine("Rendezett tömb 'b' értékre:");
for (int i = 0; i < n; i++)
{
Console.Write(t[i].GetB()+",");
}
Console.WriteLine();
Console.WriteLine("Névre rendezve 'a' értékre: ");
int ertek = 0;
for (int i = 0; i < n; i++)
{
ertek = t[i].GetA().CompareTo(t[i].GetA());
}
Console.WriteLine(ertek);
Console.ReadKey();
}
}
}
Hát nem így.
A semmitmondó nevek miért nincsenek még mindig javítva?
Írd már át ezeket a neveket valami értelmesre, könyörgöm.
Egyébként meg, ha n eleme van a tömbödnek, akkor n-1 az utolsó index, lévén 0-tól kezdődik az indexelés. Ennek okán a ciklusaidban eléggé túlindexelsz. i1<=n önmagában túlindexeléshez vezet, de i2<n mellett t[i2+1] elemet elkérni SZINTÉN túlindexelést fog okozni. (t[i1+1] meg aztán végképp a halál faszáig elindexel).
Néhány apró módosítással:
Hahaha mennyivel szebb, ég és föld.
Egyetlen dolog, hogy a _-val kezdődő változóneveket nem erőltetném, indokolatlan és rontja az olvashatóságot.
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!