C# a while ciklus, mi lehet a probléma?
do {
s = rnd.Next(1,5);
}while((s%2 != 0) && (s==2));
Elvileg csak 4-et vehet fel az "s" nem ?
Mert egy for ciklusban van és kiíratáskor elég furcsa, hogy még két számjegyű számot is kapok.










Már nagyon bele zavarodtam, de a lényeg az lenne, hogy csak páros számot és ne 2-es legyek.
do{
s = rnd.Next(1,5);
}
while(s%2!=0 && s!=2);
de nem akar össze jönni...





while(s%2!=0 || s==2);
vagyis amíg a szám páratlan VAGY egyenlő 2-vel addig fog új értéket felvenni...
Az általad írt válasz helyes, de akkor nem értem, hogy nekem ez miért nem sikerül, mert szerintem ugyan az a logikája.
Tömböt feltölteni, úgy hogy egy elem csak egyszer szerepel és a szám páros.
int[] paros_tomb = new int[20];
Random rnd = new Random();
int s = 0;
int temp=0;
for (int i = 0; i < paros_tomb.Length; i++)
{
bool end = false;
do
{
s = rnd.Next(1, 51);
}
while (s % 2 != 0);
temp = s;
for (int j = 0; j < paros_tomb.Length; j++)
{
if (paros_tomb[j] == s)
{
end = true;
break;
}
}
if (!end)
{
paros_tomb[i] = s;
}
else
{
do
{
s = rnd.Next(1, 50 - 1);
}
while (s % 2 != 0 || s == temp);
paros_tomb[i] = s;
}
}





Ha csak 50-ig kell 20 db páros szám véletlenszerűen, akkor egyszerűbb, ha kiválasztod az összes páratlan számot és utána véletlenszerűen választasz közülük:
List<int> evenNumbers = new List<int>();
for(int i=4;i<51;i++){
if(i%2==0){
evenNumbers.Add(i);
}
}
int[] evenNumberArray = new int[20];
Random rand = new Random();
for(int i = 0;i<evenNumberArray.Length;i++){
int next = rand.Next(0,evenNumbers.Count());
evenNumberArray[i] = evenNumbers[next];
evenNumbers.RemoveAt(next);
Console.WriteLine(evenNumberArray[i]);
}
Ha nagyobb a range, akkor az alábbi inkább:
HashSet<int> evenNumbers = new HashSet<int>();
int numberOfRandomIntegers = 20;
int numbersMaxRange = 1200;
Random rand = new Random();
do{
int currentValue = rand.Next(4, numberMaxRange);
if(currentValue % 2 == 0){
evenNumbers.Add(currentValue);
}
}while(evenNumbers.Count() < numberOfRandomIntegers);
foreach(int num in evenNumbers){
Console.WriteLine(num);
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!