Avatar
Lubos
Člen
Avatar
Lubos:

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:

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

 
Nahoru Odpovědět 21.3.2013 14:16
Avatar
martinsakra
Redaktor
Avatar
Odpovídá na Lubos
martinsakra:

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:

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
Зайчик:

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:

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
Зайчик:
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  +1 21.3.2013 15:47
Коммунизм для нашего будущего!
Avatar
Lubos
Člen
Avatar
Lubos:

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.