IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Lubos
Člen
Avatar
Lubos:21.3.2013 14:14

Zdravim, dostali sme za ulohu: "Vytvorte program, ktorý bude náhodne generovať celé čísla v danom intervale, až kým súčet zadaných čísel nebude väčší ako číslo N(ktoré sa načíta zo vstupu od uzivatela)". Problem je ten ze neviem ako mam spravit to aby sa cyklus opakoval po sucet hodnot. Lebo ked to spravim tak ako v mojom kode tak sa nezavola pravdepodobne ani raz. Za kazdu radu vopred dakujem :]

//nacitanie vstupov
           Console.Write("Zadajte hodnotu po ktoru sa budu cisla generovat: ");
           int a = int.Parse(Console.ReadLine());
           Console.Write("Zadaj dolnu hranicu generovania nahodnich cisel: ");
           int dh = int.Parse(Console.ReadLine());
           Console.Write("Zadaj hornu hranicu generovania nahodnich cisel: ");
           int hh = int.Parse(Console.ReadLine());
           //inicializacia
           RNG rng = new RNG(dh,hh);
           List<int> list = new List<int>();
           for (int i = 0; a < list.Sum() ; i++)
           {
               list.Add(rng.SetRng());
               foreach (int x in list)
               {
                   Console.WriteLine("{0}", x);
               }
           }
            Console.ReadKey();

btw to ze je kod nanic viem, ucim sa

 
Odpovědět
21.3.2013 14:14
Avatar
Lubos
Člen
Avatar
Lubos:21.3.2013 14:16

inak rng.SetRng() mi vracia random hodnoty v zadanom intervale

 
Nahoru Odpovědět
21.3.2013 14:16
Avatar
martinsakra
Tvůrce
Avatar
Odpovídá na Lubos
martinsakra:21.3.2013 15:02

mrkni na while, nebo do while (zde spíš while) cyklus

Nahoru Odpovědět
21.3.2013 15:02
Democracy is two wolves and a lamb voting on what to have for lunch. Liberty is a well-armed lamb contesting the vote.
Avatar
Lubos
Člen
Avatar
Lubos:21.3.2013 15:20

stale robi to iste

while (a < list.Sum())
            {
                list.Add(rng.SetRng());
                foreach (int x in list)
                {
                    Console.WriteLine("{0}", x);
                }

skusil som aj otocit (list.Sum()<a) ale potom to vracia hluposti.

 
Nahoru Odpovědět
21.3.2013 15:20
Avatar
Зайчик
Člen
Avatar
Odpovídá na Lubos
Зайчик:21.3.2013 15:22

no jestli jsem to dobře pochopil : zadáš číslo N třeba 90, potom minimum a maximum pro třídu random... čísla se budou tak dlouho generovat v rozmezí min-max dokud součet vygenerovaných čísel nebude větší nebo rovno číslu N, pokud jsem to pochopil dobře.. tak zde:

static void Main(string[] args)
        {
            Random rand = new Random();
            Console.WriteLine("zadej N");
            int N = int.Parse(Console.ReadLine());
            Console.WriteLine("Zadej minimum");
            int min = int.Parse(Console.ReadLine());
            Console.WriteLine("zadej maximum");
            int max = int.Parse(Console.ReadLine());
            int i = rand.Next(min,max);
            while(i < N)
            {
                i += rand.Next(min,max);
                Console.WriteLine(i);
            }
            Console.WriteLine("cislo " + i + " presahlo cislo N");
            Console.Read();
        }

Ještě bude třeba ošetřit aby min nebyl větší než max a podobný kraviny.

Nahoru Odpovědět
21.3.2013 15:22
Коммунизм для нашего будущего!
Avatar
Lubos
Člen
Avatar
Lubos:21.3.2013 15:43

ano pochopil si dobre :] nevies este ako by sa dalo spravit aby som dostaval na vystup aktualne vygenerovane random cislo a nie aktualni sucet + random cislo?

 
Nahoru Odpovědět
21.3.2013 15:43
Avatar
Зайчик
Člen
Avatar
Odpovídá na Lubos
Зайчик:21.3.2013 15:47
static void Main(string[] args)
        {
            Random rand = new Random();
            Console.WriteLine("zadej N");
            int N = int.Parse(Console.ReadLine());
            Console.WriteLine("Zadej minimum");
            int min = int.Parse(Console.ReadLine());
            Console.WriteLine("zadej maximum");
            int max = int.Parse(Console.ReadLine());
            int i = rand.Next(min,max);
            while(i < N)
            {
                int a = rand.Next(min,max);
                i += a;
                Console.WriteLine(a);// aktualne vygenerovany cislo to bude vypisovat
            }
            Console.WriteLine("cislo " + i + " presahlo cislo N");
            Console.Read();
        }
Editováno 21.3.2013 15:48
Nahoru Odpovědět
21.3.2013 15:47
Коммунизм для нашего будущего!
Avatar
Lubos
Člen
Avatar
Lubos:21.3.2013 15:54

tiez ma potom napadlo si to hodit do pomocnej premenej :D okej dakujem :]

 
Nahoru Odpovědět
21.3.2013 15:54
Avatar
Зайчик
Člen
Avatar
Nahoru Odpovědět
21.3.2013 15:56
Коммунизм для нашего будущего!
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.