Programiranje - ispis brojeva u zadanim okvirima

poruka: 111
|
čitano: 25.883
|
moderatori: XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
17 godina
offline
Programiranje - ispis brojeva u zadanim okvirima

Trebao bi program koji ispisuje brojeve u zadanim parametrima, recimo tražim 100 kombinacija brojeva od 1-50, a svaka kombinacija ima 7 brojeva.

Postoji li takvi programi za skinuti ili se moraju stvoriti?

Poruka je uređivana zadnji put pon 7.2.2011 21:40 (walentkane).
Moj PC  
0 0 hvala 0
17 godina
offline
Programiranje - ispis brojeva u zadanim okvirima

include <iostream>
#include <ctime>

#include <cstdio>
using namespace std;
 
int main()
{
    cout<< "Unesi broj kombinacija: ";
    int brojKombinacija;
    cin>> brojKombinacija;
    cout<< "Unesi raspon brojeva 1-N: ";
    int rasponBrojeva;
    cin>> rasponBrojeva;
    cout<< "Unesi broj brojeva u nizu: ";
    int brojBrojevaUNizu;
    cin>> brojBrojevaUNizu;

    srand(time(NULL));

    for(int i=0; i<brojKombinacija; i++)
    {
       for(int j =0; j<brojBrojevaUNizu; j++)
       {
          int broj = rand() % rasponBrojeva + 1;
          cout<< broj << " ";
       }
       cout<< endl;       
    }     system("pause"); 
}

Poruka je uređivana zadnji put uto 8.2.2011 13:53 (Floki).
 
0 0 hvala 0
17 godina
offline
Programiranje - ispis brojeva u zadanim okvirima

U kojem programu se izdaju ove naredbe?

Moj PC  
0 0 hvala 0
15 godina
offline
Programiranje - ispis brojeva u zadanim okvirima

C++

n00binator
Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
Programiranje - ispis brojeva u zadanim okvirima

Evo ti perluša:

 

#!/usr/bin/perl -w
use strict;

if (@ARGV != 3) {
   die;
}

my @broj_kombinacija = 1..$ARGV[0];
my @broj_brojeva = 0..$ARGV[2]-1;

my ($od, $do) = split /-/, $ARGV[1];

foreach (@broj_kombinacija) {
   my @kombinacija;
   for my $broj (@broj_brojeva) {
       $kombinacija[$broj] = int(rand($do-$od+1)) + $od;
   }
   print "@kombinacija\n";
}

 

Spremi kao brojevi.pl i pokreni sa ./brojevi.pl 100 1-50 7

 

Edit: Jel sad bolje? {#}

Poruka je uređivana zadnji put uto 8.2.2011 0:14 (Tom69).
 
0 0 hvala 0
17 godina
neaktivan
offline
RE: Programiranje - ispis brojeva u zadanim okvir

Taj Perl source je totalno iz 90-tih. Nitko ne programira više tak..

Za početak fali ti "use strict;" direktiva. A druga stvar - split() vraća listu.

 

 

 

 

17 godina
offline
Programiranje - ispis brojeva u zadanim okvirima

Hvala na pomoči ali ne kužim ništa, ni kako otvoriti taj c++ i od kud početi, a kamoli upisivati naredbe.

Moj PC  
0 0 hvala 0
17 godina
moderator
offline
RE: Programiranje - ispis brojeva u zadanim okvir
walentkane kaže...

Hvala na pomoči ali ne kužim ništa, ni kako otvoriti taj c++ i od kud početi, a kamoli upisivati naredbe.

17 godina
offline
Programiranje - ispis brojeva u zadanim okvirima

Ubacio sam mu i pauzu, valjda se snađe.

 
0 0 hvala 0
16 godina
odjavljen
offline
Programiranje - ispis brojeva u zadanim okvirima

Prekucao sam flokijev kod u C# ali mi daje neke nebulozne brojeve. Ja nikako skužit u čem je problem. Evo koda:

 

using System;
namespace brojevi
{
    class MainClass
    {
       public static void Main (string[] args)
       {
          Console.WriteLine("Unesi broj kombinacija");
          int kombinacije;
          kombinacije = int.Parse(Console.ReadLine());
          Console.WriteLine("Unesi raspon brojeva 1-N");
          int raspon;
          raspon = int.Parse(Console.ReadLine());
          Console.WriteLine("Unesi dužinu kombinacije");
          int duzina;
          duzina = int.Parse(Console.ReadLine());
          Random RandomClass = new Random();
          for(int i=1; i<kombinacije; i++);
          {
             for(int j=1; j<duzina; j++);
             {
                int RandomNumber = RandomClass.Next(1, duzina);
                int broj = RandomNumber % raspon + 1;
                Console.WriteLine("Broj je {0}.", broj);
             }
          }
       }
    }
}

A rifle is like a human. The stock is the skeleton, the scope is the eyes, the action is the brain, and the barrel is the heart. But you, the man behind the rifle, you are the soul.
Moj PC  
0 0 hvala 0
17 godina
offline
Programiranje - ispis brojeva u zadanim okvirima

GUI aplikacija, algoritam copyright by Floki.

 

Potrebna je instalirana java: http://www.java.com/en/

 

Program: http://dl.dropbox.com/u/14884504/kombinacije.jar

 

Source(ako nekog zanima): http://dl.dropbox.com/u/14884504/kombinacije.rar

Slika Slika
Poruka je uređivana zadnji put uto 8.2.2011 18:36 (Zlatni).
 
1 0 hvala 1
17 godina
offline
Programiranje - ispis brojeva u zadanim okvirima

E puno ti hvala, to je to kaj se traži, jednostavno i brzo.

Moj PC  
0 0 hvala 0
17 godina
offline
RE: Programiranje - ispis brojeva u zadanim okvir
walentkane kaže...

E puno ti hvala, to je to kaj se traži, jednostavno i brzo.

Nema na cemu, Floki je uradio veci dio posla, ja sam samo prepisao njegov algoritam.

16 godina
odjavljen
offline
Programiranje - ispis brojeva u zadanim okvirima

Evo još prepravljeno i ne radi. Bio bi zahvalan kad bi netko rekao u čemu je problem

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Kombinacije1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Upišite broj kombinacija");
            int kombinacije;
            kombinacije = int.Parse(Console.ReadLine());

            Console.WriteLine("Unesite raspon brojeva 1-N");
            int raspon;
            raspon = int.Parse(Console.ReadLine());

            Console.WriteLine("Unesite dužinu kombinacije:");
            int duzina;
            duzina = int.Parse(Console.ReadLine());

            Random RandomClass = new Random();

            for (int i = 0; i < kombinacije; i++)
            {
                for (int j = 0; j < duzina; j++)
                {

                    int broj = RandomClass.Next() % raspon + 1;

                    Console.WriteLine("Broj je {0}.", broj);
                }
                Console.ReadLine();
            }
            Console.ReadLine();
        }
    }
}

A rifle is like a human. The stock is the skeleton, the scope is the eyes, the action is the brain, and the barrel is the heart. But you, the man behind the rifle, you are the soul.
Moj PC  
0 0 hvala 0
17 godina
offline
RE: Programiranje - ispis brojeva u zadanim okvir
Ne znam c# (mislim da je to kod tebe) ali bi puno vise pomoglo kad bi napisao zasto ne radi, odnosno jel dobijes neku gresku ili rezultat ne valja.

Cemu ti sluze zadnje dvije Console.ReadLine()?
U kom rasponu ti Random.Next daje brojeve?
Sta znaci {0}.?

Ako mi odogovoris na ova pitanja mozda ti mognem pomoci :D
16 godina
neaktivan
offline
RE: Programiranje - ispis brojeva u zadanim okvir

@Sum

 

Nemoze tako generirat random u .net-u jer ti je seed uvik isti

 

Najlakse ti je vrieman uzet za seed ka sta je doli napisano stim da se i ode zna desit da su 2 broja zaredon ista. (Nikad mi nije tribalo ovako "puno" random brojeva za redon pa nisan nikad ni proba skuzit kako rjesit taj problem ugl evo ovo sta znan)

 

Ovo 0x7FFFFFFF = maximum inta u Hex

 

Random random = new Random((Convert.ToInt32(DateTime.Now.Ticks % 0x7FFFFFFF)));

Console.WriteLine("{0} ", random.Next(Raspon));

17 godina
offline
Programiranje - ispis brojeva u zadanim okvirima

Ovako radi u C#:

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Kombinacije
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Unesi broj kombinacija: ");
            int brojKombinacija = int.Parse(Console.ReadLine());
            Console.Write("Unesi raspon brojeva 1-N: ");
            int rasponBrojeva = int.Parse(Console.ReadLine());
            Console.Write("Unesi broj brojeva u nizu: ");
            int brojBrojevaUNizu = int.Parse(Console.ReadLine());

            Random slucajniBrojevi = new Random();

            for (int i = 0; i < brojKombinacija; i++)
            {
                for (int j = 0; j < brojBrojevaUNizu; j++)
                {
                    Console.Write("{0} ", slucajniBrojevi.Next(1, rasponBrojeva+1));
                }
                Console.WriteLine();
            }
            Console.ReadKey();

        }
    }
}

Poruka je uređivana zadnji put pet 11.2.2011 21:42 (Floki).
 
0 0 hvala 1
15 godina
offline
Programiranje - ispis brojeva u zadanim okvirima

po vasem misljenju koji je lakse za savldat program C++ ili C#

n00binator
Moj PC  
0 0 hvala 0
16 godina
odjavljen
offline
RE: Programiranje - ispis brojeva u zadanim okvir

Obadva se temelje na objektnom pristupu pa su za početnika podjednako "teški". C# ima (za početnika) čitljiviju sintaksu dok C++ je puno lakše portati po raznim platformama.

 

Ukratko - Windows aplikacije (koje ne zahtjevaju veliku brzinu), rad za bazama podataka i sl. - C#. Aplikacije koje zahtjevaju bolje performanse i "niži" pristup hardveru - C++.

A rifle is like a human. The stock is the skeleton, the scope is the eyes, the action is the brain, and the barrel is the heart. But you, the man behind the rifle, you are the soul.
17 godina
neaktivan
offline
RE: Programiranje - ispis brojeva u zadanim okvir

Ovisi o tvojem predzanju FicoO. I jedan i drugi jezik zahtijevaju dosta savladavanja raznih relativno apstraktnih pojmova. Ako uzmemo dvoje programera s podjednakim znanjem i sposobnostima onda bih rekao da su C++ i C# relativno na istoj razini savladavanja za to dvoje.

17 godina
offline
Programiranje - ispis brojeva u zadanim okvirima

.

 

 

 

Poruka je uređivana zadnji put ned 5.2.2012 22:45 (Floki).
 
0 0 hvala 1
17 godina
offline
RE: Programiranje - ispis brojeva u zadanim okvir
Floki kaže...

Imam i ja jednu GUI aplikaciju za generiranje slučajnih brojeva.

Potrebno je imati instaliran .Net Framework 4, a aplikacija je pisana u C#.

Slučajni brojevi se generiraju na taj način da se u jednom nizu brojeva ne ponavljaju već izvučeni brojevi,

radi toga sam uveo ograničenje da raspon generiranih brojeva mora biti veći minimalno 1.5 put od broja brojeva u nizu.

http://www.box.net/shared/1f9q978cby

 

 

 

Ne razumijem kako ce ti veci raspon garanotvati da se broj nece ponoviti?

17 godina
neaktivan
offline
RE: Programiranje - ispis brojeva u zadanim okvir
Floki kaže...

Imam i ja jednu GUI aplikaciju za generiranje slučajnih brojeva.

Potrebno je imati instaliran .Net Framework 4, a aplikacija je pisana u C#.

Slučajni brojevi se generiraju na taj način da se u jednom nizu brojeva ne ponavljaju već izvučeni brojevi,

radi toga sam uveo ograničenje da raspon generiranih brojeva mora biti veći minimalno 1.5 put od broja brojeva u nizu.

http://www.box.net/shared/1f9q978cby

 

 

 

Drugi možda bolji pristup je da generiraš array sa mogućim vrijednostima i kako random vadiš brojeve van tako ih vadiš van iz polja da ih se više ne može izvući.

17 godina
moderator
offline
RE: Programiranje - ispis brojeva u zadanim okvir
Black Deus Typhon kaže...

Drugi možda bolji pristup je da generiraš array sa mogućim vrijednostima i kako random vadiš brojeve van tako ih vadiš van iz polja da ih se više ne može izvući.

Nisam siguran da je mu je to jedini način na koji izbjegava poduplane brojeve - Floki, objasni kako to radiš.

 

Ovo tvoj je nepotrebno kompliciranje. Imaš array za kombinaciju - nakon što izgeneriraš random broj, provjeriš nalazi li se taj broj već u arrayu, ako se ne nalazi dodaš ga na prvo prazno mjesto u arrayu (i povećava se couter za "količinu" odabranih brojeva), ako se nalazi, ne radi se ništa (jednostavno se petlja ponavlja, u nadi da sljedeći random broj neće biti u arrayu).

17 godina
offline
RE: Programiranje - ispis brojeva u zadanim okvir
Zlatni kaže...
Floki kaže...

Meni veći raspon ne garantira da se broj neće ponoviti, za sprečavanje pojave već izvučenog broja zadužen je algoritam

Radi se o drugoj stvari - ne možeš izvući niz od 7 kuglica iz bubnja ako u bubnju imaš pet kuglica - u stvarnosti ponestane kuglica, a ovdje zablokira program

Poruka je uređivana zadnji put ned 5.2.2012 22:47 (Floki).
17 godina
offline
Programiranje - ispis brojeva u zadanim okvirima

Ovo je klasa za generiranje brojeva :

 

 

 public class Brojevi
    {
        public static int[] Generator(int rasponBrojeva, int brojBrojevaUNizu)
        {
            int[] polje = new int[brojBrojevaUNizu];
            Thread.Sleep(15);
            Random slucajniBrojevi = new Random();
           
                int j = 0, pom;
                polje[j] = slucajniBrojevi.Next(1, rasponBrojeva+1);
                while (j < brojBrojevaUNizu - 1)
                {
                    j++;
                    do
                    {
                        pom = 0;
                        polje[j] = slucajniBrojevi.Next(1, rasponBrojeva+1);
                        for (int k = j; k > 0; k--)
                        {
                            if (polje[j] == polje[k - 1])
                            {
                                pom++;
                            }
                        }
                    } while (pom != 0);
                }
           

            return polje;   
        }
    }

Poruka je uređivana zadnji put pet 11.2.2011 21:35 (Floki).
 
0 0 hvala 0
17 godina
offline
Programiranje - ispis brojeva u zadanim okvirima

A ovo je kod u Form.cs :

 

 

 private void but_Start_Click(object sender, EventArgs e)
        {
            if ((double)rasponBrojeva.Value / (double)brojBrojevaUNizu.Value >= 1.5)
            {
                int[] rezultat = new int[(int)brojBrojevaUNizu.Value];
                for (int i = 0; i < (int)brojKombinacija.Value; i++)
                {
                    rezultat =
                    Kombinacije1.Brojevi.Generator((int)rasponBrojeva.Value, (int)brojBrojevaUNizu.Value);
                    textPolje.AppendText((i + 1).ToString() + ". kombinacija:\n");
                    for (int j = 0; j < (int)brojBrojevaUNizu.Value; j++)
                    {
                        textPolje.AppendText(rezultat[j].ToString() + "   ");
                    }

                    textPolje.AppendText("\n");

                }
            }
            else
            {
                textPolje.Text = "Raspon brojeva mora biti veći minimalno 1,5 put od broja brojeva u nizu!\n";
            }
        }

        private void but_Clear_Click(object sender, EventArgs e)
        {
            textPolje.Text = "";
           
        }

        private void but_Close_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }

 
0 0 hvala 0
17 godina
offline
RE: Programiranje - ispis brojeva u zadanim okvir
mbaksa kaže...
Black Deus Typhon kaže...

Drugi možda bolji pristup je da generiraš array sa mogućim vrijednostima i kako random vadiš brojeve van tako ih vadiš van iz polja da ih se više ne može izvući.

Nisam siguran da je mu je to jedini način na koji izbjegava poduplane brojeve - Floki, objasni kako to radiš.

 

Ovo tvoj je nepotrebno kompliciranje. Imaš array za kombinaciju - nakon što izgeneriraš random broj, provjeriš nalazi li se taj broj već u arrayu, ako se ne nalazi dodaš ga na prvo prazno mjesto u arrayu (i povećava se couter za "količinu" odabranih brojeva), ako se nalazi, ne radi se ništa (jednostavno se petlja ponavlja, u nadi da sljedeći random broj neće biti u arrayu).

u stvari, kao što vidiš, točno to  kako si rekao, s tim da sam jednu petlju stavio u Form.cs (onu koja broji broj kombinacija i koja toliko puta pozove metod koji svakim pozivom generira i vrati jedan niz), a one petlje koje provjeravaju da li se broj ponavlja stavio sam u zasebnu klasu, one pozivaju random funkciju dok god ne stvore niz od različitih brojeva, kad nalete na isti broj, petlje se ponavljaju i već zapisana vrijednost se generira i zapisuje ponovno - za to je ključni do-while blok.

 

ovo postavljeno ograničenje za brojeve u nizu i raspon brojeva nema veze s tim - to je jednostavno zato jer se ne može izvući više kuglica nego ih ima, bio sam malo nejasan, pa su me krivo razumjeli

Poruka je uređivana zadnji put pet 11.2.2011 19:48 (Floki).
17 godina
moderator
offline
RE: Programiranje - ispis brojeva u zadanim okvir

Al si ovaj Generator zakomplicirao... {#} Čak tri petlje! Evo "klasičnije" rješenje s dvije petlje:

 

            int[] polje = new int[brojBrojevaUNizu];            Thread.Sleep(15);            Random slucajniBrojevi = new Random();
            int brojIzvucenih = 0;           
            while (brojIzvucenih < brojBrojevaUNizu)            {                int broj = slucajniBrojevi.Next(1, rasponBrojeva + 1);
                for (int j = 0; j < brojIzvucenih; j++)                {                    if (broj == polje[j])                    {                        broj = 0;                        break;                    }                }
                if (broj != 0) polje[brojIzvucenih++] = broj;            }
            return polje;

 

Osim što drži random generiran broj, varijablu broj koristim i kao zastavicu - ako je 0, znači da se izvučeni broj već nalazi u polju.

 

Poruka je uređivana zadnji put pet 11.2.2011 21:50 (mbaksa).
17 godina
offline
Programiranje - ispis brojeva u zadanim okvirima

Je, svaka čast, moram se riješiti mane da se zadovoljim da kod radi bez da ga optimiziram{#}

 
0 0 hvala 0
Nova poruka
E-mail:
Lozinka:
 
vrh stranice