Kezdőoldal » Számítástechnika » Programozás » C# a while ciklus, mi lehet a...

NextBack kérdése:

C# a while ciklus, mi lehet a probléma?

Figyelt kérdés

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.


2017. dec. 16. 21:39
 1/7 anonim ***** válasza:
s felvesz egy értéket (szerintem 1 és 4 között) és egyből ki is lép a ciklusból, mivel az hogy (s páratlan) ÉS (s egynelő 2-vel) az csakis hamis lehet... hogy ad vissza két számjegyű számot? PASSSZ....
2017. dec. 16. 21:54
Hasznos számodra ez a válasz?
 2/7 anonim ***** válasza:
Nem. A while feltétel most egyetlen értékre sem teljesül, hiszen nincs olyan szám, ami 2 és páratlan. Csak 4 akkor lenne, ha && helyett ||-ot használnál.
2017. dec. 16. 21:57
Hasznos számodra ez a válasz?
 3/7 A kérdező kommentje:

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...

2017. dec. 16. 21:58
 4/7 anonim ***** válasza:

while(s%2!=0 || s==2);


vagyis amíg a szám páratlan VAGY egyenlő 2-vel addig fog új értéket felvenni...

2017. dec. 16. 22:05
Hasznos számodra ez a válasz?
 5/7 A kérdező kommentje:

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;


}


}

2017. dec. 16. 22:21
 6/7 A kérdező kommentje:
*Az utolsó do-nál nem -1, ha nem +1
2017. dec. 16. 22:23
 7/7 anonim ***** válasza:

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);

}

2017. dec. 16. 23:32
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!