Другие языки программирования и технологии
помогите новичку в c#. не понимаю
Дано 5 человек. и каждому человеку нужно рандомно присвоить значение от 1 до 5 (включительно) без повторений
using System;
using System.Collections.Generic;
namespace Example {
class Program {
static void Main() {
string[] names = { "Иванов Иван", "Петров Пётр", "Сидоров Сидор", "Васильев Василий", "Егоров Егор" };
List<People> people = new List<People>();
People temp;
HashSet<int> hs = new HashSet<int>();
Random rand = new Random();
int beg = 1, end = names.Length;
for (int next = beg; next <= end;) if (hs.Add(rand.Next(beg, end + 1))) ++next;
int[] ids = new int[hs.Count];
hs.CopyTo(ids);
for (var i = 0; i < end; ++i) {
temp.name = names[i];
temp.id = ids[i];
people.Add(temp);
}
people.Sort(delegate(People a, People b) { return a.id < b.id ? -1 : 1; });
foreach (var person in people) Console.WriteLine("{0}. {1}", person.id, person.name);
Console.ReadKey();
}
struct People {
public int id;
public string name;
}
}
}
using System.Collections.Generic;
namespace Example {
class Program {
static void Main() {
string[] names = { "Иванов Иван", "Петров Пётр", "Сидоров Сидор", "Васильев Василий", "Егоров Егор" };
List<People> people = new List<People>();
People temp;
HashSet<int> hs = new HashSet<int>();
Random rand = new Random();
int beg = 1, end = names.Length;
for (int next = beg; next <= end;) if (hs.Add(rand.Next(beg, end + 1))) ++next;
int[] ids = new int[hs.Count];
hs.CopyTo(ids);
for (var i = 0; i < end; ++i) {
temp.name = names[i];
temp.id = ids[i];
people.Add(temp);
}
people.Sort(delegate(People a, People b) { return a.id < b.id ? -1 : 1; });
foreach (var person in people) Console.WriteLine("{0}. {1}", person.id, person.name);
Console.ReadKey();
}
struct People {
public int id;
public string name;
}
}
}
Suxa (. )( .)
Спасибо большое)
Юрий Третьяков
Спасибо
например так
int tmp[5]={0,0,0,0,0};
int hum[5];
for(i=0; i<5; i++){
for(j=rand(5); tmp[j-1]!=0; j=rand(5); // пустой оператор; предполагается rand(5) возвращает от 1 до 5
tmp[j-1]=1; // коррекция: индексы от 0 до 4
hum[i]=j;
}
при больших n надо еще оптимизировать
можно еще взять случайное число от 1 до n! и восстановить перестановку
int tmp[5]={0,0,0,0,0};
int hum[5];
for(i=0; i<5; i++){
for(j=rand(5); tmp[j-1]!=0; j=rand(5); // пустой оператор; предполагается rand(5) возвращает от 1 до 5
tmp[j-1]=1; // коррекция: индексы от 0 до 4
hum[i]=j;
}
при больших n надо еще оптимизировать
можно еще взять случайное число от 1 до n! и восстановить перестановку
В чем именно сложность? алгоритм действий таков:
1) заводим массив из 5 элементов.
2) далее во вложеном цикле такого вида (for i:=1 to 5 do for j:=1 to i do) присваиваем всем случайные значения, вложеный цикл нужен для проверки были ли такие значения или нет)
1) заводим массив из 5 элементов.
2) далее во вложеном цикле такого вида (for i:=1 to 5 do for j:=1 to i do) присваиваем всем случайные значения, вложеный цикл нужен для проверки были ли такие значения или нет)
Юрий Третьяков
вопрос то в том, как присвоить к имени случайное число
Похожие вопросы
- Помогите новичку, объясните разницу между C, C++ И C#. и Посоветуйте книгу/видеоуроки или т. п для обучения основ
- Netbeans C++. Не понимаю, что и где не так. Первый раз установила эту программу и понятия не имею, как ей пользоваться
- C++ Помогите новичку
- Помогите, лёгкий код C++
- помогите закончить код C++
- Подскажите пожалуйста новичку в C++)
- Нужна помощь новичку по C++
- Помогите решить задачу на языке c++. Не понимаю условия в конце кода.
- Помогите новичку с сайтом.
- Помогите решить задачу c#