—
using System;
using System.Collections.Generic;
using System.Text;
namespace Prog2
{
class Persona
{
private string nome;
public string Nome
{
get { return nome; }
set { nome = value; }
}
private int annoNascita;
public int AnnoNascita
{
get { return annoNascita; }
set { annoNascita = value; }
}
public Persona(string nome, int anno)
{
this.Nome = nome;
this.AnnoNascita = anno;
}
static public bool operator >=(Persona par1, Persona par2)
{
return par1.AnnoNascita >= par2.AnnoNascita;
}
static public bool operator <=(Persona par1, Persona par2)
{
return par1.AnnoNascita <= par2.AnnoNascita;
}
static public int ConfrontaNome(Persona par1, Persona par2)
{
return par1.Nome.CompareTo(par2.Nome);
}
static public int ConfrontaAnno(Persona par1, Persona par2)
{
return par1.AnnoNascita - par2.AnnoNascita;
}
}
public class Vettore
{
private Persona[] dati = new Persona[3];
public void Sort()
{
Persona temp = null;
int j = dati.Length;
while (j > 0)
{
for (int i = 0; i < j - 1; i++)
{
if (dati[i] >= dati[i + 1]) //scambiare il '>' con '<' per ottenere un ordinamento decrescente
{
temp = dati[i];
dati[i] = dati[i + 1];
dati[i + 1] = temp;
};
};
j--;
};
}
private delegate int ConfrontaDelegate(Persona o1, Persona o2);
private void SortDel(ConfrontaDelegate cd)
{
Persona temp = null;
int j = dati.Length;
while (j > 0)
{
for (int i = 0; i < j - 1; i++)
{
if (cd(dati[i], dati[i + 1]) > 0)
{
temp = dati[i];
dati[i] = dati[i + 1];
dati[i + 1] = temp;
};
};
j--;
};
}
private void Stampa(string titolo)
{
Console.WriteLine("*** " + titolo + " ***");
// for(int k=0; k<dati.Length; k++)
foreach (Persona k in dati)
{
Console.WriteLine("nome: " + k.Nome + "\tanno di nascita: " + k.AnnoNascita);
}
}
public static void Main2()
{
Console.WriteLine("*** inizio *** ");
Vettore vet = new Vettore();
vet.dati[0] = new Persona("giorgio", 1991);
vet.dati[1] = new Persona("antonio", 1994);
vet.dati[2] = new Persona("carlo", 1990);
vet.Stampa("prima");
vet.Sort();
vet.Stampa("dopo sort");
vet.SortDel(new ConfrontaDelegate(Persona.ConfrontaNome));
vet.Stampa("dopo sort con ConfrontaNome");
vet.SortDel(new ConfrontaDelegate(Persona.ConfrontaAnno));
vet.Stampa("dopo sort con ConfrontaAnno");
Console.WriteLine("*** fine ***");
}
}
}
Articoli di questo autore
Parla gratis
con un operatore
Navigazione
P&P Informatics - P.I. e C.F. 01651210831
tel: Milano 02-40055302 Roma 06-60507807 Messina 090-8966103
email: info@pep.it