Witam,
Piszę program który ma za zadanie pobrać listę osób z pliku txt, dobrać dla każdej osoby losowego (unikalnego) partnera i zapisać wynik również w pliku txt. Natrafiłem jednak na pewien problem. Otóż nie mam bladego pojęcia w jaki sposób zmusić program aby nie wybierał znów tych samych osób.
Dane wejściowe są w takiej postaci:
- Imie1 Nazwisko1
- Imie2 Nazwisko2
- Imie3 Nazwisko3
- Imie4 Nazwisko4
- Imie5 Nazwisko5
A wyjściowe powinny wyglądać tak:
Imie1 Nazwisko1 - Imie4 Nazwisko4
Imie2 Nazwisko2 - Imie5 Nazwisko5
Do tej pory udało mi się naskrobać to:
private void button1_Click(object sender, EventArgs e)
{
StreamReader liczba = new StreamReader("number.txt");
int licz = 2 * (int)((char)(liczba.Read()));
StreamReader f1 = new StreamReader("lista1.txt");
string[] tab = new string[licz];
string[] tab1 = new string[licz];
for (int i = 0; i < licz; i++)
{
tab[i] = f1.ReadLine();
tab1[i] = f1.ReadLine();
}
f1.Close();
StreamWriter sw1 = new StreamWriter("generate.txt");
licz = (licz / 10) + 1;
int zakres = licz / 2;
Random los = new Random();
int losowa;
for (int z = 0; z < zakres; z++)
{
losowa = los.Next(((int)(zakres)), licz);
sw1.WriteLine(tab[z] + " " + tab1[z] + " - " + tab[losowa] + " " + tab1[losowa]);
}
sw1.Close();
StreamReader f2 = new StreamReader("generate.txt");
textBox1.Text = f2.ReadToEnd();
f2.Close();
}
Małe objaśnieni:
- plik "lista1.txt" zawiera listę osób na wejściu,
- plik "number.txt" zawiera liczbę osób,
- plik "generate.txt" zawiera dane po połączeniu w pary.
Wiem że kod jest pewnie pełen błędów i obchodzenia wszystkiego naokoło, ale dopiero zaczynam moją przygodę z C# :)
Byłbym bardzo wdzięczny gdyby ktoś podrzucił mi kod który sprawi że wszyscy (nie tylko druga połowa) będą brani do losowania oraz nikt nie zostanie wylosowany dwa razy.
Z góry dziękuje :)