C+ Help

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Mikael1735
nováček
Příspěvky: 11
Registrován: květen 14
Pohlaví: Muž
Stav:
Offline

C+ Help

Příspěvekod Mikael1735 » 11 kvě 2014 22:41

Zdravim, sem v programování začátečník a potřeboval bych pomoct se skriptem. Mám za úkol:
Napište program, který otestuje generátor náhodných čísel od 0 do 9. Program vygeneruje n-krát náhodné číslo z rozsahu 0 až 9 (n je zadáno z klávesnice) a uloží si do pole absolutní četnosti jednotlivých generovaných čísel. Na obrazovku vypíše tabulku s absolutními a relativními četnostmi.
První část mám, ale nevim jak na tabulku.
Popřípadě jakoukoliv kritiku přijímám.

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

#define random(num) (rand()%(num))

void randomize(void)
{
srand((unsigned) time(NULL));
}
int main(int argc, int i, int n, char **argv)
{
printf("Nahodna cisla od 0 do 9\n");
scanf("%d",&n);
for(i=0; i<n; i++)
printf("%d\n", rand()%10);
system("PAUSE");
return 0;
randomize();
}

Reklama
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: C+ Help

Příspěvekod faraon » 11 kvě 2014 23:07

To C+ má být C nebo C++? Program máš sice v Céčku, ale pro jistotu se ptám.

Kde jsi viděl tohle?

Kód: Vybrat vše

int main(int argc, int i, int n, char **argv)

To v závorce jsou argumenty předávané z příkazové řádky, a mají vypadat takhle:

Kód: Vybrat vše

int main(int argc, char **argv)

Nebo takhle, což je v podstatě totéž:

Kód: Vybrat vše

int main(int argc, char *argv[])

Jenže ty je v tomhle programu určitě používat nebudeš, takže stačí když překladači sdělíš že program nic přijímat nemá:

Kód: Vybrat vše

int main(void)

Ty lokální proměnné i a n si pak deklaruješ až uvnitř main(), takže za složenou závorkou {.

Nejdřív si musíš do pole sečíst kolikrát ti které číslo padlo:

Kód: Vybrat vše

int i,n,cislo,pole[10];

for (i=0; i<n; i++)
    {
    cislo=random(10);
    ++pole[cislo];
    }

Samozřejmě je potřeba to pole nejdřív naplnit nulami, buď přímo v inicializaci nebo pomocným cyklem na začátku programu.

A na konci programu to pole normálně vypíšeš dalším cyklem, aby ti vyšlo něco jako tabulka:

Kód: Vybrat vše

Četnost čísel:
0: 85
1: 64
2: 105
3: 92
4: 69
5: 81
6: 91
7: 90
8: 85
9: 73


A to randomize() dej na začátek programu, takhle by ti nebylo nic platné. Ty musíš seed nastavit ještě předtím než poprvé použiješ rand(), a navíc ho máš až za returnem, který ti program ukončí, takže by se vlastně vůbec nevykonal.

Kdo ten název vymyslel? Příkaz RANDOMIZE jsem používal před lety v BASICu :)
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Mikael1735
nováček
Příspěvky: 11
Registrován: květen 14
Pohlaví: Muž
Stav:
Offline

Re: C+ Help

Příspěvekod Mikael1735 » 11 kvě 2014 23:19

Díky kouknu na to a poupravim.. dělám to v Dev C++ ale je to jen C.

Toto bylo v příloze úkolu jak máme začít:
int main(int argc, char **argv) to int i a n sem si tam přidal já.

Název RANDOMIZE je také uveden u tohoto úkolu a vymyslel ho jeden pan profesor na ČVUT FD a ostatní profesoři se toho drží.

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: C+ Help

Příspěvekod faraon » 11 kvě 2014 23:37

Tak to jsi je přidal na špatné místo, takhle bys to rozbil.

Kdyžtak si zapamatuj tuhle kostru, to je první věc co si napíšu když začínám nějaký program:

Kód: Vybrat vše

#include <stdio.h>

int main(void)
    {
    /* proměnné */

    /* kód */

    return 0;
    }

To je minimum aby se to dalo zkompilovat, pak už jen místo těch komentářů přidávám co je potřeba.

Řekl bych že on ten název skutečně nevymyslel, jen použil to co znal z dřívějška. Zajímalo by mě na kterém osmibitovém mikropočítači kdysi začínal: http://en.wikibooks.org/wiki/BASIC_Prog ... Generation :lol:
Jo, já to dělám zrovna tak.
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)


Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 7 hostů