Iné

Mac C++ polia a náhodné čísla

iBookG4user

Pôvodný plagát
27. júna 2006
Seattle, WA
  • 20. septembra 2009
Na moju fakultu umiestnili tútorov pre C++ v tých najnevhodnejších časoch... Inštruktor v každom prípade zverejnil nasledujúce pokyny:

'Napíšte funkciu, ktorá vyplní pole 25 náhodnými číslami medzi 1 a 10. Potom napíšte funkciu, ktorá pole vytlačí. Napíšte nejaký kód do main, aby ste otestovali svoje funkcie. Niekedy sa tento testovací kód nazýva *ovládač

Tu nepoužívajte globálne premenné. Odovzdajte pole funkcii cez zoznam parametrov'

Môj aktuálny kód nespôsobuje žiadne chyby v ladiacom nástroji, ale nevypisuje pole. A neviem, čo myslí tým, že píše vodičák, čo mám testovať? Všetci ste sa v minulosti ukázali ako mimoriadne nápomocní a som si istý, že tentoraz mi pomôžete nasmerovať ma správnym smerom

Kód: |_+_|

lee1210

10. januára 2005


Dallas, TX
  • 20. septembra 2009
Niekoľko vecí: Vaše pole by malo byť typu int[], nie double[]. Ak chcete vytvoriť a vytlačiť, musíte akceptovať pole int. Musíte deklarovať int[] v main, odovzdať ho na vytvorenie, vyplniť ho tam a potom odovzdať do tlače. The<< operator of ofstream does not deal with arrays as you'd hope, so you'll need to loop to display in print.

Tiež, a som si istý, že je to úprimná chyba, som si istý, že to myslel váš profesor pseudo- náhodný.

V zásade tiež deklarujete nové double() a nevyvolávate produkciu a tlač. Odoberte dvojku a odovzdajte argument, ako je uvedené vyššie, a zmeňte návratový typ oboch na neplatnosť.

-Čítať

gnasher729

Pozastavené
25. novembra 2005
  • 20. septembra 2009
Ako by ste napísali prototyp funkcie pre funkciu „vyrobiť“?
A ako by ste napísali volanie funkcie 'produkovať'?

A vo vašej „hlavnej“ funkcii, ktorú z týchto dvoch ste napísali, prototyp funkcie alebo volanie funkcie?

iBookG4user

Pôvodný plagát
27. júna 2006
Seattle, WA
  • 20. septembra 2009
lee1210 povedal: Niekoľko vecí: Vaše pole by malo byť typu int[], nie double[]. Ak chcete vytvoriť a vytlačiť, musíte akceptovať pole int. Musíte deklarovať int[] v main, odovzdať ho na vytvorenie, vyplniť ho tam a potom odovzdať do tlače. The<< operator of ofstream does not deal with arrays as you'd hope, so you'll need to loop to display in print.

Tiež, a som si istý, že je to úprimná chyba, som si istý, že to myslel váš profesor pseudo- náhodný.

V zásade tiež deklarujete nové double() a nevyvolávate produkciu a tlač. Odoberte dvojku a odovzdajte argument, ako je uvedené vyššie, a zmeňte návratový typ oboch na neplatnosť.

-Čítať

Dobre, urobil som zmeny, ktoré ste navrhli, a kód vyzerá logickejšie. Aj keď teraz dostávam tri chyby v cykloch for.

Kód: |_+_|

Prílohy

  • Snímka obrazovky z 20.09.2009 o 17:42:31.png Snímka obrazovky z 20.09.2009 o 17:42:31.png'file-meta'> 178,1 kB · Zobrazenia: 1 941

lee1210

10. januára 2005
Dallas, TX
  • 20. septembra 2009
Zmeňte typ argumentu produktu na int[] alebo int *. Práve teraz je to len int, takže nemôžete použiť [] atď. To isté platí pre tlač. Taktiež nemusíte nič vracať z produkcie alebo tlače. Zmeňte ich typ návratu na neplatný.

Myslím, že zámerom je zavolať print späť v hlavnom, čo by malo byť v poriadku.

Tiež, keď odovzdávate pole na vytvorenie, použite pole nie *pole.

-Čítať

iBookG4user

Pôvodný plagát
27. júna 2006
Seattle, WA
  • 20. septembra 2009
lee1210 povedal: Zmeňte typ argumentu produkcie na int[] alebo int *. Práve teraz je to len int, takže nemôžete použiť [] atď. To isté platí pre tlač. Taktiež nemusíte nič vracať z produkcie alebo tlače. Zmeňte ich typ návratu na neplatný.

Myslím, že zámerom je zavolať print späť v hlavnom, čo by malo byť v poriadku.

Tiež, keď odovzdávate pole na vytvorenie, použite pole nie *pole.

-Čítať

Fungovalo to
Viete, čo myslel napísaním kódu na testovanie funkcií? Čo tým myslí? A ďakujem vám za vašu doterajšiu pomoc!

Kód: |_+_|

chown33

Moderátor
Zamestnanec
9. augusta 2009
priepastná rovina
  • 20. septembra 2009
iBookG4user povedal: Viete, čo myslel napísaním kódu na testovanie funkcií? Čo tým myslí?

Špecifikácia hovorila, že čísla v poli by mali byť medzi 1 a 10. Môžete napísať test, ktorý to potvrdí.

Tiež povedal, že čísla by mali byť náhodné. Zatiaľ čo náhodnosť môže byť ťažšie otestovať, ako sa zdá, jednoduchá nenáhodnosť sa dá ľahko otestovať. Najjednoduchšie je potvrdiť, že všetky čísla nemajú rovnakú hodnotu. Zložitejšie testy náhodnosti využívajú štatistické analýzy.

Ďalším testom, ktorý môžete napísať, je potvrdiť, že funkcia production() vracia pri každom volaní iné hodnoty. Ide o jednoduchú formu štatistickej analýzy, t. j. zabezpečenie toho, aby po sebe idúce vyvolania mali nezávislé výsledky.

Mali by ste tiež zvážiť inicializáciu poľa so známymi neplatnými hodnotami, ako napríklad -1 alebo 0, pred volaním metódy production(). V opačnom prípade môže neinicializované lokálne pole už obsahovať nepredvídateľné hodnoty, ktoré by test mohol interpretovať ako náhodné, aj keď production() nerobí vôbec nič.

Ako špecifikácia je vyhlásenie o práci trochu vágne. Jednak nešpecifikuje, akými skúškami musí prejsť. Verte mi, ak výber kvalifikačných testov necháte na väčšine programátorov, je to veľká chyba. Kód môže fungovať iba v jednom prípade, čo bol prípad, ktorý programátor použil na vývoj kódu. Ak sa vám to zdá šialené, môžem vás ubezpečiť, že sa to stalo.

iBookG4user

Pôvodný plagát
27. júna 2006
Seattle, WA
  • 20. septembra 2009
To bolo dosť jednoduché, ďakujem!
Toto fungovalo dobre:
Kód: |_+_| S

Sander

do
24. apríla 2008
  • 21. septembra 2009
iBookG4user povedal: To bolo dosť jednoduché, ďakujem!
Toto fungovalo dobre:

Skúste do poľa vložiť „neplatné“ číslo (povedzme 11) a zistite, či to táto funkcia zistí.

iBookG4user

Pôvodný plagát
27. júna 2006
Seattle, WA
  • 21. septembra 2009
Sander povedal: Skúste do poľa vložiť „neplatné“ číslo (povedzme 11) a uvidíte, či to táto funkcia zistí.

Dočasne som nastavil pole tak, aby umožňovalo čísla väčšie ako 10 a zistilo to, vďaka S

Sander

do
24. apríla 2008
  • 22. septembra 2009
iBookG4user povedal: Dočasne som nastavil pole tak, aby umožňovalo čísla väčšie ako 10 a zistilo to, vďaka

Aj keď to nie je prvý prvok v poli..?

Dôvod, prečo sa pýtam, je ten, že vaša funkcia print() (aspoň posledná verzia zobrazená v tomto vlákne) vracia iba prvý prvok poľa (skonvertovaný na dvojitý).