Muud

Mac C++ massiivid ja juhuslikud numbrid

iBookG4 kasutaja

Originaalplakat
27. juuni 2006
Seattle, WA
  • 20. september 2009
Nad panevad C++ juhendajad minu kolledžis kõige ebamugavamatel aegadel... Igatahes postitas juhendaja järgmised juhised:

'Kirjutage funktsioon, mis täidab massiivi 25 juhusliku arvuga vahemikus 1 kuni 10. Seejärel kirjutage funktsioon, mis prindib massiivi välja. Oma funktsioonide testimiseks kirjutage peas mõni kood. Mõnikord nimetatakse seda testkoodi *draiveriks

Ärge kasutage siin globaalseid muutujaid. Viige massiiv funktsioonile läbi parameetrite loendi'

Minu praegune kood ei anna siluris vigu, kuid see ei väljasta massiivi. Ja ma ei tea, mida ta mõtleb juhi kirjutamise all, mida ma peaksin testima? Olete kõik osutunud minevikus äärmiselt abivalmiks ja olen kindel, et aitate seekord mind õiges suunas suunata

Kood: |_+_|

lee1210

10. jaanuar 2005


Dallas, TX
  • 20. september 2009
Mõned asjad: teie massiiv peaks olema tüüpi int[], mitte double[]. Tootmiseks ja printimiseks peate nõustuma sisemise massiiviga. Peate deklareerima int[], edastama selle tootmiseks, täitma selle ja seejärel edastama printimiseks. The<< operator of ofstream does not deal with arrays as you'd hope, so you'll need to loop to display in print.

Samuti, ja ma olen kindel, et see on aus viga, olen kindel, et teie professor mõtles seda pseudo- juhuslik.

Lisaks deklareerite üldiselt uusi topelt(id), mitte ei kutsu esile tootmist ja printimist. Võtke topelt ära ja esitage argument, nagu ülalpool kirjeldatud, ja muutke mõlema tagastustüüp tühiseks.

- Loe

gnasher729

Peatatud
25. november 2005
  • 20. september 2009
Kuidas kirjutaksite funktsiooni 'tootma' jaoks funktsiooni prototüübi?
Ja kuidas kirjutaksite väljakutse funktsioonile 'tootma'?

Ja kumba neist kahest olete oma põhifunktsiooni sisse kirjutanud, kas funktsiooni prototüübi või funktsioonikutse?

iBookG4 kasutaja

Originaalplakat
27. juuni 2006
Seattle, WA
  • 20. september 2009
lee1210 ütles: Mõned asjad: Teie massiiv peaks olema tüüpi int[], mitte double[]. Tootmiseks ja printimiseks peate nõustuma sisemise massiiviga. Peate deklareerima int[], edastama selle tootmiseks, täitma selle ja seejärel edastama printimiseks. The<< operator of ofstream does not deal with arrays as you'd hope, so you'll need to loop to display in print.

Samuti, ja ma olen kindel, et see on aus viga, olen kindel, et teie professor mõtles seda pseudo- juhuslik.

Lisaks deklareerite üldiselt uusi topelt(id), mitte ei kutsu esile tootmist ja printimist. Võtke topelt ära ja esitage argument, nagu ülalpool kirjeldatud, ja muutke mõlema tagastustüüp tühiseks.

- Loe

Ok, tegin teie soovitatud muudatused ja kood näeb loogilisem välja. Kuigi nüüd saan for-tsüklites kolm viga.

Kood: |_+_|

Manused

  • Ekraanipilt 2009-09-20 kell 17.42.31.png Ekraanipilt 20.09.2009 kell 17.42.31.png'file-meta'> 178,1 KB · Vaatamisi: 1941

lee1210

10. jaanuar 2005
Dallas, TX
  • 20. september 2009
Muutke argumendi tüübiks int[] või int *. Praegu on see lihtsalt int, nii et te ei saa kasutada [] jne. Sama kehtib ka printimise kohta. Samuti ei pea te toodangust ega trükist midagi tagastama. Muutke nende tagastustüüp kehtetuks.

Ma arvan, et teie eesmärk on printimisel tagasi helistada, mis peaks olema hea.

Samuti, kui edastate massiivi tootmiseks, kasutage massiivi, mitte *massiivi.

- Loe

iBookG4 kasutaja

Originaalplakat
27. juuni 2006
Seattle, WA
  • 20. september 2009
lee1210 ütles: Muutke argumendi tüübiks int[] või int *. Praegu on see lihtsalt int, nii et te ei saa kasutada [] jne. Sama kehtib ka printimise kohta. Samuti ei pea te toodangust ega trükist midagi tagastama. Muutke nende tagastustüüp kehtetuks.

Ma arvan, et teie eesmärk on printimisel tagasi helistada, mis peaks olema hea.

Samuti, kui edastate massiivi tootmiseks, kasutage massiivi, mitte *massiivi.

- Loe

See toimis
Kas sa tead, mida ta mõtles funktsioonide testimiseks koodi kirjutamisega? Mida ta sellega mõtleb? Ja suur aitäh senise abi eest!

Kood: |_+_|

chown33

Moderaator
Töötaja
9. august 2009
Kuristiku lennuk
  • 20. september 2009
iBookG4user ütles: Kas sa tead, mida ta mõtles funktsioonide testimiseks koodi kirjutamisega? Mida ta sellega mõtleb?

Spetsifikatsioon ütles, et massiivi numbrid peaksid jääma 1 ja 10 vahele. Võiksite kirjutada testi, mis seda kinnitab.

Samuti öeldi, et numbrid peaksid olema juhuslikud. Kuigi juhuslikkust võib olla raskem testida, kui tundub, võib lihtsat mittejuhuslikkust olla lihtne testida. Lihtsaim on kinnitada, et kõik numbrid ei ole sama väärtusega. Keerulisemates juhuslikkuse testides kasutatakse statistilisi analüüse.

Teine test, mida saate kirjutada, on kinnitada, et funktsioon product() tagastab iga kord, kui seda kutsutakse, erinevad väärtused. See on lihtne statistilise analüüsi vorm, st tagab, et järjestikustel kutsetel on sõltumatud tulemused.

Samuti peaksite kaaluma massiivi initsialiseerimist teadaolevate kehtetute väärtustega, nagu -1 või 0, enne kui kutsute välja product(). Vastasel juhul võib initsialiseerimata kohalik massiiv juba sisaldada ettearvamatuid väärtusi, mida test võib tõlgendada juhuslikena, isegi kui product() ei tee midagi.

Täpsustuseks on töö kirjeldus mõnevõrra ebamäärane. Esiteks ei täpsustata, millised testid peab läbima. Uskuge mind, kui jätate kvalifikatsioonitestide valiku enamiku programmeerijate hooleks, on see suur viga. Kood võib töötada ainult ühel juhul, mida programmeerija kasutas koodi väljatöötamisel. Kui see tundub hull, võin teile kinnitada, et see on juhtunud.

iBookG4 kasutaja

Originaalplakat
27. juuni 2006
Seattle, WA
  • 20. september 2009
See oli piisavalt lihtne, aitäh!
See töötas hästi:
Kood: |_+_| S

Sander

juurde
24. aprill 2008
  • 21. september 2009
iBookG4user ütles: See oli piisavalt lihtne, aitäh!
See töötas hästi:

Proovige panna oma massiivi 'kehtetu' number (näiteks 11) ja vaadake, kas see funktsioon tuvastab selle.

iBookG4 kasutaja

Originaalplakat
27. juuni 2006
Seattle, WA
  • 21. september 2009
Sander ütles: Proovige panna oma massiivi 'kehtetu' number (näiteks 11) ja vaadake, kas see funktsioon tuvastab selle.

Seadistasin massiivi ajutiselt lubama numbreid, mis on suuremad kui 10, ja see tuvastas selle, aitäh S

Sander

juurde
24. aprill 2008
  • 22. september 2009
iBookG4user ütles: Seadistasin massiivi ajutiselt lubama numbreid, mis on suuremad kui 10 ja see tuvastas selle, aitäh

Isegi kui see pole massiivi esimene element..?

Põhjus, miks ma seda küsin, on see, et teie funktsioon print() (vähemalt viimane selles lõimes näidatud versioon) tagastab ainult massiivi esimese elemendi (teisendatud kahekordseks).