Kezdőoldal » Számítástechnika » Programozás » C#-ban mi a hibám a programnál?

C#-ban mi a hibám a programnál?

Figyelt kérdés
Valami nagyon apró kis hiba lehet... ez ilyen energia generátor akar lenni gazából, minél kevesebb az esély annál magasabb "Erőt" generál... De valamiért kiír mégegy számot, talán a legelső random generált számot, de nem értem mi lehet a hiba, valami nagyon egyszerű, valaki segítsen!

2015. jún. 4. 22:59
1 2
 1/11 anonim ***** válasza:
Szerinted ez alapján a leírás tud bárki is segíteni?
2015. jún. 4. 23:04
Hasznos számodra ez a válasz?
 2/11 A kérdező kommentje:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;


namespace ConsoleApplication2

{

class Program

{

static void Main(string[] args)

{

Random r = new Random();


int[] tomb = new int[1];

for (int a = 0; a < 1; ++a)

{

tomb[a] = r.Next(10000);

}

for (int a = 0; a < 1; ++a)


{

if (tomb[a] >1000 && tomb[a] <10000)

{

tomb[a] = r.Next(1,120);

Console.WriteLine("Az ön harciereje:"+tomb[a]);

}

if (tomb[a] >300 && tomb[a]<1000 )

{

tomb[a] = r.Next(125,1200);

Console.WriteLine("Az ön harciereje:"+tomb[a]);


}


if (tomb[a] > 100 && tomb[a] < 300)

{

tomb[a] = r.Next(1200, 5500);

Console.WriteLine("Az ön harciereje:"+tomb[a]);

}

if (tomb[a] > 10 && tomb[a] < 100)

{

tomb[a] = r.Next(5500, 12000);

Console.WriteLine("Az ön harciereje:"+tomb[a]);

}

if (tomb[a] > 2 && tomb[a] < 10)

{

tomb[a] = r.Next(12000, 70000);

Console.WriteLine("Az ön harciereje:"+tomb[a]);

}

if (tomb[a]<2)

{

tomb[a] = r.Next(100000, 10000000);

Console.WriteLine("Az ön harciereje:"+tomb[a]);

}



}



Console.ReadKey();

}

}

}

2015. jún. 4. 23:04
 3/11 A kérdező kommentje:
csak annyi a hiba, hogy két "erőt" is kiír... Pedig jól adtam meg a halmazokat.
2015. jún. 4. 23:04
 4/11 A kérdező kommentje:
Break kell? :D
2015. jún. 4. 23:08
 5/11 anonim ***** válasza:

Inkább continue vagy else-k

Mondjuk igy 1 elemu tombnél a break is jó, de gondolom a későbbiekben nem egy elem lesz benne.

2015. jún. 4. 23:12
Hasznos számodra ez a válasz?
 6/11 A kérdező kommentje:
Nem teljesen értem! :S Kezdő vagyok nagyon! :D
2015. jún. 4. 23:43
 7/11 anonim válasza:

hanyagold a breaket meg a hasonló szarságokat. a megoldás egyszerű, a tomb[a] értéket kap az elején (tomb[a] = r.Next(10000);), majd a továbbiakban mikor teljesül rá egy feltétel, új értéket kap (pl

if (tomb[a] > 100 && tomb[a] < 300)

{

tomb[a] = r.Next(1200, 5500);

Console.WriteLine("Az ön harciereje:" + tomb[a]);

}) itt történik az első konzolra írás, de mivel a tomb[a] új értéket kapott, ezt tovább fogja vizsgálni és amennyiben emiatt teljesül egy másik feltétel akkor ismét új értéket fog kapni és ismét konzolra írás fog történni.

amúgy egy ilyen feladatra elég fölösleges tömböt foglalni és az egy elemű tömbhöz sincs sok értelme a ciklust írni. sima intekkel meg tudnád valósítani, csak külön változóba tárold az "esélyt" és a "harci pontot".

még egyszerűbben is meg tudod oldani, ha a sima "if"-ek helyett "else if"-eket használsz. ilyenkor az első feltétel teljesülése után az elágazás végére fog ugrani a program és kimarad a többi rész. a fentieket pedig csak az elvi probléma megoldására említettem.

2015. jún. 5. 00:47
Hasznos számodra ez a válasz?
 8/11 A kérdező kommentje:
értem, köszi! :)
2015. jún. 5. 01:07
 9/11 anonim ***** válasza:

using System;


class Program

{

static void Main()

{

Random r = new Random();


int power = r.Next(10000);


if (power > 1000 && power < 10000)

power = r.Next(1, 120);


else if (power > 300 && power < 1000)

power = r.Next(125, 1200);


else if (power > 100 && power < 300)

power = r.Next(1200, 5500);


else if (power > 10 && power < 100)

power = r.Next(5500, 12000);


else if (power > 2 && power < 10)

power = r.Next(12000, 70000);


else if (power < 2)

power = r.Next(100000, 1000000);


Console.WriteLine("Az ön harciereje:" + power);

Console.ReadKey();

}

}


Az eredeti kódod kicsit átláthatóbban.

Megjegyezném, hogy van pár érték, amiket nem vizsgálsz, például amikor a generált szám pont a határon van, gondolom ez nem szándékos.

2015. jún. 5. 13:27
Hasznos számodra ez a válasz?
 10/11 A kérdező kommentje:
de ha nincs break; a for ciklusomban, akkor kiír egymás alá több harcierőt is.
2015. jún. 6. 15:35
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, 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!